2013-02-23 62 views
0

我有以下代碼:傳遞字符串從與fgets到了一個功能,使用它裏面

void main() 
{ 
    // Ask user for input file name 
    char file_name[100]; 
    printf("File Name?: \n"); 
    fgets(file_name, 100, stdin); 
    printf("Your input: %s", file_name); 
    processFile(file_name); 
} 

這是用來獲取需要讀取輸入文件的值。然後在processFile功能,我做到以下幾點:

void processFile(char *file_name) 
{ 
    FILE *in = fopen(file_name,"r"); 
} 

但我得到一個分割故障(核心轉儲)。我不明白爲什麼。

感謝

+0

在什麼線?你用調試器完成了嗎? – 2013-02-23 21:46:47

+0

是的。恰好在ProcessFile中找到的唯一行。 – 2013-02-23 21:49:17

+0

你是否考慮過修改剛剛輸入的文件名中的換行符? – WhozCraig 2013-02-23 21:52:10

回答

-1

一個換行符使得與fgets停止閱讀,但它被認爲是由功能的有效字符,其中包括複製到str中的字符串中。

http://www.cplusplus.com/reference/cstdio/fgets/

嘗試

scanf("%s", file_name); 
+1

-1,這可能導致緩衝區溢出。您應該使用'「%99s」'代替。它也不允許帶有空格的文件名,這可能是好的或壞的。 – 2013-02-23 23:32:34

+0

而不是把-1,給我們你的解決方案。 – 2013-02-24 04:57:09

相關問題