在C中读取不同数量的参数

时间:2015-11-12 18:14:10

标签: c parameters logic scanf

输入看起来像这样:

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个)。

1 个答案:

答案 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
                }
            }        
        }
    }