如何使用%d格式说明符处理char?

时间:2013-02-21 04:59:44

标签: c++ c

我正在使用scanf从文件中获取变量的值。它应该继续从文件中读取,直到遇到%。我如何比较%

scanf("%d",&a);

if (a=='$') terminate ; ?? 

它不起作用什么是可能的解决方案?

3 个答案:

答案 0 :(得分:2)

你做不到。 %d不会转换%$。换句话说,它不会放任何东西(更不用说你应该传递&a)。如果转换失败,它将保留在stdin,因此您仍然可以随后阅读。

要知道转化是否成功,请检查scanf()的返回值。它返回成功的cnversions数。

if (1 != scanf("%d", &a)) {
  char c = 0;
  scanf(" %c", &c);
  if (c == '%' || c == '$') {
    /* done */
  }
}

答案 1 :(得分:0)

您的if条件未将a$

进行比较

改为:
if (a =='$')

  • = 分配运营商
  • == 等值运算符

修改
做同样的事情来比较%
if(a=='%')

答案 2 :(得分:0)

尝试将其作为=='$'或存储值读取整数并检查