#define MAX_COMMAND_LEN 32
char command[MAX_COMMAND_LEN];
while (1) {
if (fgets(command, MAX_COMMAND_LEN, stdin) == NULL) {
perror("Error: standard function fgets has failed\n");
break;
}
if (command[strlen(command) -1] != '\n') {
printf("Error: command length must be less than or equal to 30 characters\n");
continue;
}
else {
printf("Error: command not found\n");
}
}
quit();
処理できない問題がいくつかあります。
- を押すと、ループが停止し、メッセージEnterが出力されません。
command not found
- 30 文字を超えるサイズのコマンドを入力する
command not found
と、メッセージとcommand length must be less than or equal to 30 characters
メッセージの両方が出力されます。 - 64 サイズのコマンドを入力すると、長さ 30 のメッセージの 2 倍が出力されます。
入力を 30 の長さのセグメントに分割し、それぞれを入力していると思いますが、どうすればそれを克服できますか? をフラッシュしようとしましstdin
たが、機能しません。残りの入力を取り除きたい。これらの問題をすべて克服するにはどうすればよいですか?