thl*_*ood 1 c linux stdio segmentation-fault
鉴于以下计划:
#include <stdio.h>
int main()
{
char buf[1024];
scanf("%s", buf);
printf("----> %s", buf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
执行如下:
grep ....| a.out
要么
echo ....| a.out
我收到一个Segmentation fault错误.有谁能解释为什么?
无论您是回音还是贪婪,必须包含超过1023个字符.(对于null终止符,1024 - 1.)
而不是使用scanf,使用fgets和指定大小.或者,使用scanf但指定字段长度.你可以做到scanf("%1023s", buf);.如果有更多可用字节,您可以再次执行此操作以阅读其余字节.
鉴于您的测试输入,您不应该收到段错误.我只是在本地尝试过,它工作正常.如果您使用的是Linux,那么根据您的路径配置方式a.out而不是编写./a.out,您可能正在运行错误的程序(a.out在bin文件夹中某种类型?)