我有一个基本的C程序,我必须为个人软件进程分配。我对C来说相当新,所以老实说,我无法看到我出错的地方。请仔细阅读并让我知道我做了什么导致它崩溃?
我必须读取文件,并将值存储为数组。它没有编译错误,只是一个分段错误。
#include <stdio.h>
#define array_limit 100
int main (void)
{
FILE *ifp;
char *mode = "r";
ifp = fopen("samplepopulation.txt", mode);
if (ifp==NULL)
{
printf("cannot read file \n");
}
else
{
int i;
float sample;
float values[array_limit];
i = 0;
do
{
fscanf(ifp, "%f", &sample);
if (!feof(ifp))
{
values[i] = sample;
printf("%f \n", values[i]);
i++;
if (i>array_limit)
{
printf("File larger than allowed/n");
break;
}
}
else
{
printf("read complete");
}
} while (ifp!= EOF);
}
fclose(ifp);
return 0;
}
答案 0 :(得分:0)
更改
while (ifp!= EOF);
到
while (!feof(ifp));
同样从文件中扫描:
if (fscanf(ifp, "%f", &sample)==EOF) //EOF if input failure
break;
答案 1 :(得分:0)
您可能想要更改此
fclose(ifp);
成为
if (NULL != ifp)
{
fclose(ifp);
}
或者只是进入else分支:
...
fclose(ifp)
}
return 0;
}