2014-09-03 29 views
-3

我已經嘗試使用下面的代碼將一個字符傳入一個字符串並打開一個.txt文件,以便我可以讀取它的內容。我不知道爲什麼,我該如何利用這個的fopen,以實際讀取的test.txt我如何傳遞一個字符串使用char到fopen C

int main(){ 

char input[60]; 


char a; 
FILE *file; 

printf("Hello!\n"); 

    enter code here 

printf("Pelase input a file name in .txt format: \n"); 
gets(input); 

printf("%s",input); 
printf("\n"); 

**file = fopen("%c,input","rt");** 

//文件=的fopen( 「%S」,輸入)< - 不工作

//文件=的fopen( 「%s」 時,輸入,RT)< - 錯誤

if (file){ 

    while((a=fgetc(file))!=EOF){ 

     printf("%c",a); 
    } 
    fclose(file); 


} 
} 
+0

'fopen(input,「rt」);' – 2014-09-03 06:10:12

+0

您需要傳遞一個指針,指向打算打開的文件的名稱的第一個元素。 – juanchopanza 2014-09-03 06:10:16

+0

'char a;'應該是'int a;'並且不要使用'gets'(一種替代方法是使用'fgets',然後去掉尾隨的換行符) – 2014-09-03 06:10:56

回答

0

如果你想添加".txt"到任何用戶輸入,然後打開:

gets (input); 
strcat (input, ".txt"); 
file = fopen (input, "r"); 

不是我主張使用gets或者在沒有首先檢查大小的情況下盲目追加到緩衝區,但這是基本上你需要做什麼。


另外的問題:

fgetc()的返回值是,並且因此的a的類型應該是,int

gets()函數本質上是不安全的。使用fgets()或找到safe user input function

不要永遠追加到緩衝區中。像使用gets()和某些scanf()格式字符串一樣,它將允許代碼中的緩衝區溢出。

+0

我可以知道什麼是「r」 ?我看過一些使用「w」的樣本,使用「wr」,而不是 – user3809384 2014-09-03 06:15:55

+0

@ user3809384:'「r」'是隻讀的。對於'fopen()'的任何好的鏈接應該詳細說明這些。 '「wr」'是「錯誤的做法」的簡稱:-) – paxdiablo 2014-09-03 06:17:36

+0

@paxidablo謝謝 – user3809384 2014-09-03 06:22:14

相關問題