0
char * input = (char*)malloc(256);

scanf("%s", input);

段错误。为什么?我在 C 中使用字符串时遇到了很多麻烦,但我觉得一切都在这里完成。我什至遵循了一个 100k+ SO 用户的例子。

4

2 回答 2

2

该错误可能由以下原因引起:

  • malloc() 未能分配任何内存,请对照 NULL 检查结果。
  • 由于 scanf 的缓冲区溢出,超过 256 个字符。
  • 通过忘记包含<stdlib.h>然后对 malloc 的结果进行类型转换。更多信息在这里
于 2012-10-07T18:40:48.187 回答
0

您需要确保缓冲区足够大,包括足够的空间用于字符串末尾的尾随 NUL(0 字节)。否则,您会遇到可能导致段错误的缓冲区溢出。

于 2012-10-07T18:40:16.580 回答