2 qq 27625787 qq_27625787 于 2016.03.01 14:48 提问

c++ scanf多个负数输入问题

double a,b,c,d;
scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d);

这里,假如输入数是-1.2,2.34,-3,-4.56
那么除了第一个数a外,后面三个都不能得到正确的值,这是为什么?
正数和整数就可以。
而要想输入多个负数,scanf中间就要用“ ”空格分开,不能用“,”逗号,假如格式化必须要使用逗号怎么办(在某种格式化输入中需要使用逗号),为此我折腾了半天?

2个回答

qq_27564553
qq_27564553   2016.03.01 15:17

scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d);中逗号去掉

 scanf("%lf%lf%lf%lf",&a,&b,&c,&d);

出现这个问题是因为后面因为给double传了‘,’,所以当无效输入处理了,使用函数的时候小心点

qq_27625787
qq_27625787 输入格式就是要用逗号分开,我知道不用逗号是没问题的
2 年多之前 回复
qq_27564553
qq_27564553 昨天下面的还没有看清呢,你想要的那种方式scanf应该是实现不了的,因为scanf的实际作用先占位几个位置,然后输入的第一个放到一个中,以此类推。你输一个空一个也可以使用,因为到遇到空白字符(空格,tab,newline等等)时自动就把前面读取的当作一个数,而这个函数没有判断你的符号。你可以看看这个函数的文档,看看有没有你想要的例子
2 年多之前 回复
jianwen0529
jianwen0529   Rxr 2016.03.01 17:19

在VS2013下没有出现你所说的问题
这不应该是这个函数的Bug,而是你输入的数据或者编译器的问题了

你实在不行可以先取得整行的输入
再把这个字符串中的逗号替换为其他字符如空格
再用sscanf(strIn, "%lf %lf %lf %lf", &a, &b, &c, &d")

建议你多测试下,如果是编译器的Bug最好就换个编译器

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c语言中连续使用两个scanf的问题
问题如下: 先上程序 一: #include int main (void) {  int a, b;  puts ("请输入一个整数");  scanf ("%d", &a);  puts ("再输入一个整数");  scanf ("%d", &b);  printf ("a = %d b = %d\n", a, b); return 0; }   二: #in
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
scanf函数输入多个字符串时间隔符的失效及解决办法
先看下边这段代码#include<stdio.h> int main() { char test1[40],test2[40]; scanf("%s,%s",test1,test2); printf("%s%s",test1,test2); return 0; }在学习过程中尝试使用”,”隔开scanf中两个字符串的输入.尝试输入如下 hello,world
Scanf输入多个用逗号隔开的字符串
原文http://www.hb6.org/M/a-trap-of-scanf.html Scanf输入多个用逗号隔开的字符串   今中午做《程序设计实习 / Practice on Programming》上week2的习题,遇到了一点小问题。 题目要求输入格式为:名字,年龄,学号,分数1,分数2,分数3,分数4 其中名字和学号为字符串,其余均为非负整数。 我随手敲了: sca
C语言中用scanf连续输入两个…
原文地址:C语言中用scanf连续输入两个字符类型的问题作者:Hoper昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序: #include int main(void){   char a[100];   char k;   int i,loc;   printf("请输入字符串:");   scanf("%s",a);   printf("n请输入要插入的字符:");   
C语言中一个程序多次使用scanf函数
今天复习遇到了一个函数主体使用多次scanf函数的情况。但是在实际运行中发现只有第一个scanf正常赋值了,之后的scanf函数均未赋值,被赋值为回车。 代码: #include #include double cal(double a1, double b1, double a2, double b2) { double t; // t = sqrt((a1 - ) * (a1
scanf()输入float型数据时出错
我们这里用的是VC++6.0的编译环境,下面我们来讨论一下C语言中用scanf()输入float型数据是出错问题。 >>出错代码例举: >出错代码1(含有结构体): #include struct student { float a[3]; }stu[5]; int main() { scanf("%f",&stu[0].a[0]); return 0; } >出错代码2(
用scanf读入多行数据
在线笔试,采用scanf读入读入多行输入数据,采用循环时的解决方案。
C语言中用scanf连续输入两个字符类型的问题
<br />昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序:#include<stdio.h><br /> int main()<br /> {<br />  char ch1,ch2;<br />  printf("Input for ch1:/n");<br />  scanf("%c",&ch1);<br />  printf("ch1=%c/n",ch1);<br />  printf("Input for ch2:/n");<br />  scanf("%c",&
scanf的安全输入问题
引入:华为的一道经典面试用老师的话说,如果你脱口而出答案是5,那么你连C语言们都还没摸到,眼尖的同学会看出数组溢出了,但至于结果怎么算却搞不明白。至于大神吗,分分钟得出答案。好了别的不多扯,我们看看这个到底怎么算。 结果:i=6776421 进入到内存中分析: 连续定义的变量,内存地址一般也相邻 首先依次在栈区为变量开辟空间(注意方式,整形是4个字节以计算,char型一字节一计算) 越界后