关于fgets函数

L_chxu 2012-11-20 07:51:33

void read_data(void)
{
FILE *fp;
int i,j;

char str[1000];
fp = fopen("th.txt","r");
if (fp == NULL)
{
printf("Can't open the file!\n");
return ;
}

fgets(str,1000,fp);//此句中str从fp中读取数据后,下面语句中并没有用到str,
// str的作用的什么?此句为何不能少?

for (i=0; i<N; i++)
{
fscanf(fp,"%s\t%d\t",stud[i].name,&stud[i].num);
for (j=0; j<M; j++)
{
fscanf(fp,"%d\t",&stud[i].score[j]);
}
}
printf("姓名 学号 英语 C语言 线性代数 离散数学 高等数学 密码学\n");
for (i=0; i<N; i++)
{
printf("%s\t%d\t",stud[i].name,stud[i].num);
for (j=0; j<M; j++)
{
printf("%d\t",stud[i].score[j]);
}
printf("\n");
}
}

...全文
170 点赞 收藏 15
写回复
15 条回复
L_chxu 2012年11月20日
引用 14 楼 anhuizhuanjiao 的回复:
引用 12 楼 anhuizhuanjiao 的回复:引用 11 楼 L_chxu 的回复:C/C++ code?123456789101112学号 姓名 英语 C语言 线性代数 离散数学 高等数学 密码学1 花小霜 90 92 93 91 89……
明白了,多谢!!!
回复 点赞
转角天边 2012年11月20日
引用 12 楼 anhuizhuanjiao 的回复:
引用 11 楼 L_chxu 的回复:C/C++ code?123456789101112学号 姓名 英语 C语言 线性代数 离散数学 高等数学 密码学1 花小霜 90 92 93 91 89 782 柳莺莺 9……
str里面读到的内容是 学号 姓名 英语 C语言 线性代数 离散数学 高等数学 密码学 这些
回复 点赞
newtee 2012年11月20日
学习了 没用过这些函数
回复 点赞
转角天边 2012年11月20日
引用 11 楼 L_chxu 的回复:
C/C++ code?123456789101112学号 姓名 英语 C语言 线性代数 离散数学 高等数学 密码学1 花小霜 90 92 93 91 89 782 柳莺莺 91 85 ……
我猜对了啊,文件里面第二行开始才是你要用到的数据 fgets(str,1000,fp);只是为了把文件里面第一行的内容读掉
回复 点赞
L_chxu 2012年11月20日

学号    姓名    英语    C语言     线性代数      离散数学   高等数学      密码学
1     花小霜    90       92         93            91        89           78
2     柳莺莺    91       85         59            88        65           92
3     公羊羽    89       68         91            89        87           88
4     项少龙    88       77         66            55        87           94
5     董帅民    89       92         77            91        65           67
6     高进      88       56         88            78        69           89
7     花清啸    89       65         82            94        84           89
8     王小宝    69       58         44            24        33           55
9     谷慎      92       91         90            93        94           91  
10    陆见      85       89         84            81        83           92
文件内容。。
回复 点赞
L_chxu 2012年11月20日

#define  M 10        //学生数
#define  N 6         //课程数 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct student
{
	int   num;
	char  name[20];
	int   score[N];
	float ave;
}st[M];

void read_dat1()
{
	int i,j;
	char str1[100];
	FILE *fp;
	fp=fopen("th.txt","r");
	if(fp==NULL)
	{
		printf("cannot open");
		exit(0);
	}
	fgets(str1,10000,fp);
	for(i=0;i<M;i++)
	{
		fscanf(fp,"%d%s",&st[i].num,st[i].name);
		for(j=0;j<N;j++)
		{
			fscanf(fp,"%d",&st[i].score[j]);
		}

	}
	printf("学号    姓名   英语   C语言 线性代数 离散数学 高等数学 密码学\n");
	for(i=0;i<M;i++)
	{
		printf("%d\t%s\t",st[i].num,st[i].name);
		for(j=0;j<N;j++)
			printf("%d\t",st[i].score[j]);
		printf("\n");
	}
	fclose(fp);
}
void main()
{
	read_dat1();
	system("pause");
}

求解释。。
回复 点赞
转角天边 2012年11月20日
引用 8 楼 L_chxu 的回复:
引用 4 楼 zhuankeshumo 的回复:你的str是执行结构体吧! 那它的作用的是什么呢?
我猜测你th.txt文件里面第一行应该是像 姓名 学号 英语 C语言 线性代数 离散数学 高等数学 密码学 一样的东西吧
回复 点赞
L_chxu 2012年11月20日
引用 4 楼 zhuankeshumo 的回复:
你的str是执行结构体吧!
那它的作用的是什么呢?
回复 点赞
转角天边 2012年11月20日
引用 3 楼 L_chxu 的回复:
还有 C/C++ code?123456789101112131415#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 10 //学生数#define M 6 //课程数 struct student{ int num; ……
你文件里面的内容是什么样子的
回复 点赞
newtee 2012年11月20日
看不懂 求全部代码
回复 点赞
newtee 2012年11月20日
执行=>指向
回复 点赞
newtee 2012年11月20日
你的str是执行结构体吧!
回复 点赞
L_chxu 2012年11月20日
还有

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 10       //学生数
#define M 6        //课程数

struct student
{
	int  num;
	char name[20];
	int  score[M];
}stud[N];

回复 点赞
L_chxu 2012年11月20日
引用 1 楼 zhuankeshumo 的回复:
代码贴全。。
基本就这样了,就差一个主函数调用这个函数了。。
回复 点赞
newtee 2012年11月20日
代码贴全。。
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告