输入看起来像这样:
AND 1 0 2
OR 3 1 4
XOR 5 1 3
ENEE140 10 7 8 9
NOT 6 11
其中每行中的第一个参数是逻辑运算符,后面的数字是门。我想知道这些参数的最佳阅读方式是什么,因为我不能只scanf("%s %d %d %d")
,因为有些运算符(ENEE140)有超过3个整数参数(它有4个)。
答案 0 :(得分:0)
用null替换空格。然后可以将这些视为单独的字符串。 类似的东西(假设输入行被称为char *输入):
#include <stdio.h>
#include <stdlib.h>
int main()
{
char input[1000];
printf("Enter line, or press return when finished\n");
for(;;)
{
fgets(input, 999, stdin);
if (*input == '\n')
break;
char *begin = input;
char *end = input;
// remember string begin and end points
while (*end) ++end;
// replace spaces with null
for (;*begin;++begin) {
if (*begin == ' ') {
*begin = 0;
}
}
// Now parse each string
for (begin = input; begin < end; ++begin) {
if (begin == input) {
printf("Command: %s\n", begin);
} else {
int value = atoi(begin);
printf("Value: %d\n", value);
}
while (*begin) {
++begin; // skip to null
}
}
}
}