我创建了两个构成游戏的程序,并且彼此之间正在进行通信,其中一个基本上是一个用户,但我开始构建一个并自己输入第一个程序。
我想输入命令,例如'转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;]
答案 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;
}