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