c - 为什么 sscanf 需要 & %d 整数而不是 %s 字符串

标签 c scanf

我对 sscanf 例程中的参数感到困惑

#include <string.h>
char sentence[20];
char first_name[7];
char last_name[7];
int age;

strcpy(sentence, "aaaaaa bbbbbb 20");
sscanf(sentence, "%s %s %d", first_name, last_name, &age);

为什么 char 数组不需要 & 前缀但整型变量需要?

谢谢

最佳答案

C 中的字符串是一个字符序列,后跟一个 '\0' 字符。 C 中数组的名称是初始元素的地址。因此,对于单个整数,您需要添加“&”以传递要存储 int 的地址。

关于c - 为什么 sscanf 需要 & %d 整数而不是 %s 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654097/

相关文章:

c - 三个 scanf 导致两个并获取垃圾值

C程序不读取键盘输入

c++ - 为什么 c 和 c++ 对待未初始化变量的重新定义不同?

c - C 嵌入式软件中的查找表与开关

c++ - undefined reference 共享对象 Linux [c++]

c - 为什么这个 scanf 会导致段错误?

c++ - 从外部 C 结构继承时初始化成员

c - C 中字符串数组和函数的问题

c - 是 "01234|MY_NAME"= "%s|%s"吗?

C 编译器忽略 scanf