0

我对 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);
        ...

}

句号表示之前和之后都有东西。但它们与缓冲区或函数无关。

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

4

0 回答 0