-1

文字列をファイルに書き込んでいます。ただし、文字列の最初の部分のみがファイルに挿入されるだけです。他はありません。例:「I Like Flowers」と書くと、「I」のみがファイルに書き込まれます。

    #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 に答える