gpt4 book ai didi

C-从用户那里获取特定的输入

转载 作者:行者123 更新时间:2023-12-02 08:21:53 25 4
gpt4 key购买 nike

我需要从用户那里得到一些特定的输入(用户需要输入“init 3 4 NORTH”,3是X的值(int类型),4是Y的值(int类型),NORTH是direction(enum type) init 是他们必须输入的命令。)如果用户只输入“3 4 NORTH”,程序将不会执行任何操作。

我不允许使用任何 scanf 系列来获取输入。

这是我到目前为止实现的:

char input[10];
printf("Enter the command...\n");
if(fgets(input,sizeof(input),stdin)!= NULL){
if(input[0]=='i' && input[1]=='n' && input[2]=='i' && input[3]=='t'){
int x=atoi(&input[5]);
int y=atoi(&input[7]);
//doing similar things for Direction value.....
}
}

所以我的想法是检查第一个值“init”,并获取两个 int 值,获取方向值。我希望我的解释足够清楚,希望任何人都可以分享他们的想法。

最佳答案

您的方法的一个问题是,如果数字大于 9,它将不起作用。如果您不想使用 scanf你可以阅读带有 fgets 的行然后使用 sscanf提取它的部分。请注意,即使在检查值本身之前,也会检查读数的有效性。

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

int main(void) {
char line[256];
char cmd[32];
char dir[32];
int x;
int y;

if(fgets(line, sizeof line, stdin) == NULL) {
return 1;
}
if(sscanf(line, "%32s%d%d%32s", cmd, &x, &y , dir) != 4) {
return 1;
}

// now check you got valid command, values, and direction
if(strcmp(cmd, "init") != 0) {
return 1;
}
if(x < 0 || x > 99 || y < 0 || y > 99) {
return 1;
}
if(strcmp(dir, "NORTH") != 0) {
return 1;
}

printf("Your command: %s %d %d %s\n", cmd, x, y, dir);
return 0;
}

关于C-从用户那里获取特定的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36397182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com