1 如果使用scanf进行格式化输入,用逗号隔开不适用于先输入字符串后输入数字的情况,仅适用于数字的间隔,或者先输入数字后输入字符串。
下面是先输入数字后输入字符串的例子:
#include <stdio.h>如果输入:
123,abc
会输出:
abc
123
但是如果先输入字符串再输入数字,比如用scanf("%s,%d",s,&v);的格式,系统会出错。
2 如果需求必须是先输入字符串后输入数字,那么必须人工进行判断。
思路为用getchar逐个读入字符,并赋值到字符串对应位置,当出现逗号时结束。然后再用scanf读入数字。
代码如下:
#include <stdio.h>以上程序输入:
abcd,123
输出哦
abcd
123
我知道,就是因为有问题所以才来这问的,我个人感觉没办法达到这种“先字符串,用逗号隔开,再数字”的效果啊,最多也就是使用%4d之类的控制宽度的输入了,但字符串的长度又不定。但是!!!!我们C有个作业就要求这么弄,我去问老师,老师说办得到的,叫我自己想,我想不出来所以就来这问了。。。。。。
追答先说明一个问题scanf("%d,%s",&age,&name); 这个name这里是不用取地址运算符&的,对于字符数组来说,数组名本身就是地址。
是有办法可以解决的,用这种方法scanf("%[^,],%d",name,&age);