我们有这样一个需求,同时输入一个字符串和一个int数字,中间用逗号隔开,然后打印出来。
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
char str[30];
int num;
scanf("%s,%d", str, &num);
printf("%s,%d\n", str, num);
}
我们输入Tom,3
希望得到的打印结果是Tom,3
,即逗号前面赋值给str
,逗号后面赋值给num
。
但是实际输出结果是:Tom,3,0
因为逗号没有作为字符串的分隔符,输入的Tom,3
会当成整体传给str
,而后面的num
是一个默认值。
我们可以有两种方式改变:
- 利用
cin.getline()
先传入str
,定义分隔符为逗号。然后再scanf()
数字。
cin.getline(str, 30, ',');
scanf("%d", &num);
- 用
scanf()
正则表达式。
scanf("%[^,],%d", str, &num);
据说还有va_list
的实现方法,看到之后再更新总结一下。
网友评论