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