69,374
社区成员
发帖
与我相关
我的任务
分享
static char bufs[80]
int n;
int nn[402];
double fs[402],fe[402];
FILE *rfp;
rfp=fopen("d:\\mydir\\mydata.txt","r");
if (rfp) {
for (n=0;n<402;n++) {
if (NULL==fgets(bufs, 80, rfp)) break;
if (3==sscanf(bufs, "%d%lf%lf", &nn[n], &fs[n], &fe[n])) {
printf("%d %d %lg %lg\n",n,nn[n],fs[n],fe[n]);
} else {
break;
}
}
fclose(rfp);
} else {
printf("Can not open file [%s]!\n","d:\\mydir\\mydata.txt");
}
static char bufs[402][80]
int n,nn;
double fs,fe;
FILE *rfp;
rfp=fopen("d:\\mydir\\mydata.txt","r");
if (rfp) {
for (n=0;n<402;n++) {
if (NULL==fgets(bufs[n], 80, rfp)) break;
if (3==sscanf(bufs[n], "%d%lf%lf", &nn, &fs, &fe)) {
printf("%d %d %lg %lg\n",n,nn,fs,fe);
} else {
break;
}
}
fclose(rfp);
} else {
printf("Can not open file [%s]!\n","d:\\mydir\\mydata.txt");
}
char *bufs[256]
int n,nn,fs,fe;
for (n=0;n<402;n++){
fgets(bufs[n], 80, rfp);
第一个问题:bufs的长度是256,n的循环是从0~401,这样会有数组越界的问题。
第二个问题:bufs是指针数组,每个指针都是一个野指针,所以要使用之前需要将其指向可以读写的内存位置。可以考虑使用malloc/free方式动态申请内存空间;
FILE * fp = fopen(argv[1],"r");
char buf[200];
while (fgets(buf,200,fp) != NULL) { /* 每行的字符不能超过199才能正常工作 */
printf("%s",buf);
}