我写一段程序如下:但读不了数据,求高手指导,谢谢!#include<stdio.h>main(){struct student{char num[10];char name[10];float score[3];float avg;}t[100];FILE *fp;int i,n=2;/***************************************************************************/if((fp=fopen("121.text","r"))==NULL){printf("没有此文件\n");exit(0);}fclose(fp);for(i=0;i<n;i++)fscanf(fp,"%s%s%f%f%f%f",t[i].name,&t[i].score[0],&t[i].score[1],&t[i].score[2],&t[i].avg);/*****************************************************************************/for(i=0;i<n;i++)printf(fp,"%s\t%s\t%-5.2f\t%-5.2f\t%-5.2f\t%-5.2f\t\n", t[i].num,t[i].name,t[i].score[0],t[i].score[1],t[i].score[2],t[i].avg);}文件121.text的数据如下:1001 yang 78.00 89.00 79.00 80.001002 zhang 67.00 99.00 70.00 82.00好像少了一个,改成下面这样之后不行。fscanf(fp,"%s%s%f%f%f%f",t[i].num,t[i].name,&t[i].score[0],&t[i].score[1],&t[i].score[2],&t[i].avg);
功 能: 从一个流中执行格式化输入\x0d\x0a 用 法: int fscanf(FILE *stream, char *format,[argument...]);\x0d\x0a int fscanf(文件指针,格式字符串,输入列表);\x0d\x0a 返回值:整型,数值等于[argument...]的个数\x0d\x0a 程序例:\x0d\x0a #include \x0d\x0a #include \x0d\x0a int main(void)\x0d\x0a {\x0d\x0a int i;\x0d\x0a printf("Input an integer: ");\x0d\x0a if (fscanf(stdin, "%d", &i))\x0d\x0a printf("The integer read was: %d\n",\x0d\x0a i);\x0d\x0a else\x0d\x0a {\x0d\x0a fprintf(stderr, "Error reading an \\x0d\x0a integer from stdin.\n");\x0d\x0a exit(1);\x0d\x0a }\x0d\x0a return 0;\x0d\x0a }\x0d\x0a 返回EOF如果读取到文件结尾。
首先,你要确认你的这个文件名是正确的,这个文件名没有隐藏的后缀名,其次,你这个文件放的位置要正确,要放在你的工程的路径下,如果你不知道要将这个文件放在哪里,请把你的代码中fp = fopen("121.text", "r")的"121.text"这个改成绝对路径 :比如说:"F:\CWorkspace\hello\121.text",这个路径要看你具体存放在哪里了另外,你的程序有些问题,我给你改好了,如果你的文件没问题的话用这个就可以运行了#include<stdio.h>int main(){ struct student { char num[10]; char name[10]; float score[3]; float avg; } t[100]; FILE *fp; int i, n = 2; /***************************************************************************/ if ((fp = fopen("121.text", "r")) == NULL) { printf("没有此文件\n"); perror("fopen"); exit(0); } for (i = 0; i < n; i++) fscanf(fp, "%s%s%f%f%f%f", t[i].num, t[i].name, &t[i].score[0], &t[i].score[1], &t[i].score[2], &t[i].avg); fclose(fp); /*****************************************************************************/ for (i = 0; i < n; i++) printf("%s\t%s\t%-5.2f\t%-5.2f\t%-5.2f\t%-5.2f\t\n", t[i].num, t[i].name, t[i].score[0], t[i].score[1], t[i].score[2], t[i].avg); return 0;}