我对 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);
...
}
句号表示之前和之后都有东西。但它们与缓冲区或函数无关。
我不知道为什么会这样。非常感谢您的帮助!