2015-11-08 37 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