DWHCN 2021-03-03 12:32 采纳率: 0%
浏览 47

为什么我提取文件只能提取最后一行,我想将文件每行分别提取并显示出来

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

struct student//学生信息
{
	int num=0;
	char name[20] = {0};
	int age=0;
	char sex[10]= { 0 };
	int year=0;
	int month=0;
	int day=0;
	char location[100]= { 0 };//可能不够
	int phone=0;
	char Email[100]= { 0 };

};

int main()     //百度   //查行数 计数学生总数
{
	
	struct student s;
	int n;//循环
	FILE *pf = fopen("E:\\work\\保存\\c语言程序设计1\\程序\\录入功能\\luru.txt", "r");
	char buf[1000];//??????缓冲区???
	int lineCnt = 0;
	if (pf==NULL)
		return  -1;
	while (fgets(buf, 1000, pf))
		lineCnt++;
	printf("学号\t姓名\t年龄\t性别\t出生日期\t地址\t电话\t邮件\n");

	for (n = 0;n < lineCnt;n++)
	{
		fgets(buf, 1000, pf);
		sscanf(buf, "%d %s %d %s %d %d %d %s %d %s",&s.num, s.name, &s.age, s.sex, &s.year, &s.month, &s.day, s.location, &s.phone,s.Email);           //可能是这个地方有问题
		printf("%d\t%s\t%d\t%s\t%d %d %d\t%s\t%d\t%s\n", s.num, s.name, s.age, s.sex, s.year, s.month, s.day, s.location, s.phone, s.Email);
	}


	printf("\n当前录入学生总数为%d\n", lineCnt);
	fclose(pf);
	return 0;
}

这是我想读取的文件

这是最后结果

 不知道问题出在哪里

  • 写回答

1条回答 默认 最新

  • 规则边缘 2021-03-03 14:03
    关注

    while循环的时候已经把整个文件流读完了。

    for循环中的fgets没有读到任何内容。当fgets没有读到任何内容,第一个参数的值保持不变。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?