C语言用scanf输入字符输出确实错误的。。。

作者&投稿:向鬼 (若有异议请与网页底部的电邮联系)
c语言中用scanf函数先输入字符串,后输入数值。输出时会出现错误的数值,怎么解决~

#include
int main()
{
char str[50];
int a;
scanf("%s%d",str,&a,&a);
printf("str=%s
",str);
printf("a=%d
",a);
return 0;
}


你下面的代码我给你改了一下,把%s%d之间的空格去掉了,然后加了一个&a,通过两次赋值,消除缓冲中回车的干扰

%c前面的空格就是用来屏蔽空白符的,
首先必须要知道C语言 scanf() 函数的特性,以及scanf()与缓冲区、标准输入流之间的联系。在此之前,先介绍两个专业术语。
1.缓冲区
缓冲区是一块存放临时输入数据的内存,我们在键盘上输入数据之所以不会马上显示,就是因为数据存放在了缓冲区,在上面例子中,当我们按下回车键后,缓冲区的数据会传送到标准输入流。
2.标准输入流
标准输入流(stdin)是文件指针,scanf()就是从标准输入流或许数据。

以上面代码为例,当执行到scanf()时,
电脑开始执行以下操作:
开始等待用户输入
2.当我们输入数据,在按下回车键前会把数据储存在缓冲区,按下回车键后,会把数据以及换行符(
)一起传送到标准输入流(stdin)中,
scanf()就是从标准输入流中或许数据,上面第一个scanf()要读入一个整数,它从标准输入流中查找,跳过空白符(空格、换行符、制表符)
3.如果遇到数字,则开始读入,直到遇到非数字的字符结束,最后计算读取到的数值,储存到相关变量中。
使用scanf注意事项
1.参数的个数一定要对应
2.输入的数据类型一定要和所需要的数据类型一致
3.每次调用完scanf后,记得调用一个getchar()函数
扩展资料
1.函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
2.函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。
每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
参考资料
网页链接

朋友,你没有加输入分隔符,空格,逗号都可以,你加上试试如果有其他错再说。这是最明显的错误(就是scanf中%c中间加)

我用的是TC,都是C语言,应该是一样的,希望能够帮助到你,注意在输入的时候也要用逗号隔开



scanf 后面为何加 _s



scanf_s("%c%c%c%c%c", &c1, &c2, &c3, &c4, &c5,5);//后面加上元素的个数就好了。

scanf_s("%c %c %c %c %c", &c1, &c2, &c3, &c4, &c5,5);//每个%c之间用空格隔开试一下


如何使用scanf函数输入字符并且输出字符?
在C语言中,可以使用scanf函数从键盘输入字符,并使用printf函数将字符输出到屏幕。以下是一个示例代码:在这个例子中,%c是一个格式控制符,表示要读取一个字符。&ch是一个指针,指向要读取的字符的内存位置。scanf函数将读取键盘输入的数据,并将其存储在ch变量中。然后,使用printf函数将ch变量的值输出...

scanf的输入格式是什么?
scanf的输入格式是scanf(“输入控制符”,输入参数)。scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令)它是格式输入函数。scanf的输入格式是scan...

scanf在c语言中的用法
scanf在c语言中的用法有两种,一种是输入控制符和参数;另一种是输入控制符、非输入控制符和参数。1、输入控制符和参数 输入控制符和参数是scanf函数的最简单用法,也是最常用、最基本、最重要的用法。这样通过scanf就可以在程序运行的过程中由用户来指定变量的值。该用法是从键盘输入的字符转化为“输入...

scanf是什么意思?
scanf是c语言中的标准库函数,主要作用是接收用户输入的数据。scanf是C语言中的输入函数,可以从键盘获得用户输入,和printf输出功能正好相反。scanf的输入格式是多种多样的,使用时需根据情况选择,最常用的是十进制整数型输入%d。scanf的使用和输入格式 scanf("%d", &c); \/\/输入一个整数并赋值给c。

c语言中scanf是什么意思(scanf什么时候用c语言)
意思是n.围巾,披巾,头巾;(嵌接的)斜面,斜嵌槽;鲸脂的切口,.狼吞虎咽地吃;嵌接,斜接(木材,金属);切割(鲸)脂 Shetwistedascarfaroundherhead.她用一条围巾裹住了头。scanf3c在c语言中代表什么 scanf是C语言的格式化输入函数:调用格式:scanf(输入格式字符串,输入变量地址表)能够从...

如何用scanf输入数据并取小数点后两位?
在C语言中,使用 scanf 函数输入数据时,若要取小数点后两位,可以通过格式控制字符串来指定。include <stdio.h> int main() { float number;printf("请输入一个浮点数:");scanf("%f", &number);number = (int)(number * 100 + 0.5) \/ 100.0; \/\/ 四舍五入到小数点后两位 printf("...

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
例如:scanf(" %c" ,&c),你输入了' a'(a前面有个空格),a就能被c接受。但控制符前如果没空格,那c就接受了空格,这个可以防止误操作,忽略空格输入,接受第一个非空格输入。注意事项:对于scanf()而言,%c是个较为特殊的说明符。 %c前没空格,scanf()将读取标准输入流中的第一个字符,%c...

c语言如何输入数字和单个字符串
1 scanf("%c", &c);这种方法和输入数字是类似的,%c仅读入一个字符,并赋值给c。2 c = getchar();getchar函数的功能就是读入一个字符,并以返回值形式返回。三、输入一串字符(以空白字符分隔)。可以用scanf的%s格式。char str[100];\/\/空间要定义足够大 scanf("%s", str);\/\/将字符串读入...

C语言中怎么用scanf输出三位数
scanf("%d", &number); \/\/读入一个三位数 hundreds = number \/ 100; \/\/ 一个三位数除以100的整数商,即百位上的数字 tens = (number % 100) \/ 10; \/\/number对100取模,得到后两位,再除以10的整数商,即十位上的数字 units = number % 10; \/\/number对10取模,得到个位上的数字printf...

c语言scanf(输入函数的使用方法和注意事项)
scanf函数是C语言中的输入函数,用于从标准输入设备(例如键盘)读取数据。它是C语言中最常用的输入函数之一,也是处理输入数据的重要工具。scanf函数的使用方法 scanf函数的语法如下:```intscanf(constchar*format,...);```其中,format是一个字符串,用于指定输入数据的格式。...表示可变参数,用于...

资阳市19259586394: C语言用scanf输入字符输出确实错误的... -
陆鸿欣丰: scanf_s("%c%c%c%c%c", &c1, &c2, &c3, &c4, &c5,5);//后面加上元素的个数就好了.

资阳市19259586394: c语言用scanf输入一个数,如果是六位数字(首位可以为0,不能是字母)则输出“正确”,否则输出错误 -
陆鸿欣丰: 你可以用字符串输入,然后判断字符串.如果还有后续的操作,可以将输入的字符串转成整数,即函数atoi.你可以去查一下atoi函数的详细用法.#include <stdio.h>#include <string.h>#include <stdlib.h>//判断字符串中是否含有除数字之外的字符...

资阳市19259586394: c语言for循环用scanf输入字符是怎样运行的 -
陆鸿欣丰: 楼主的代码有三个问题, 第一是for(i=1;i<3;i++); 这句不应该由分号结尾,这样的话后面的语句不会是for的一部分.第二:case '0':printf("another\n");后面应有break. 原因是,如果k为0,这句执行之后,case '1'中的语句同样会执行.第三:for(i=1;i<3;i++)只会循环两次,因此不会出现楼主所说的三个结果

资阳市19259586394: C语言中scanf函数有没有办法在输入时给出提示符? -
陆鸿欣丰: C语言讲求函数功能的专一性,scanf()函数只负责读取,如果需要输出提示信息,可以配合使用printf()/puts()等函数.

资阳市19259586394: c语言,编写程序用scanf函数输入x的值,计算并输出y的值. -
陆鸿欣丰: scanf("%d",&x); //y不用输入 if (x<=1) { y=x; printf("%d\n",y);} //条件x<=1成立时,这两句都要执行,所以要用{}变成复合语句. else if(x>1&&x<10) { y=2*x+1; printf("%d\n",y);} //同上 else {y=3*x+1; printf("%d\n",y);} //同上 更好的是: scanf("%d",&x); if (x<=1) y=x; else if(x>1&&x<10) y=2*x+1; else y=3*x+1; ); // y求值 printf("%d\n",y); //输出y

资阳市19259586394: C语言输入输出字符串 -
陆鸿欣丰: char ch[5]表示的是定义了一个字符数组(即字符串),数组单元有5个,每个单元都是字符型,由于字符串是用\0作结束的,5个单元的字符数组实际上能完整存储的只能是长度不超过4个字符的字符串,多了的话就要占用其他单元了(这些单元有可能会被系统分配给其他变量,而能够用来存储字符串的就是你定义的这5个单元的字符数组),可能会出现溢出,也就是有时候会出现输出的字符串后面有乱码 char ch表示定义了一个字符变量,用scanf为其赋值的话应该用%c,即scanf("%c",&ch),它只能表示一个字符 char ch[]数组定义不允许[]里为空 char ch[1]表示的也是一个字符数组,所以你可以输入字符串,同样随便输入就有可能溢出

资阳市19259586394: 请问C语言中scanf函数里的%5c 的意思是不是用来输出5个字符? -
陆鸿欣丰: 确实是5个字符,但这个字符是空白符,通常这是作用是用来对齐的,%5c,那么前面4个为空格,第5个为你转义的字符,%-5c则相反,第一个为你转义的字符,后4个为空白符.这种同样适用%5d,%-5d等,例如%5d,输出的数为123,则前面2个为空格加123;若输出的数为12345,则就输出12345,保持原样

资阳市19259586394: c语言中的scanf 函数的用法 -
陆鸿欣丰: 输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&.scanf("%s",s);改为scanf("%s",&s); scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);格式控制字符串包含:格式控...

资阳市19259586394: 用scanf函数输入大写字母,然后转换为小写字母输出. -
陆鸿欣丰: #include int main(void) { char c; printf("请输入一个大写字母!\n"); c = getChar(); printf("您输入的字母%c转化为小写字母%c",c,(int)c -'A' + 'a'); return 0; }

资阳市19259586394: C语言scanf,输入字符 -
陆鸿欣丰: 你把scanf("%c\n",&c1)里的“\n”去掉就可以了.换行是根在printf里才可以执行的.scanf用于存储, #include "stdio.h" void main() { char c1,c2; scanf("%c",&c1); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网