我把getchar换成scanf("\n"),结果就不会出现乱码,这是为什么啊?
printf("\n姓名\t\t\t年龄\n");
for (i=0;i<NUM;i++)
printf("%s\t\t\t%d\n",member[i].name,member[i].age);
MAX=0;
for (i=0;i<NUM;i++)
if (member[i].age>MAX)
MAX=member[i].age;
printf("年龄最大的是:%d\n",MAX);
system ("pause");
return 0;
}
这个程序不是这个问题,如果没有getchar或者scanf("\n")的话会出现下图的情况,
这里getchar是用来输入enter的
getchar只能获取字符
你说的乱码是因为你的结构体char name没有初始化。
你在你的结构体加一个构造函数
struct MemberType
{
char name[20];
int age;
// 这个是构造函数
MemberType()
{
memset(name, 0, sizeof(name));
age = 0;
}
}
程序出错了
我这里getchar和scanf都是用来防止enter被下面的gets吃掉而加上去的,都是用来获取enter的
检查一下你的()是不是英文状态下的
还有你不要贴图,你要贴代码,贴图,一些中英文也看不出,而且这样别人也能帮你运行下。
你应该少了头文件
#include>
还是出现乱码,为什么我用scanf就不会呢,代码太长了,贴不上去
追答你的乱码是因为你的getchar()造成的
gets和scanf是不能混合用的。
你最好统一用scanf,然后getchar删除
scanf("%s", member[i].name);
printf("输入年龄:");
scanf("%d",&member[i].age);
gets它是以回车结尾的,回车也在字符。
C语言中 scanf(),gets(), getchar()有什么区别
在C语言中,`scanf()`, `gets()` 和 `getchar()` 是三种常用的输入函数,它们各自有独特之处和适用场景,具体区别如下:`gets()` 函数主要用于输入一行字符串,并以回车结束。它允许字符串中包含空格,并在读取完毕后自动移除最后一个回车符。若输入为 "hello world",`gets()` 将完整地读取并...
c语言中,gets 和getchar及scanf是如何判断你输入的字符或者字符串结束...
getchar()是用来输入一个字符的,是以回车代表输入结束 gets()是用来输入字符串的,应该也是以回车代表输入结束 scanf()是什么都可以输入,scanf()是以回车代表输入结束 scanf()中会用到空格 是用作分隔符的 因为scanf()可以输入多个变量,如 canf("%d%d",&a,&b);\/\/表示输入两个整形...
c语言问题 getchar位置不同输出时格式也不同 这是为什么
因为放前面时,它刚好把scanf遗留在缓冲区里的'\\n'接收了,下面的a就是你输入的值。改放后面后,那个遗留在缓冲区里的'\\n'被a=getchar()收取并赋给了a,那个2后面的空行就是第一次输出的a,它是个'\\n',所以空了一行。
c语言,这两个程序怎么输出不一样呢?scanf和getchar区别是啥
scanf函数可以按照数据的类型进行输入,而getchar函数只能接收一个字符
c语言中,scanf和getchar有什么区别啊?
getchar读取你按下回车前全部的字符流,但是只读取第一个,因为函数得到的是字符 scanf可以读整数、字符、字符串,按你在引号中间指定的格式匹配这一流,把对应值赋予到对应地址,直到不匹配返回,所以遇到最后一个%c而有剩余多个字符在输入中时,也是只取第一个 但遇到连续输入多个字符的情况是,scanf...
getchar和scanf的区别
getchar和scanf的区别主要在于它们的输入方式和应用场景。首先,getchar是一个C语言标准库函数,用于从标准输入(通常是键盘)获取一个字符。它的工作方式是一次只读取一个字符,并将其存储在变量中。getchar函数通常用于需要逐个字符处理的情况,例如读取密码、逐个字符地检查用户输入等。相比之下,scanf函...
深入了解scanf() getchar()和gets()等函数之间的区别
getchar()函数用于暂停程序,等待从终端接收一个字符,以便查看程序执行结果。然而,有时它似乎不能有效暂停程序,这可能是由于输入缓冲区中仍存在数据,导致程序直接读取了这些数据,而非等待用户输入。总结 在处理输入数据时,应注意不同函数对空格、回车符等字符的处理方式。scanf()在读取字符串时会遇到...
c语言中,scanf函数和getchar函数的区别是什么?求解!!!
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,如果stdin有数据的话不用输入它就可以直接读取了。for(int i=0;i<10;++i){ char ch=getchar();printf ( "ch=%c\\n", ch );} 当输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取,并显示到屏幕上。如果...
C语言 字符输入 scanf和getchar的区别
一、字符输入格式与函数 在C语言中,字符输入有两种主要方式:scanf与getchar。1. scanf scanf是通用输入函数,可以从标准输入流读取多个字符并存储至对应变量。输入多个变量时,通过空格、TAB或回车键分隔。2. getchar getchar从标准输入流读取单个字符。首次需要人工输入,后续调用会直接读取缓冲区内容,...
关于C语言中的scanf()和getchar()
而输入函数直接从输入缓冲区中取数据。正因为输入函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,输入函数会直接取得这些残留数据而不会请求键盘输入,这就是原因。scanf("%d",&ch)不接收字符,因为在缓冲区里面,由后面的getchar()接收。