c++ - 如何处理带有 %d 格式说明符的字符?

标签 c++ c

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

scanf("%d",&a);

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

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

最佳答案

你不能。 %d 不会转换 %$。换句话说,它不会将任何内容放入 a(更不用说您应该传递 &a)。转换失败时,会留在stdin,后续仍可读取。

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

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

关于c++ - 如何处理带有 %d 格式说明符的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994861/

相关文章:

c - 理解浮点二进制模型

c - pthread_cancel() 使我的程序崩溃

c - C 结构体中的不完整类型

c++ - 在 QT 中的 QPushButton 上捕获 "Tap and hold"触摸事件时出现问题

c++ - 如何通过 HttpReceiveHttpRequest() 使用 HTTPS?

c++ - 检查一个序列是否由两个相同的序列组成

c++ - 将命令参数与 argv[] 进行比较不起作用

c++ - C++ 中的类方法

c++ - <我在哪里转换?> 警告 C4244 : 'initializing' : conversion from '__int64' to 'int' , 可能丢失数据

通过分而治之检查所有元素是否相同