1

ファイルから単語ごとにデータを読み取り、すべての単語の間にスペースを入れて同じバッファに格納しようとしています。でも言葉は隙間なく出てきます。何が悪いのか教えてください。aniljaiswalvikaskumarnikhilkumarindia が出力されますが、各単語の間にスペースが必要です。

int main()
{
    char buff[200];
    int l=0;
    FILE *fp;
    fd = NULL;``
    fp = fopen("header.c","r");
    memset(buff,0,200);
    while(1)
    {
        fscanf(fp,"%s",buff+l);
        l=strlen(buff);
        printf("Word of string = %s\n",buff);
        printf("Length of string = %d\n",l);
        if(feof(fp))
        {
            break;
        }
    }
    fclose(fp);
    return 0;
}
4

2 に答える 2

1

バッファ オーバーフローにさらされているという事実を無視して、単純にスペースを追加できます。

fscanf(fp,"%s",buff+l);
l=strlen(buff);
buff[l] = ' ';
l++;
于 2012-11-01T18:30:14.893 に答える
0

完全な作業コード:

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

     int main()
        {
            char buff[200];
            FILE *fp;
            char c;
            int len=0;
            int i=0;
            fp = fopen("header.c","r");
            memset(buff,0,200);
            while((c=fgetc(fp))!=EOF)
            {
                len++;
                buff[i++]=c;
                if(c==' ' || c=='\n')
                {
                printf("Word of string = %s\n",buff);
                printf("Length of string = %d\n",len);
                }
            }

            fclose(fp);
            return 0;
        }
于 2012-11-01T18:21:13.590 に答える