关于网友提出的“ 求助:C语言读取文件的问题”问题疑问,本网通过在网上对“ 求助:C语言读取文件的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 求助:C语言读取文件的问题描述:
我读取文件的一行数据
文件内容如下
91010 test 10.0 10.0 10.0 30.0 10.0
代码如下
STU *init_student(STU *stu_head)
{
STU *node = stu_head;
STU *head = stu_head;
STU *new_node;
int i;
FILE *fp;
char name[10];
int num;
ASK_STU(new_node);
new_node->next=NULL;
fp = fopen(FILE_NAME, "r+");
rewind(fp);
while((i = fscanf(fp, "%ld%s%0.1f%0.1f%0.1f%0.1lf%0.1f\n", &new_node->ID, new_node->name,\
&new_node->chinese, &new_node->math, &new_node->english, &new_node->all_sub, &new_node->average)) == 7){
if(!head)
head = node = new_node;
else{
while(node->next)
node = node->next;
node->next = new_node;
}
ASK_STU(new_node);
new_node->next = NULL;
}
fclose(fp);
return head;
}
结果是scanf只能读到“91010”和“test”两组数据,返回值为2,求解救啊!
解决方案1:
这样可以读的,昨天刚读过一个类似的
91010 test 10.0 10.0 10.0 30.0 10.0
解决方案2:
fscanf(fp, "%ld %s %f %f %f %f %f\n"...
在printf里%0.1f是格式控制符而在scanf里%0.1f是非法格式。。用%f试试