【发布时间】:2019-01-03 06:20:27
【问题描述】:
我对可能导致此问题的原因感到非常困惑,我真的很想了解幕后发生的事情。以下代码用于获取最大 99 个字符长度的字符串,将其放入名为 word 的变量中,然后读取长度;稍后我将通过字符串中的字符数量重新分配分配给它的内存,但现在我只想能够获得输入。这是代码段:
char* word = malloc(100);
printf("Enter a string:\n");
int x = scanf("%s", &word);
printf("Length = %d", x);
printf("Word is %s", word);
使用时会发生这种情况:
Enter a string:
123
1
Segmentation Fault
这里发生了什么?为什么这不起作用?我认为用 malloc 分配内存会给它足够的空间,然后 scanf 会将我的话放入变量中?我需要使用 malloc,因为我需要稍后重新分配,以免使用比以后需要更多的内存。
【问题讨论】:
-
int x = scanf("%s", &word);->int x = scanf("%s", word); -
@ChrisTurner 这是一个很好的链接,但你确定这是一个 dupe 吗?
-
@PaulR 我也有一个问题,为什么不需要写
malloc(100*sizeof(char)),因为我们需要一个 100 字符长的字符串? -
@Alan
sizeof(char)按照标准定义为1。
标签: c segmentation-fault scanf