%s", buf)-6ren">
gpt4 book ai didi

c - 管道段错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:03 25 4
gpt4 key购买 nike

给定以下程序:

#include <stdio.h>

int main()
{
char buf[1024];
scanf("%s", buf);
printf("----> %s", buf);
return 0;
}

执行如下:

grep ....| a.out

回声....| a.out

我收到一个Segmentation fault 错误。谁能解释一下为什么?

最佳答案

无论您回显或 grepping 什么,都必须包含超过 1023 个字符。 (1024 - 1 表示空终止符。)

不使用 scanf,而是使用 fgets 并指定大小。或者,使用 scanf 但指定字段长度。您可以执行 scanf("%1023s", buf);。如果有更多可用字节,您可以随时再次执行此操作以读取其余部分。

鉴于您的测试输入,您不应收到段错误。我只是在本地试了一下,效果很好。如果你在 Linux 上,因为你写的是 a.out 而不是 ./a.out,根据你的路径配置方式,你可能运行了错误的程序(一些在你的 bin 文件夹中有点 a.out?)

关于c - 管道段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com