私のコマンド・インタープリタの入力を読み込んでいる間に私のロジックを正当化しようとしています。私が遭遇している問題はstrstr()
です"%s"
を針として受け入れていないか、haystackを文字列として扱い、そのためにスペースや改行などを無視しています。Cバッファ内の複数のスペースで区切られた入力を調べる
char command[4] = "";
char arg1[512] = "";
char arg2[512] = "";
char tmp[1029] = "";
char buffer[BUFFERSIZE];
memset(buffer, '\0', BUFFERSIZE);
while(fgets(buffer, BUFFERSIZE, stdin) != NULL){
strcpy(command, "");
strcpy(arg1, "");
strcpy(arg2, "");
strcpy(tmp, "");
if(strstr(buffer, "%s\n") != NULL)
sscanf(buffer, "%s", command); // 0 arguments
if(strstr(buffer, "%s %s") != NULL)
sscanf(buffer, "%s", arg1); // 1 argument
if(strstr(buffer, "%s %s %s") != NULL)
sscanf(buffer, "%s", arg2); // 2 arguments
printf("%s %s %s\n", command, arg1, arg2);
}
何でI入力:
- コム
- ヴァルargument1val
- cmdはarg1がarg2val
- など
私はいつものために空の文字列で終わりますcommand
,arg1
、およびarg2
。
私の入力は、常に1つの文字列または最大3つのスペースで区切られた文字列とそれに続く改行文字です。
これは私が考えようとしていたロジックとまったく同じでした!ご協力いただきありがとうございます! –