关于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");
}
}

...全文
220 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
代码贴全。。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