//declare double pointer so that create array can "return" an array
int **aryReturn;
int size;
char trashdata[100];
//open file
FILE *inFilePtr = fopen(*(argv + 1), "r" );
if (inFilePtr != NULL)
printf(" the value of argv 1 is %s \n", argv[1]);
while (fgets(trashdata, sizeof(int) * 10, inFilePtr) != NULL){
fgets(trashdata, 10, inFilePtr);
size++;
}
任何人都可以告诉我为什么我的循环条件不起作用!我得到一个seg错误,在fgets上说fp(0x0)。 我试过了
while (!feof(inFilePtr))
我基本上得到同样的错误,但它说feof就是问题。
我的文件似乎打开正确,因为if语句打印..而argv具有预期的文件名
答案 0 :(得分:1)
好吧,我看到了一些问题......
size
未初始化gets()
似乎很奇怪,请参阅feof()
fopen()
结果后你没有做任何事情,所以第一个gets()
可能会因为这个原因而爆炸......你收到那条消息吗?只有最后一件事似乎可能会引发异常,但我的理念始终是修复已知问题并重新测试 ...预测错误之间的相互作用是浪费时间。
答案 1 :(得分:0)
我认为您在参数中提供的文件名不存在或存在某些访问冲突。您可以在执行fopen命令后立即打印errno来检查这一点。
fprintf (stderr, "Couldn't open file %s; %s\n", argv[1], strerror (errno));
你也可以试一次这个代码:
#include<errno.h>
#include<stdio.h>
int main(int argc, char **argv)
{
int **aryReturn;
int size=0;
char trashdata[100];
//open file
FILE *inFilePtr = fopen(*(argv + 1), "r" );
printf(" the value of argv 1 is %s \n", argv[1]);
if (inFilePtr == NULL)
{
fprintf (stderr, "Couldn't open file %s; %d\n", argv[1],errno);
exit(0);
}
while (!feof(inFilePtr)){
fgets(trashdata, 10, inFilePtr);
printf("%s",trashdata);
size++;
}
}