C语言文件读取到链表中 函数fscanf问题

C语言文件读取到链表中 函数fscanf问题,第1张

fscanf返回值是读到的个数,用 ==EOF判断退出有问题吧,另外你的读取格式"%d%s%d%d%d"

中间没有分隔符,成绩之间是用什么分割的,这里也要用同样的分割符,不然会乱了,特别是%s,直接把后面的当字符串读光了,有%s的话,最好读一行,自己分割

不懂你func函数想用来干嘛。

我调试了下,在申请内存的时候malloc出错,count1的值等于-1,申请内存的时候转换成一个正的long型数了,这个数多大自己清楚,当然是不可能分配成功的。

检查一下你的1txt文件中两个数字间是否有符号(如逗号等),如果有那问题就在这,因为你的fscanf(ptr,"%d%d%d",&a,&b,&c);中文件的输出格式是按连续的三个整型输出,如果文件中三个数中间有符号隔开,那么字符会转化为整型输出。例如文件中有1,2,3,那么输出的是 a=1,b=逗号,c=逗号。如果是有逗号,则改为fscanf(ptr,"%d,%d,%d",&a,&b,&c);如果是其他不知名的符号则定义一个char d; fscanf(ptr,"%d%c%d%c%d",&a,&d,&b,&d,&c);

函数名: fscanf

功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。

用法:

1 int fscanf(FILEstream,constcharformat,[argument]);

FILE stream:文件指针

char format:格式字符串;

[argument]:输入列表。

例如:

FILE fp;

char a[10];

int b;

double c;

fscanf(fp , "%s %d %lf" , a , &b , &c);

和scanf一样,格式化串的空格不代表读取的子串有空格,存放读取数据的参数都是指针。

扩展阅读,C语言中文件的读取和写:

FILE pFile=fopen("1txt","r"); //获取文件的指针

char pBuf; //定义文件指针

fseek(pFile,0,SEEK_END); //把指针移动到文件的结尾 ,获取文件长度

int len=ftell(pFile); //获取文件长度

pBuf=new char[len+1]; //定义数组长度

rewind(pFile); //把指针移动到文件开头 因为我们一开始把指针移动到结尾,如果不移动回来 会出错

fread(pBuf,1,len,pFile); //读文件

pBuf[len]=0; //把读到的文件最后一位 写为0 要不然系统会一直寻找到0后才结束

MessageBox(pBuf); //显示读到的数据

fclose(pFile); // 关闭文件

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11680166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存