为什么c语言scanf()函数同时输入字符型和整型数据,输入数据错误?

C语言scanf函数同时输入字符型数据和整型数据,第一个字符输入后再按逗号键该字符就成了汉字,而且之后输入的数据也不对。
#include
int main()
{
char a, b;
int m, n;
double x;
printf("输入对应的数值 a='a',b='A',m=5,n=10,x=18.51:\n");
scanf("%c,%c,%d,%d,%lf", &a, &b, &m, &n, &x);
printf("a=%c,b=%c,m=%d,n=%d,x=%lf\n", a, b, m, n, x);
return 0;
}
C语言初学者,希望大神解答,十分感谢!!!!

c++

3个回答

看下你是不是输入了全角(中文)的逗号,scanf必须是严格匹配的。

qq_44701666
qq_44701666 原来是这样啊,弄了半天没弄出来。太感谢了!
7 个月之前 回复

为什么一定要同时输入呢。。。。

头文件#include"stdio.h"记得打全哦

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言scanf输入
C语言中如何严格控制输入格式,scanf能否实现下面的输入[img=https://img-bbs.csdn.net/upload/201407/16/1405475019_456083.jpg][/img]
整型数据+字符型数据
深入浅出C语言编程视频培训课程从C语言入门开始学习,C语言无敌猎手林世霖老师手把手带你猎杀Linux下C编程技术,手握尖刀准备战斗!rnrn以下特色绝对让你留下膝盖:rn1,涵盖标准C语言开发核心技术,并且覆盖GNU扩展语法,图解一切你能遇到的障碍和关卡,助你破关杀怪,一路绿灯到底!rn2,素描板彩色板书,拒绝枯燥裸讲,全程图文并茂rn3,加入2千人超级Q群260492823随时提问答疑rn
C语言 scanf()函数
scanf()函数是用来从外部输入设备向计算机主机输入数据的。 scanf()函数的一般格式 [案例] 已知圆柱体的底半径radius=1.5,高high=2.0,求其体积。 main() { float radius=1.5, high=2.0, pi=3.14159, vol; vol=pi*radius*radius*high; /*求体积*/ printf(...
C语言输入(scanf)输出(printf)函数
scanf和 printf这两个函数分别称为格式输入函数和格式输出函数。其意义是按指定的格式输入输出值。因此,这两个函数在括号中的参数都由以下两部分组成: 1) 格式控制串:格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。 2) 参数表:参数表中给出了输入或输出的变量。当有多个变量时,用英文逗号(,)分开 例如:printf("I have %d %s",num,th
C语言☞scanf输入语句
###C语言scanf的用法 scanf("%d %c",&a,&b); & :取地址符一定不能忘 #include<stdio.h> #include<stdlib.h> int main() { int a; char n; scanf("%d %c",&a,&n); printf("%d %c",a,n); syst...
c语言scanf输入问题
#include "stdafx.h"rn#include rnrnint main(int argc, char* argv[])rnrn double x,y;rn printf("请输入x的值:");rn scanf("%f",&x);rn if(x<1)rn rn y = x;rn rn else if(x>=1&&x<10)rn rn y = 2*x-1;rn rn else if(x>=10)rn rn y = 3*x-11;rn rn printf("%f",y);rn return 0;rnrnrn请输入x的值:12rn-925596046168487490000000000000000000000000000000000000000000000.000000Press any key to continue
C语言Scanf输入求解
求教关于用scanf给变量输入值的几个语句rnrn有变量定义 int i ;用scanf给变量 i 输入值的语句;rnrn有变量定义 float i ;用scanf给变量 i 输入值的语句;rnrn有变量定义 double i ;用scanf给变量 i 输入值的语句;rnrn有变量定义 char s[100] ;用scanf给字符数组 s 输入字符串的语句;
整型数据转为字符型数据
这是将整型数转换为字符型,自己创作。代码可实现将整数转换为字符型,可以帮助在开发单片机等显示中。
整型数据变为字符型问题
MS_SQL2005:rnrn我新建个SQL作业每天将结果统计下来,再UPDATE某表中投票结果列(数据类型为ntext):rnrn统计数据均为整型(int),有多个整型数据,rnrn投票结果列数据格式如下:rnrn0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|12|0|8|0|0|0|0|0rnrn现求如何将统计结果写入表中。rnrn我的写法为:rnrnUPDATE [ZXBBS].[dbo].[ZX_Forum_Vote]rn SET [Result] ='@ANLI+'|'+@WANGMEI'+‘|’+ ... +@MAILINGKAI'rn WHERE [ID]=8rnrn报错:rnrn消息 102,级别 15,状态 1,第 213 行rn'' 附近有语法错误。rnrn其中所有“@变量”均为int类型。rnrn请高手指教。
整型数据和字符型数据的转换
字符型数据转换成整型数据,但是整型数据可以转换成字符型数据时,只会留下最右边的一个字节,第0位到第8位,其他字节被丢弃。
c语言scanf()函数问题
c语言scanf()函数异常问题:输入char类型时,回车符被吞导致程序bug。原因:scanf()输入原理是系统将键盘输入数据存入输入缓存区,系统进程从缓存区依次取数据存到内存。每次输入以回车结束,scanf()从缓存区按照格式取数据,并将其从缓存区删除然后返回成功变量数,如果不符则阻塞输入流。 异常程序: #include<stdio.h> int main() { int a,b;
c语言scanf()函数的返回值
c primer plus 一书中,199页的showchar2.c程序中有一行代码是if(scanf(”%d %d",&rows,&cols)!=2),请问这里的scanf函数返回值的是参数的个数吗?
C语言printf()和scanf()函数
*表示跳过,[^,]表示逗号之前的任何内容,合起来就是逗号之前的内容都不要%[^,]类似
scanf()输入数字和字符
现在写一个代码,输入数字和字符,同时打印出来 例如: #include int main() {     int a;     char c;     scanf(“%d”,&a);     scanf(“%c”.&c);          printf(“a = %d, b = %c\n”,a,c);      return 0; } 运行结果如下:
scanf和getchar都不能输入字符值,为什么?
程序如下:rn#include rn#include rnrn#define NULL 0rn#define LEN sizeof(struct Student)rnrnstruct Student // 定义学生结构体rnrn int Num;rn char Name[9];rn char Sex[1];rn float Score1;rn struct Student *Next;rn;rnrnint StudentNum;rnrnstruct Student *Creat(void)//创建学生链表rnrn struct Student *head, *p1, *p2;rn char Com;rn StudentNum = 0;rnrn do rn rn p2 = p1 = (struct Student *)malloc(LEN);rn printf("请输入学号:");rn scanf("%d", &p1->Num);rn printf("\n");rnrn printf("请输入姓名:");rn scanf("%s", &p1->Name);rn printf("\n");rnrn printf("请输入性别:");rn scanf("%s", &p1->Sex);rn printf("\n");rnrn printf("请输入成绩:");rn scanf("%f", &p1->Score1);rn printf("\n");rnrn p2->Next = p1;rnrn ++StudentNum;rn if (StudentNum == 1)rn rn head = p1;rn rnrn printf("继续输入?Y/N\n");rn scanf("%c",&Com);rnrn while (Com == 'Y');rnrn p2->Next = NULL; rn return(head);rnrnrnvoid Printf(struct Student *head)// 输出链表rnrn struct Student *p1;rn p1 = head;rnrn if (p1->Num != NULL)rn rn printf("%d\n", p1->Num);rn printf("%s\n", p1->Name);rn printf("%s\n", p1->Sex);rn printf("%f\n", p1->Score1);rn p1 = p1 + 1;rn rnrnrnvoid main()rnrn struct Student *head;rn head = Creat();rn Printf(head);rnrnrn请大侠解惑,在线等。。
C语言的整型数据的溢出
本文介绍C语言中的整型数据的溢出情况。 示例代码如下: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; int main() { int a = 2147483647; int b = 0; char string[35] = ""; b...
scanf("%c",&a),输入字符时的问题
[code=C/C++]scanf("%d,%f,%c",&a,&b,&c);[/code]rn声明省略~~rn会跳过&c的输入,rn看到网上用getchar或while (getchar() != '\n');rn对于这类情况怎么办?rn请写一小段rn
请问为什么scanf同时输入%d%c时无法输出?
```rn#includernint main(void)rnrn int j;rn float y;rn char name[50];rn scanf_s("%2d%3f%s",&j,&y,name);rn fflush(stdin);rn printf("%d\n%f\n%s\n",j,y,name);rn return 0;rn```rn为甚么在输入界面就无法运行输出了,强行回车就会直接退出。rn之前试过,只要同时在一个scanf语句中输入%d%c时就会出现这种情况。rn求大佬解答一下,谢谢!
【C语言】-- char字符型
    字符型数据类型char(范围是-128-127   unsighed  - 255)(1)   转义字符  ‘\n’  ‘\t’  ’\b’  ’\r’   ’\\’  ‘\ddd(8进制)’  ‘xhh(十六进制)’       (2)非转义字符'A'‘B’ '?'(3)得到键盘输入的字符型  用getchar   例如 ch=getchar();  相当于scanf(“%c”,&amp;amp...
C语言字符型数据
换行符\n hello\nworld      hello                          world 回车符\r hello\rworld      world  把指针移到最开始的位置 退格符\b hello\bworld     hellworld 制表符\t hello\tworld\nhaha\tbao       hello   world
scanf输入浮点型错误
#include rn//#include rnvoid main ()rnrn int i,j;rn float ** a=new float*[2];rn for(i=0;i<5;i++)rn rn a[i]=new float[2];rn rn for(i=0;i<2;i++)rn rn for(j=0;j<2;j++)rn scanf("%f",a[i][j]);rn rn for(i=0;i<2;i++)rn rn for(j=0;j<2;j++)rn printf("%f",a[i][j]);rn rn delete a;rn rn编译链接通过,但是运行到scanf("%f",a[i][j]);rn就提示错误,volation accessrn输入整形都可以 浮点型就不行rn求高手解释
C语言scanf读取单个字符出错
n char a;n scanf_s("%c", &a);n printf("%c", a);nn编译报warning:n警告 C4477 'scanf_s' : format string '%d' requires an argument of type 'int *', but variadic argument 1 has type 'char *'nn并且得不到正确的结果。nn使用getchar()没有问题,求问scanf的用法到底是怎样nn谢了n
c语言scanf接收字符的问题
scanf(“%c”,&amp;amp;c); 与scanf(“ %c”,&amp;amp;c); 看上去差别很小实际上第二个仅仅多了一个空格 却差别很大。尤其是scanf接收的数据之前就有换行时,没有加空格的scanf 会把上一行的换行符作为字符接收掉。...
整型数据能不能转换成字符型数据?
就是转换成char类型的,有这个函数吗?rn如果没有,想转换怎么办?rnrn
scanf()函数 输入格式
#includern main()rn rn int a,b,c;rn long int l1,l2,l3;rn float x,y,z;rn double d1,d2,d3;rn scanf("%ld%ld",&a,&b);rn printf("a=%d,b=%d",a,b);rn getch();rn return 0;rn rn我在学习scanf()函数的时候rn看到书上说 不能用长格式输入短变量 就写了上面的程序 但是我在 win-tc编译时没有出错 运行也成功了 但是在Turbo C上就不行了 运行出错rnrn书上说 rn(1)用短格式输入长变量时会出错rn scanf("%d%d",&l1,&l2); /*l1 l2是long int 类型*/rn(2)用长格式输入短变量时会出错rn scanf("%ld%ld",&a,&b); /*a b是 int 类型*/rn不知道对不对rnrn
scanf 函数的输入问题
#include // 无问题的代码 重复输入保证不问题rn#include rnmain()rnrn int a,b;rn int c;rn while(1)rn scanf("%d %d %d",&c,&a,&b);rn if( c == 5) printf("1 %d %d %d\n",a,b,c);rn printf("2 %d %d %d",a,b,c);rn system("pause");rn return 0;rnrn#include // 是有问题的..这个很让人纠结... 你可以自己试几个...rn#include rnmain()rnrn int a,b;rn int c;rn while(1)rn scanf("%c %d %d",&c,&a,&b);rn if( c == 'c') printf("1 %d %d %c\n",a,b,c);rn printf("2 %d %d %c",a,b,c);rn system("pause");rn return 0;rnrn我很想弄明白这是怎么回事 . 是不是输入时的缓冲区有问题? 期待高手..
C语言使用gets()与scanf:()输入的区别
int len(char *p) {     char * s = p;     int i=0;     while(* s != '\0')     {         if(* s != ' ')         {             i++;         }         s++;     }     return i; } gets(): 输入字符串 scnaf(&quot;%...
怎样把整型数据转换成字符型数据
怎样把整型数据转换成字符型数据
C语言scanf怎么输入这种格式》
要求按格式“R=1.3,h=5(回车)”输入然后计算有关r和h的式子rn我的源码:rnscanf("R=%f,h=%d",&R,&h);rn为什么后面的计算结果总是错的,是未初始化的情况
C语言清空scanf输入缓存
请问大家,gcc 平台下,C原因的scanf缓存如何清空啊??fflush(stdin);这个函数好像编译不过...
c语言的输入scanf、getchar、gets解析
 空格换行TABscanf(&quot;%s&quot;)结束读取,但不丢弃,仍在缓冲区中结束读取,但不丢弃,仍在缓冲区中结束读取,但不丢弃,仍在缓冲区中scanf(&quot;%c&quot;)读入读入读入getchar()读入读入读入gets()读入读入,转换成'\0'读入ps:scanf(&quot;%s&quot;)在首位读入时,遇到空格、换行、TAB都不结束读取。...
字符型和整型数据宽度限制区别
对于字符型数据,如char,varchar,在定义的时候使用长度限制限制的是实际存储长度。而对于整型数据则限制的是数据在数据表中的显示宽度,不影响实际值的存储。在实际应用中类似整型数据的显示宽度的限制并不影响数据的使用,仅仅是影响到数据库的查看(当前理解可能有误)。
cin与scanf输入字符区别
1.scanf输入字符后会保留一个空格或者换行 如果接下来输入字符 则将该字符赋值于字符或者换行。cin则无。 2.例如 scanf(”%d”,&amp;amp;n); scanf(“%c”,&amp;amp;s[i]); 则s[i]为‘\n’ ;(换行储存在缓冲区,只有输入字符的时候才赋值)...
scanf输入字符和数字的问题
scanf是c语言中的常用函数,使用前导入stdio.h这里讲一些经常遇到的问题。首先要明白scanf的本质。当我们需要调用scanf输入的时候,输入的字符送到键盘缓冲区,然后scanf从中读取所规定的字符,比如我们scanf中要求的是%d,即数字型,那么属于数字的内容将被读取,当遇到不属于数字的内容时,扫描终止,比如我们输入的是5s5555,那么只有第一个5能接收,如果输入8   555,那么也...
c语言 字符 输入与输出
char ch;rn //ch = getchar();rn scanf("%c",&ch);rn while(ch != '\n')rn rn if(ch == ' ')rn //putchar(ch);rn printf("%c",ch);rn elsern //putchar(ch + 1);rn printf("%c",ch);rn //ch = getchar();rn scanf("%c",&ch);rn rnrn //putchar(ch);rn printf("%c",ch);rnrn为什么这个可以实现字符串的输入?(后面的scanf为什么自动输入了?)
c语言里面用scanf连续输入字符型数据常见问题
#include <stdio.h> #include <stdlib.h> int main() { char i,j; printf("put in i:"); scanf("%c",&i); printf("i=%c\n",i); printf("put in j:"); scanf("%c",&j); printf("j=%c\n",j
C语言输入函数scanf()和gets(),gets函数输入的次数比输入的n少一次,这是为什么?
我写的一个小程序,为什么用gets函数得到候选人姓名的时候,允许输入的次数总是比输入的n要少一次呢?而用scanf函数则不会,可是scanf函数没法处理空格,这是为什么呢?rn/*候选人得票的统计程序,设三个候选人,每次输入一个得票的候选人的名字,rn要求最后输出各候选人的得票结果。*/rn/*为什么输入的次数比n少一次*/rn#include rn#include rnstruct aarnrn char name[20];rn int count;rn leader[3];rnstruct aa leader[3]="wang ming",0,"li",0,"gao",0;rnvoid main()rnrn int i,j,n;rn char name[20];rn scanf("%d",&n);rn for(i=1;i<=n;i++)rn rn /* scanf("%s",name);*/rn gets(name);rn for(j=0;j<3;j++)rn if(strcmp(name,leader[j].name)==0) leader[j].count++;rn rn for(j=0;j<3;j++)rn printf("候选人:%s\t得票数:%d\n",leader[j].name,leader[j].count);rn
C语言 scanf()和gets()函数的区别
C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求“从控制台输入字符串”有如下两种实现方式: 1>使用gets()函数实现 使用上诉代码实现时,我们会发现控制台打印如下信息:[即警告gets()是不安全的]
C语言scanf()函数的诡异事件
(1) 首先看一个程序 : 发现了一个问题: “scanf()函数吃掉了后面的数据” .(2) scanf()函数接收数据时, 遇到以下情况将会结束一个数据的输入 :① 遇空格、回车、跳格键 .② 遇宽度结束 .③ 遇非法输入 .*所以上面的例子中遇到空格scanf()函数将认为是对str1的赋值结束, 并忽略后面的”love you”, 不过”love you”还在键盘缓冲区中, (3) 测试程...
结合C语言缓冲区谈scanf()函数
scanf() 是带有缓冲区的。遇到 scanf() 函数,程序会先检查输入缓冲区中是否有数据: • 如果没有,就等待用户输入。用户从键盘输入的每个字符都会暂时保存到缓冲区,直到按下回车键,输入结束,scanf() 再从缓冲区中读取数据,赋值给变量。 • 如果有数据,哪怕是一个字符,scanf() 也会直接读取,不会等待用户输入
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法