我到处寻找我的问题的答案,但我还没有找到我的问题的可靠答案。
我目前正在用 C 编写一个程序,专门针对 UNIX 命令行(我使用 Linux 作为我的开发环境,但我希望这个程序尽可能地可移植)。现在,我有一个提示用户输入的基本 shell。然后用户将输入一个命令,该命令将被相应地处理。这是我到目前为止的代码:
/* Main.c */
int main(int argc, char **argv)
{
while (TRUE)
{
display_prompt();
get_command();
}
return 0;
}
/* Main.h */
void get_command()
{
/*
* Reads in a command from the user, outputting the correct response
*/
int buffer_size = 20;
char *command = (char*) malloc(sizeof(char) * buffer_size);
if (command == NULL)
{
return_error("Error allocating memory");
}
fgets(command, buffer_size, stdin);
if (command[strlen(command) - 1] == '\n')
{
puts("It's inside the buffer.");
}
else
{
puts("It's not inside the buffer.");
}
free(command);
}
我最初的想法是检查\n
字符并查看它是否适合buffer_size
,如果它不realloc()
适合扩展分配的内存的数据。
但是,在我realloc()
的字符串之后,我将如何将剩余的数据添加stdin
到command
?