gets和scanf同在一个程序中出现使程序产生错误

来源:百度知道 编辑:UC知道 时间:2024/07/03 05:18:03
我用的是DEV C++,在看书的时候书上说gets和scanf在一个程序中同时用有时候会出现问题,加fflush(stdin);语句则会避免。我就试了试,果然按F9编译后就会产生一大堆乱码。但是用了fflush(stdin);语句后还是那个样子,不能解决问题,请C语言高人帮忙。我试的程序代码如下,你们可以试试,大家共同交流啊
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
char c1,c2;

c1=gets();
fflush(stdin);
scanf("%s",&c2);
printf("%s\n",c1);
printf("%s\n",c2);
system("pause");
}

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
char c1[100],c2[100]; /*这里应当是一个数组或指针*/

gets(c1);
scanf("%s",&c2);
printf("%s\n",c1);
printf("%s\n",c2);
system("pause");
}

上述程序,我在tc2.0下面,不用fflush也可以显示正确结果。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
char c1[100],c2[100]; /*这里应当是一个数组或指针*/

gets(c1);
scanf("%s",c2);
printf("%s\n",c1);
printf("%s\n",c2);
system("pause");
}