【问题标题】:What is the difference between %c and %s in C [duplicate]C中的%c和%s有什么区别[重复]
【发布时间】:2015-11-22 15:42:14
【问题描述】:

何时使用 %s 而不是 %c。例如:

#include <stdio.h>
#include <string.h>
int main(void) {

        char name[31] = "My name is Arnold";

        printf(" %c \n", name);

        return 0;


}

如果我将 %c 更改为 %s,我会得到:我的名字是 Arnold,但如果将 %s 更改为 %c,我会得到如下奇怪的东西:

【问题讨论】:

  • 它不是 C,它是 C 中的printf

标签: c


【解决方案1】:

将错误的参数传递给格式说明符是未定义的行为。因此你得到了这样一个奇怪的输出。

  1. "%s" 需要一个指向以 null 结尾的字符串 (char*) 的指针。

  2. "%c" 需要一个字符 (int)。惊讶吗?阅读this

要打印name 的第n 字符,请使用

printf(" %c \n", name[n]);

【讨论】:

  • 严格来说,"%c" 预计 intchar 将自动扩展到 int 用于参数。引用N1256 7.19.6.1 fprintf 函数:“c 如果不存在 l 长度修饰符,则将 int 参数转换为无符号字符,并写入结果字符。”
  • @MikeCAT Argh,是的,忘了这与 C++ 不同。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 2011-05-15
  • 2014-12-25
  • 2016-05-17
  • 1970-01-01
  • 2015-01-17
相关资源
最近更新 更多