2017-01-22 90 views
-2

我的目標是能夠將字符串寫入文件並顯示整個內容,而不僅僅是部分內容。問題是,當我檢查了我的文本文件中,有離開的,我在輸入的字符串的一些章程將字符串寫入C文本文件中留下幾個字符

這裏是我的代碼:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 

    FILE *fp = fopen("file.txt", "w"); 

    if (fp == NULL) 
    { 
     printf("Error opening file!\n"); 
     exit(1); 
    } 
    char comment[100]; 
    fp=fopen("/home/matthew/Desktop/BBE.txt","w"); 
    printf("Enter, String: "); 
    scanf("%s", &comment); 
    fgets(comment, sizeof comment, stdin); 
    fputs(comment,fp); 
} 

和輸入,我想在我的文本文件是這樣的:

Enter, String: Hello World 

但是,當我檢查我的文本文件,我得到這個:

World 

我米西在這裏說一句話,不知道爲什麼,請幫助。

+0

決心:'scanf'或'fgets'。這些是閱讀字符串的替代方法。 (您想讀取包含空格的行,所以請保留'fgets'並刪除'scanf'。) –

回答

1

擺脫scanf函數的,因爲它是在你輸入的第一個字讀,讓你的代碼看起來是這樣的:

char comment[100]; 
fp=fopen("/home/matthew/Desktop/BBE.txt","w"); 
printf("Enter, String: "); 
fgets(comment, sizeof comment, stdin); 
fputs(comment,fp); 
0

您是從用戶同時使用fgets和scanf函數讀取輸入。你不需要兩個。另外,在你的scanf中,你傳遞的是字符數組第一個元素的地址,而不是第一個元素的地址(在你的scanf中使用'comment'而不是'& comment')。寫完後您還沒有關閉文件。嘗試以下操作:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 

FILE *fp = fopen("/home/matthew/Desktop/BBE.txt", "w"); 

if (fp == NULL) 
{ 
    printf("Error opening file!\n"); 
    exit(1); 
} 
char comment[100]; 
fp=fopen("file.txt","w"); 
printf("Enter, String: "); 
scanf("%s", comment); //Don't pass &comment. Just pass 'comment' - the addr of zeroth element. 
//fgets(comment, sizeof comment, stdin); 
fputs(comment,fp); 
fclose(fp); 

} 
0

你爲什麼在這裏使用兩個文件,當你寫從標準輸入在文件中的一個?下面的一段代碼將幫助您獲得所需的輸出。最好使用gets()而不是fgets(),因爲你不是從文件讀取輸入。另外,不要忘記在完成後關閉文件。希望這可以幫助!!

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 

int main() 
{ 

    FILE *fp; 
    char comment[100] = {0}; 
    fp=fopen("tempfile.txt","w"); 

    if (fp == NULL) 
    { 
     printf("Error opening file!\n"); 
     exit(1); 
    } 

    printf("Enter String: "); 
    gets(comment); 
    fwrite(comment, sizeof(comment), 1, fp) ; 

    fclose(fp); 

    return 0; 
}