【发布时间】:2016-02-29 22:49:17
【问题描述】:
我正在尝试在 C 中以 char * 的形式输入一个单词
如:
char *inputText;
scanf("%s",inputText);
printf("This is your string %s",inputText);
我尝试过使用
scanf("%s",&inputText);
同样 每次运行时都会出现编译错误或分段错误
"format '%s' expects type 'char *' but argument 2 has type 'char **'
我不确定我是否遗漏了一些非常简单的东西,但这很令人困惑。 我的代码取决于使用 char * 如果有一种方法可以将更简单的输入法转换为 char *,那么你能告诉我那个方法吗?
【问题讨论】:
-
您无法扫描到空白空间。为
inputText分配一些空间或使用预先分配的数组。 -
扫描字符串时,您不需要传递
char *的地址...只需传递char *本身。您还需要确保指针指向某个东西(malloc空间,或使用数组等)。此外,您应该始终指定宽度,以便scanf不会尝试读取长度超过您的空间的字符串。 -
@zenith 我更喜欢这个问题,因为它更重要。那个链接的是“OMGHORRIBLEBLOCKOFCODE”。
-
@MicroVirus 没错,那里可能有更好的副本。
标签: c string char segmentation-fault scanf