用scanf读入一串数据,但遇到逗号就出现未知错误。
输入样式:2,3,1,5,6,76,89,31,90我在编写程序的时候怎样才能避开“逗号”,把数值放到数组里?
我想了一下,本来我是打算用scanf“%s”来获取一串字符的数组,然后用其中的每一个字符去判断是否为数值
程序代码:
#include"stdio.h" #define N 30 int main(){ char a[N];int b[10]; scanf("%s",a); for(int j=0;;j++){ for(int i=0;i<N;i++) if(a[i]<=9&&a[i]>=0)b[j]=a[i]-'0'; } return 0; }但是后来我突然意识到,这种方法在放数据的时候是逐个字符进行读写的,对十以内的数可以转换,大于十的就不行了,就会出错。
C语言,解决这种问题有没有什么办法?还是说,我应该把程序写复杂点,逐个字符读入,读到“逗号”停下,逗号前面的把他合并为一个数,然后继续。可是这种方法的话他也处理不了最后一个字符的读入啊,因为已经没有逗号给他做标识了。
—————————————根据诸位的讨论,我把源程序改了,可是运行结果和预期的不一样。———————————————————————————
所以,对于这样用逗号隔开的数据他和用空格、回车隔开的数据一样,程序是可以区分开来的了?
那为什么下面这段代码,我把用逗号隔开的数据输入进去就出错了。没有错误提示。我才刚刚把第一组九个数据“2,3,1,5,6,76,89,31,90”输进去他就输出9个0和一个2,根本就不等我执行下一次输入。错得很莫名其妙
程序代码:
程序代码:
#include"stdio.h" #define N 30 void pai(int a[]){ int t; for(int j=0;j<10;j++){ for(int i=j+1;i<10;i++){ if(a[i]<a[j]){t=a[j];a[j]=a[i];a[i]=t;} } } } int main(){ int i=0;int b[N]={0};int cnt =0;char c; for(int i=0;i<9;i++) scanf("%d",&b[i]);//我在这里插入一个循环输出语句,发现读入数据的时候,只读到了第一个数据2,从第一个逗号开始后面的都没有值,全是我初始化的零 pai(b); scanf("%d",&b[0]); pai(b);cnt=0; for(int i=0;i<10;i++){ if(cnt)printf(","); printf("%d",b[i]);cnt++;}printf("\n"); return 0; }
相反,如果我是用空格作为分割符来输入同样的数据他的运行结果就是对的了?(这道题是慕课网上课程里的习题,由系统自动输入,评分,看不到错误提示。)
[此贴子已经被作者于2015-10-31 15:59编辑过]