我一直在为我的命令解释器读取输入内容时尝试证明我的逻辑合理。我遇到的问题是strstr()
或者不接受"%s"
作为针或正在将整个干草堆视为一个字符串,并且因此无视空格,换行符等。在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);
}
不管我输入:
- COM
- VAL argument1val
- CMD ARG1 arg2val
- 等
我总是最后空字符数组command
,arg1
和arg2
。
我的输入将始终是单个字符串或多达三个空格分隔的字符串,后跟一个换行符。
这正是我想要考虑的逻辑!谢谢你的帮助! –