使用gets函数读取字符时出错

时间:2013-12-13 10:58:31

标签: c cc

我正在为文件写一个字符串。但只有字符串的第一部分才会插入到文件中。其他人都不见了。例如:如果我写'#34;我喜欢鲜花","我"只写入文件。

    #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;
}

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

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

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

它会起作用。