C语言 scanf输入多个数字只能以逗号分隔的操作

C之scanf输入多个数字只能以逗号分隔,而不能用空格 TAB空白符分隔

#include <stdio.h>
int main()
 {
 int num_max(int x,int y,int z);
 int a,b,c,max;
 scanf("%d,%d,%d",&a,&b,&c);
 max=num_max(a,b,c);
 printf("max=%d",max);
 return 0;
 }
int num_max(int x,int y,int z)
 {
 int max=z;
 if(max<x)max=x;
 if(max<y)max=y;
 return(max);
 }

原因是scanf 对于数字输入,会忽略输入数据项前面的空白字符。因此只能以逗号分隔。

补充知识:c++中读入逗号分隔的一组数据

如题,在面试和实际应用中,经常会碰到一个场景:读入以指定符号间隔的一组数据,放入数组当中。

看了不少博客,总结了一个个人目前觉得比较简便的方法(其实和java比也一点不简便。。。。)

基本思路就是:将输入的数据读到string中,然后将string中的间隔符号用空格代替后,输入到stringstream流中,然后输入到指定的文件和数组中去

具体代码如下:

// cin,.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include <string>
#include <sstream>
using namespace std; 

int _tmain(int argc, _TCHAR* argv[])
{
 string strTemp;
 int array[4];
 int i = 0;
 stringstream sStream;

 cin >> strTemp;
 int pos = strTemp.find(',');
 while (pos != string::npos)
 {
 strTemp = strTemp.replace(pos, 1, 1, ' '); //将字符串中的','用空格代替
 pos = strTemp.find(',');
 }

 sStream << strTemp; //将字符串导入的流中
 while (sStream)
 {
 sStream >> array[i++];
 }

 for (int i = 0; i < 4; i++)
 {
 cout << array[i] << " ";
 }
 cout << endl;
 return 0;
}

