scanf()输入字符串的注意事项

2016-09-24  本文已影响0人  清脆de琉璃

我们有这样一个需求,同时输入一个字符串和一个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是一个默认值。

我们可以有两种方式改变:

  1. 利用cin.getline()先传入str,定义分隔符为逗号。然后再scanf()数字。
cin.getline(str, 30, ',');
scanf("%d", &num);
  1. scanf()正则表达式。
scanf("%[^,],%d", str, &num);

据说还有va_list的实现方法,看到之后再更新总结一下。

上一篇 下一篇

猜你喜欢

热点阅读