2015-11-08 32 views
-3

有人知道这段代码有什么问题吗?我不断收到分段错误fopen发生Linux分割错误

int main (int argc, char **argv) 
{ 
    FILE *in, *out; 
    in = fopen(argv[1],"r"); 
    out = fopen(argv[2],"w"); 
    fseek(in,0,SEEK_END); 
    ... 
    fseek(in,0,SEEK_SET); 

我做./a.out文件名1文件名2

我试图复制参数到字符串变量,我没有任何问题

char f1[100],f2[100]; 
strcpy(f1,argv[1]); 
strcpy(f2,argv[2]); 
FILE *in, *out; 
in = fopen(f1,"r"); 
out = fopen(f2,"w"); 
+0

我试图将参数复制到字符串变量,它的工作原理,这真的有必要吗?我从未在 –

+0

之前在fopen中传入参数时出现分段错误这看起来很好,也许会打印出argc或argv以确保您实际上正在接收参数 – kcraigie

+0

我试过这样做,它会打印出argc和argv,但在调用打开它给我分段错误 –

回答

1

有人知道这个代码有什么问题吗?

您没有任何错误检查代码。您假设拨打fopen是成功的。

in = fopen(argv[1],"r"); 
if (in == NULL) 
{ 
    // Problem opening the file. 
    // Print the cause of the problem and exit. 
    perror("Unable to open the file"); 
    exit(EXIT_FAILURE); 
} 

out添加类似的代码。

+0

这些文件存在,我试着这样做,仍然给我分段错误 –

+1

在这种情况下,我会建议发布[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –

+0

这些文件可能存在,如果您没有写入或读取权限,它可能仍会失败 – kcraigie