#include<stdio.h>
#include<conio.h>
main()
{
int i;
char c, text[30];
float f;
printf("\nEnter Integer : ");
scanf("%d",&i);
printf("\nEnter Character : ");
c = getch();
printf("\nEnter String:");
gets(text);
printf("\nEnter Float:");
scanf("%f",&f);
printf("\nInteger : %d",i);
printf("\nCharacter : %c8",c);
printf("\nString : %s",text);
printf("\nFloat : %f",f);
getch();
}
为什么这个简单的程序无法读取string
使用gets()
功能?我还应该用什么来纠正它?好吧,它在我的旧 32 位 PC 上的 Turbo C 中可以工作,但在这里不行......
Scanf 或其他输入解析函数仅接受 stdin 调用中指定的所需数量的字符并拒绝其他字符。因此,这些被拒绝的值在下次读取 stdin 时会与换行符一起进入变量,从而跳过 a 的输入很少有调用。因此最好调用一个清晰的例程来清理标准输入并阻止垃圾进入其他变量。
尽管您的代码很容易受到攻击,但它仍然有解决方案:-
#include<stdio.h>
int clear()
{
while ((getchar())^'\n');
}
int main()
{
int i;
char c, text[30]={0};
float f;
printf("\nEnter Integer : ");
scanf(" %d",&i);
printf("\nEnter Character : ");
scanf(" %c",&c);
printf("\nEnter String:");
clear();
gets(text);
printf("\nEnter Float:");
scanf(" %f",&f);
printf("\nInteger : %d",i);
printf("\nCharacter : %c",c);
printf("\nString : %s",text);
printf("\nFloat : %f",f);
getchar();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)