Fgets切断了一些stdin

时间:2013-10-23 16:13:46

标签: c string buffer stdin fgets

我对fgets有一个奇怪的问题。

如果命令如下:$ test.txt,fgets完全收到它没有问题。 如果命令是这样的:$ ls -l> test.txt,结果如下:

Buffer: ls -l > test.t

关闭xt,我发现了分段错误。

这是我的代码:

void ReadCommand(char *buffer, size_t len)
{
    if(fgets(buffer, len, stdin) != NULL)
        buffer[strlen(buffer) - 1] = '\0';
}

调用此方法的代码:

int main(int argc, char *argv[])
{
        ...
    char cmd_line[MAX_ARG_LEN]; //MAX_ARG_LEN = 16
    size_t len = sizeof(cmd_line);

    /* Read Command Line */
    ReadCommand(cmd_line, len);
        ...

}

int main(int argc, char *argv[]) { ... char cmd_line[MAX_ARG_LEN]; //MAX_ARG_LEN = 16 size_t len = sizeof(cmd_line); /* Read Command Line */ ReadCommand(cmd_line, len); ... }

这些时期表示前后的东西。但它们与缓冲区或函数无关。

我不知道为什么会这样。非常感谢您的帮助!

0 个答案:

没有答案