【发布时间】:2021-10-11 18:39:49
【问题描述】:
#include <stdio.h>
int main(){
char *name;
printf("Enter a name: ");
scanf("%[^\n]s", &name);
printf("%s", &name);
return 0;
}
在这里,我创建了一个悬空指针,即不指向任何地址,我尝试在其中存储一个字符串,我发现在指针之前使用 & 符号对 I-O 有效,但我不知道为什么。我刚刚开始使用 C。
这是输出的样子
Enter a name: Joseph Tribbiani
Joseph Tribbiani
【问题讨论】:
-
注意 - 虽然数据类型不同,但根本问题与重复(写入分配内存的边界之外)相同
-
如果你写的是
scanf("%[^\n]s", name);,那么崩溃的可能性会更大。 -
另见this answer。
-
[说明符之后的所有这些幻象s是怎么回事? (在问答和cmets中) -
由于
scanf和printf的参数类型不正确,还有未定义的行为
标签: c pointers input output ampersand