我只是想打开一个文件并读取整数并打印数组。然而,出现了段错误。我不确定我做错了什么。
int main (int argc, char *argv[])
{
int size;
int i;
FILE* p = fopen(argv[1], "r");
fscanf(p, "%d", &size);
int a[size];
for(i=0; i<size; i++)
{
a[i] = fscanf(p,"%d",&a[i]);
}
for(i=0;i<size;i++)
{
printf("%d", a[i]);
}
}
任何帮助将不胜感激。谢谢。
最佳答案
代码看起来不错,但是您可以向其添加一些验证以确保您的输入正确。
int main (int argc, char *argv[])
{
int size=0;
int i=0;
int ret=0;
// make sure arcv[1] exists:
if (argc < 2)
{
printf("not enough arguments provided");
return -1;
}
FILE* p = fopen(argv[1], "r");
// make sure file exists
if (p == 0) // or p == NULL
{
printf("file does not exists");
return -1;
}
ret = fscanf(p, "%d", &size);
// make sure the size is a valid number
if (ret == EOF || ret <= 0 || size <= 0)
{
printf("invalid file");
return -1;
}
int a[size];
for(i=0; i<size; i++)
{
fscanf(p,"%d",a+i);
}
for(i=0;i<size;i++)
{
printf("%d", a[i]);
}
}
关于c - 读取充满整数的文件时,C 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065993/