程序就是 这样的一个程序: 编写一个函数接受一个字符串作为参数,并删除字符串中的空格,在一个程序中测试该函数,使用循环读取输入行,直到用户输入一个空行。该程序应该用该函数读取每一个输入的字符串,并显示处理后的结果。
我编写的程序如下:
#include<stdio.h>
#include<string.h>
void det(char *words);
#define L 20
int main(void)
{
char words[L];
printf("please enter a words: \n");
fgets(words,L-1,stdin);
do {
printf("what you enter is : \n");
fputs(words,stdout);
printf("\n");
det(words);
fflush(stdin);
} while(fgets(words,L-1,stdin)!=NULL);
return 0;
}
void det(char *words)
{
char *ptr;
int i;
for(;*words!='\0';words++)
{
if(*words!=' ')
{
*(ptr+i)=*words;
i++;
}
*(ptr+i)='\0';
}
printf("after delete the blank, the words is : \n");
puts(ptr);
printf("*********\n");
}
这个程序的结果是正常的,
但是 如果将 fflush(stdin) 提到前面去,结果就不正常了,只能输入一次,程序就自动结束了,没法循环输入,这是什么原因呢? 放在输入之后,立即清空缓存 , 有什么影响吗?
将fflush(stdin) 提到前面 的程序如下:
```c
#include<stdio.h>
#include<string.h>
void det(char *words);
#define L 20
int main(void)
{
char words[L];
printf("please enter a words: \n");
fgets(words,L-1,stdin);
do {
fflush(stdin);
printf("what you enter is : \n");
fputs(words,stdout);
printf("\n");
det(words);
} while(fgets(words,L-1,stdin)!=NULL);
return 0;
}
void det(char *words)
{
char *ptr;
int i;
for(;*words!='\0';words++)
{
if(*words!=' ')
{
*(ptr+i)=*words;
i++;
}
*(ptr+i)='\0';
}
printf("after delete the blank, the words is : \n");
puts(ptr);
printf("*********\n");
}
```