-1

我正在将字符串写入文件。但只有字符串的第一部分只插入到文件中。其他人失踪了。例如:如果我写“我喜欢花”,“我”只写到文件中。

    #include <stdio.h>
int main()
{
        char string[50];
        int marks,i,n;
        FILE *fptr; fptr=(fopen("string.txt","w"));
        if(fptr==NULL){
                printf("Error!");
                return 0;
        }
        printf("Enter a string : \n");
        scanf("%s", string);
        //fprintf(fptr,"%s",string);
        fwrite(string, 1, sizeof(string), fptr);

        fclose(fptr);
        return 0;
}
4

2 回答 2

6

scanf()在第一个空格处停止阅读:这就是问题所在。scanf("%s")唯一I从标准输入读取。要阅读整行,请fgets()改用。用于strlen()仅写入已读取的内容,而不是使用sizeof(string).

于 2013-12-13T11:00:22.903 回答
1

在您的代码scanf("%s",string)中,仅将字符串占用到第一个空格。要读取总字符串“I Like Flowers”,您必须使用如下scanf函数:

scanf("%[^\n]s,string);

它会起作用的。

于 2015-08-30T13:42:55.433 回答