使用相同的数组重复存储数据

时间:2012-11-01 18:07:28

标签: c

我正逐字逐句地读取文件中的数据,并尝试将每个单词之间的空格存储在相同的缓冲区中。但是没有空间的话就会出现。请告诉我有什么问题? 输出来了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;
}

2 个答案:

答案 0 :(得分:1)

忽略暴露于缓冲区溢出的事实,您只需添加空格:

fscanf(fp,"%s",buff+l);
l=strlen(buff);
buff[l] = ' ';
l++;

答案 1 :(得分: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;
        }