ppts.net
当前位置:首页>>关于C语言 scanf("%3c",&ch); 输入 abc时 为什么ch得到...的资料>>

C语言 scanf("%3c",&ch); 输入 abc时 为什么ch得到...

额,你这是单个字符输入,就根本原因讲:&ch给的是一个字符空间,只能存一个字母,不是你在c前面加个3就能行的- -但是,原语句改为scanf("%s",ch);这样得到的是一个以ch为首地址存储单元的字符串scanf("%s",ch);才是录入字符串的格式,并且记着不能在ch前+上'&'.

【空格】【空格】a

%3c表示读入三个字符 而ch为char类型的变量,尽管缓冲区读入了三个字符,但是ch的值只是等于第一个字符,故只输出输入的第一个字符的值.

1、%c是字符型2、%ch则是输入一个字符后,必须加上一个h 比如:scanf("%*[^\n]"); 里面的[^\n]表示:除了'\n'以外的,[^a]就是除了'a'里面的*表示:通配符,所有字符.然后合起来就是取出所有除了\n之外的字符scanf("%*c"); 就是取出一个字符,一般取出就是刚刚上面那句没有取出的'\n' 为什么这么做是因为scanf读取数据的机制,scanf是从输入缓冲区取数据的 而它取数据的时候会逐个查看,可以理解为贪婪模式,然后发现刚刚吃的那个不好吃,就会吐回输入缓冲区这就会影响用户的下一次输入,因为输入缓冲区中有东西,所以用户下次输入的东西要排在之前缓冲区内容的后面.

scanf()函数从输入流缓冲区中读取值的,而读取时遇到回车(\n)而结束的.带空格的scanf(" %c")表示要从输入流缓冲区读两个字符,一个给空格,一个给%c.为什么加空格呢,是因为回车符(\n)也在输入流缓冲区中,所以将\n赋值给空格,以让%c被正确赋值.否则,不加空格,回车符\n会被赋值给%c.所以不加空格,字符输入会出问题

刚学c 语言? scanf 表示输入 ,“%c”表示输入数据的类型格式 &表示取地址 &ch表示输入数据后存到ch里面等于给ch赋值. 这段代码的意思 是 从键盘输入一个字符 存到ch里面 你在前面一定定义了ch.

1.int a=b=c=1不正确在于 你定义三个变量即要开辟三个内地址,也就是地址列表那就应该用逗号隔开所以int a,b,c代表已开辟三个变量,后面当然可以调用了2.错 1234我们可以理解为 一千二百三十四而不是字符,'1' '2' '3' '4'才是4个字符,别忘了定界符噢3.你所提到的3代表宽度 所以你在输入时至少宽度为3 如:abc4.因为规定default是排除所有case以外的条件,而没有说排除它前面的所有case条件 ctrl-break to quit 就是说同时按住Ctrl(组合键)与Break(中止键)实现退出

└ ┘表示空格 scanf( "%c%c%c ",&c1,&c2,&c3)//前面那里应该写掉了" ",输入a└ ┘b└ ┘c时即c1=a,c2=b,c3=c,scanf接受键盘输入,a的值赋给c1,同理类推.

结果是:234 a 一楼的理解有问题哦,%3d是只接受三个数字,不是23445 二楼的理解也有问题哦,既然用 &y 了,那就说明y不是数组,而是char y;

楼上的是不是弄成了sprintf()了? 这里是scanf(). 3为指定的输入字段的宽度.如果数据的位数小于3,则等待直到满足3字符长度(如果有回车,则包含回车符),若大于3,则截断后输出前3字符. 但scanf函数本身无法判断ch变量的容量有多大,如果ch空间小于3个字节(非Unicode),会导致内存操作越界;所以,ch必须大于3个字节的空间,否则可以说这个地方代码有重大Bug隐患.

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.ppts.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com