char * input = (char*)malloc(256);
scanf("%s", input);
赛格故障。为什么?我在 C 中的字符串上遇到了很多麻烦,但我觉得一切都在这里完成。我什至遵循了 100k+ SO 用户的示例。
该错误可能是由以下原因引起的:
- malloc() 无法分配任何内存,请根据 NULL 检查结果。
- 通过 scanf 的缓冲区溢出,超过 256 个字符。
- 忘记包含
<stdlib.h>
然后对 malloc 的结果进行类型转换。更多信息在这里。
您需要确保缓冲区足够大,包括为字符串末尾的尾随 NUL(0 字节)提供足够的空间。否则,会出现缓冲区溢出,这可能会导致段错误。