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

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

最佳答案

将空格替换为空。那么这些可以被认为是单独的字符串。 类似于(假设输入行称为 char * input):

    #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
                }
            }        
        }
    }

关于c - 在C中读取不同数量的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33678429/

相关文章:

java - NoElementException 但我打印元素并得到预期结果

java - Else If 逻辑等价

c - C 中的牛顿·拉弗森

c - 使用#define 比创建函数有什么好处?

javascript - 将参数传递给angularjs中的ng-click函数

java - 在Java中,是否有某种编码方法比过多的if..else语句更好?

c - 在 C 中的编译时查找 100 个结构的最大大小

c - 如何枚举 IBM WebSphere MQ 的队列管理器的本地队列?

Java公共(public)变量多个类

ios - Worklight-如何在Objective-C中的适配器过程调用中传递参数?