如何获取不同大小的用户命令输入并将其放入数组

时间:2016-09-19 06:17:58

标签: c

我创建了两个构成游戏的程序,并且彼此之间正在进行通信,其中一个基本上是一个用户,但我开始构建一个并自己输入第一个程序。

我想输入命令,例如'转d1d2d3d4d5d6' (其中di是骰子卷),' rerolled d1d2d3d4d5d6'等等,这是一堆命令。我希望我的程序叫做播放器来接受这些命令,他们会用它做点什么。

首先,我尝试使用stdin获取输入并将其放入数组中,然后检查数组以查看它是否是有效命令。但是我似乎无法正确使用fgetc和数组。我目前所做的只是取输入,放入数组并打印出来。

我实际上并不希望它是128个大小的阵列,我希望它完全可调,但我不知道如何用fgets做到这一点。 if循环检查它的NULL是否是为了查明一个数组是否为空,但是它确实是错误的,不知道该放置什么。

while(1){
    int i = 1;
    char* command[128];
    fgets(command, 128, stdin);
    for (i=0; i < 128; i++){
        if (command[i] == NULL){
            printf("%c\n", command[i]);
        }
    }

    return 0;
}

所以具体来说,我现在的主要目标是采取诸如“淘汰”这样的命令。来自用户和命令成为命令= [&#34;被淘汰&#34;,&#34; p&#34;]

1 个答案:

答案 0 :(得分:0)

示例代码:

#include <stdio.h>
#include <string.h>

int main(void) {
    while(1){
        char command[128];
        if(NULL == fgets(command, sizeof command, stdin))//or use getline
            break;
        if(strchr(command, '\n') == NULL){//Too long
            printf("Too long\n");
            while(getchar() != '\n')
                ;//clear input
            continue;
        }
        char *operation = strtok(command, " \t\n");
        if(operation == NULL){
            printf("Empty command\n");
            continue;
        }
        char *operand = strtok(NULL, " \t\n");;
        if(operand == NULL){
            printf("Empty operand\n");
            continue;
        }
        printf("operation:%s\noperand:%s\n", operation, operand);
        char *commands[] = {operation, operand};
        //do stuff
    }
    return 0;
}