以上思路仅供参考,如果有更好的方案,欢迎提出和探讨。希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决scanf_s输入%d%c%d格式错误的问题

    例题: 定义变量a,b,c,输入1+2,结果a=1,b=+,c=2 错误实例: int a,c; char b; scanf_s("%d%c%d",&a,&b,&c); 乍一看,没啥问题,但是一运行输入就会报错. 解决方案: 1.使用scanf,上边的代码就没问题 2.如果使用scanf_s,就要加上输入长度,如下 scanf_s("%d%c%d",&a,&b,1,&c); 补充知识:scanf("%d%d&

  • C语言清除scanf()缓存的案例讲解

    又重新过一遍C语言,感觉每次重学C语言都有不同的感受,遇到了一个问题,就是scanf()这个问题,其实细究起来,也有很多可以值得深挖的,实际上每次细细的挖掘的话,都是对C语言的更透彻的认识. 那么下面我就对scanf()中清除输入缓冲区的方法讲解: 应用场景:我们使用多个scanf()的时候,如果输入缓冲区还有数据的话,那么scanf()就不会询问用户输入,而是直接就将输入缓冲区的内容拿出来用了,这就导致了前面的错误影响到后面的内容,为了隔离这种问题, 总的思想:通过各种方法将输入缓冲区的内容读

  • c/c++ 利用sscanf进行数据拆分操作

    sscanf使用示例 示例:使用sscanf分割文件中的数据,数据源示例如下 川EZ1E58,贵GQ7708,:1302 贵AE0996,:185 贵A0PJ06,贵JYN192,贵JYN192,:128 分割代码如下所示: #include <stdio.h> #include <string.h> int DealLine(char *StrLine) { // find : data save char Parkid[20] = ""; char *p =

  • C++ 输入scanf()和输出printf()的操作

    在C语言中是用printf函数进行输出,用scanf函数进行输入的.C++保留了C语言的这一用法,在此只作很简单的介绍. scanf函数一般格式是: scanf(格式控制, 输出表列) printf函数的一般格式是 printf(格式控制,输出表列) [例3.4]用scanf和printf函数进行输入和输出. #include <iostream> using namespace std; int main( ) { int a; float b; char c; scanf("%d

  • 解决C语言中使用scanf连续输入两个字符类型的问题

    昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序: #include<stdio.h> int main() { char ch1,ch2; printf("Input for ch1:/n"); scanf("%c",&ch1); printf("ch1=%c/n",ch1); printf("Input for ch2:/n"); scanf("%c",&ch

  • C语言 scanf输入多个数字只能以逗号分隔的操作

    C之scanf输入多个数字只能以逗号分隔,而不能用空格 TAB空白符分隔 #include <stdio.h> int main() { int num_max(int x,int y,int z); int a,b,c,max; scanf("%d,%d,%d",&a,&b,&c); max=num_max(a,b,c); printf("max=%d",max); return 0; } int num_max(int x,i

  • C语言实现输入两个数字将其按从小到大输出的方法

    代码实例: 1.第一种方法(if) #include <stdio.h> int main() { int a , b; printf("请输入两个整数:"); scanf("%d%d",&a , &b); if(a > b){ int temp; temp = a; a = b; b = temp; printf("%d < %d \n", a , b); } } 源代码图片: 运行结果截图说明: 到此这

  • JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】

    本文实例讲述了JavaScript控制输入框中只能输入中文.数字和英文的方法.分享给大家供大家参考,具体如下: 1.问题背景: 遇到这样一个问题:有一个输入框,要求只能输入中文.数字和英文(即过滤特殊字符串) 2.JS代码: function checkUsername() { //正则表达式 var reg = new RegExp("^[A-Za-z0-9\u4e00-\u9fa5]+$"); //获取输入框中的值 var username = document.getElemen

  • 限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数

    onlyNumber.html 测试代码: <html> <head> <script language="JavaScript" > function onlyNumber(obj){ //得到第一个字符是否为负号 var t = obj.value.charAt(0); //先把非数字的都替换掉,除了数字和. obj.value = obj.value.replace(/[^\d\.]/g,''); //必须保证第一个为数字而不是. obj.va

  • C语言数据输入与输出实例详解

    C语言数据输入与输出实例详解 1 概论 C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数,浮点数,字符和字符串等等.数据输入的来源可以是文件,控制台以及网络,而输出的终端可以是控制台,文件甚至是网页. 2 数据输出 从第一个c语言程序中,就使用了跨平台的库函数printf实现将一段文字输出到控制台,而实际上,printf()不仅可以将数据按照指定的格式输出到控制台,还可以是网页或者是指定的文件中,printf()函数执

  • c语言实现输入一组数自动从大到小排列的实例代码

    如下所示: #include <stdio.h> main() { int x; printf("请输入要排序数字个数:"); scanf("%d",&x); int i,j,k,a,b,num[x]; printf("输入数据:"); for(i=0;i<x;i++) scanf("%d",&num[i]); for(j=0;j<x;j++) { for(k=j+1;k<x;k+

  • C语言 实现输入任意多个整数

    有时候可能需要在每一行输入的整数不确定,回车作为结束符,整数中间用任意多个空格隔开. 代码如下: #include<cstdio> int main() { int num[1000]; char ch; do { scanf("%d",&a[i++]); }while((ch=getchar())!= '\n');// 这里用来判断是否输入了回车 return 0; } ------------------------------------------ whil

  • C语言实现简单的猜数字游戏

    本文实例为大家分享了C语言实现简单的猜数字游戏的具体代码,供大家参考,具体内容如下 1.游戏介绍 此游戏是电脑随机生成一个1-99的数字(生成数字范围可自行更改),然后玩家一直猜数字,最终猜对为止.废话不多说,直接上完整代码. 2.游戏完整代码 #include<stdio.h> #include<time.h> #include<stdlib.h>   int juge(int guess,int number) {     int t=0;     if(guess

  • C语言详解实现猜数字游戏步骤

    目录 前言 一.猜数字游戏是什么 二.使用步骤 总结 前言 本文详细介绍了猜数字游戏的具体实现逻辑 一.猜数字游戏是什么 1.电脑自动生成一个1-100以内的数字 2.我们输入一个我们猜的数字 3.如果我们猜的数字比电脑随机生成的数字大,那么输出(猜大了) 4.如果我们猜的数字比电脑随机生成的数字小,那么输出(猜小了) 5.如此循环往复,猜到正确的数字之后游戏结束 二.使用步骤 1.首先应该打印菜单 代码如下 void menu() { printf("*********************

  • JavaScript使用键盘输入控制实现数字验证功能

    现在有一个需求如下图: 产品经理说Card Number只能让输入数字(中间的空格是格式自加的,也是用js实现的),有时候我脑海中出现了个声音,啥玩意,加个type=number不就行了,事实发现图样图森破了,先不说type=number后面会有个上下标(虽然用css可干掉),但是这个类型是支持科学输入法的,就是小数点和e这样的是可以输入的,于是乎只能用其他的方式了,后来想用检索到输入了非数字就干掉,但是这样还是能输入,想法被打回,于是乎最终采用了键盘输入控制的办法,其实很简单,代码如下: va

随机推荐