C语言中处理一行输入未知个数的整数的问题 |
您所在的位置:网站首页 › 怎么输入下一行的数字格式 › C语言中处理一行输入未知个数的整数的问题 |
C编程习题中经常会遇到一行输入未知个数的整数的问题,今天我就来分享一下类问题如何解决。 一,问题重现例如,输入: 1 2 3 4 6 7......具体输入的个数不清楚,只限定不超过N,N这里我们随便取个值为100。 如果只是常规地用scanf()输入一个个整数,这里是肯定不行,因为整数的个数不清楚。 二,解决问题如何解决呢?首先我得分析一下,从终端输入的都是什么东西,我们把输入的字符拆开来看, int int ......intLF两个整数之间有个空格字符,最后一个整数后面是一个换行符(LF),C语言规定每行输入都有零个或多个字符在加上一个结束的换行符(LF),line feed的ASCII值为10。 于是我们便可以通过判断最后一个字符输入是否是LF来判断输入是否结束。定义一个input函数来处理输入: void input(int *a,int *len){ int cnt=0; int n=1; char ch; do{ scanf("%d%c",a,&ch); a++; cnt++; }while((int)ch != 10); // The last character is line feed whose ascii value is 10 *len = cnt; }len所指的内容是输入的整数的个数,通过指针带回。这个函数可以处理任何任意个被任何字符相隔的整数的输入问题,整数既可以被空格分隔,也可以被逗号,或者其他字符。下面看一下效果: 1 2 3 4 1 2 3 4 三,说明 控制字符LF,英文全称line feed,意思是换行,ASCII值为10文章中的代码下载
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |