因为scanf("%s",...)不接收空格,而且空格后的字符也不会输入进去。把scanf换成gets,它是接收空格的字符串输入函数。
创新互联公司专注于网站建设|企业网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都不锈钢雕塑等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身设计品质网站。
gets函数:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。
换行符不作为读取串的内容,读取的换行符被转换为 \0 空字符,并以此结束字符串;当使用unicode宽字符文本时,请使用宽字符版本函数 _getws()。
gets函数可以无限读取,不会判断上限,所以使用时应确保buffer的空间足够大,以便在执行读取操作时不发生溢出。
gets函数在C11标准中被移除,改为更加安全的gets_s函数;头文件:stdio.h;返回值:若读入成功,返回与参数buffer相同的字符指针。
若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
扩展资料
#include iostream
#include limits
#include cstdio
using namespace std;
int main()
{
int i_test, c;
printf("Please enter an integer: ");
scanf("%d", i_test);
printf("You just entered %d.\nPress enter to continue...", i_test);
while ( (c = getchar()) != '\n' c != EOF ) ; // 清空输入流
clearerr(stdin); // 清除流的错误标记
cin.get(); // 等待用户输入回车
return 0;
}
c语言,gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:gets(s)。其中s为字符串变量(字符串数组名或字符串指针)。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。
扩展资料:
gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
gets(s)函数可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。
getch()这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车。
所在头文件:conio。
函数用途:从控制台读取一个字符,但不显示在屏幕上。
函数原型:int getch(void)。
返回值:读取的字符。
扩展资料:
getch()使用时易错点:
1、所在头文件是conio。而不是stdio。
2、在使用之前要调用initscr(),结束时要调用endwin()。否则会出现不输入字符这个函数
也会返回的情况。
3、在不同平台,输入回车,getch()将返回不同数值。windows平台下ENTER键会产生两个转义字符 \r\n,因此getch返回13。unix、 linux系统中ENTER键只产生 \n ,因此getch返回10。
4、getch()并非标准C中的函数,不存在C语言中,所以在使用的时候要注意程序的可移植性。getch函数在读取一个功能键或者箭头(方向)键盘时,函数会返回两次,第一次调用返回0或者0xE0,第二次调用返回实际的键值。
参考资料来源:百度百科-getch()函数
因为gets函数,这个函数会把回车当做字符,从而读入内存中
i=0时由于先出现gets,能够正常运行,由于后面的scanf函数,输入时会敲回车,这个回车就被当做字符输入到下一个gets 函数中了,所以下面就不能正常输入了
这是gets函数的性质
你可以在scanf函数后面再加个gets函数,用来接收scanf输入时要敲的回车
这样就不会影响后面的录入数据了
还有尽量不要用gets函数,它可能还有其他性质,如果不清楚就会影响程序的运行,还是用scanf吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款