如果字符输入正确,C程序应该启动

如果字符输入正确,C程序应该启动,c,C,我是一名新的编码人员,我有一个任务,如果char输入正确,并且有四种意见支持输入,则应该进一步执行该任务:。 如果输入是这四种输入之一,则程序应继续运行。 我已经试过了,但问题是我总是在程序开始之前输入所有四个字符。 有人有解决办法吗 compare_j = strcmp(str_1, input) compare_N = strcmp(str_3, input) ... ... while (compare_j != 0|| compare_N != 0 || compare_j != 0

我是一名新的编码人员,我有一个任务,如果char输入正确,并且有四种意见支持输入,则应该进一步执行该任务:。 如果输入是这四种输入之一,则程序应继续运行。 我已经试过了,但问题是我总是在程序开始之前输入所有四个字符。 有人有解决办法吗

compare_j = strcmp(str_1, input)
compare_N = strcmp(str_3, input)
...
...

 while (compare_j != 0|| compare_N != 0 || compare_j != 0 || compare_J != 0)
    {
      printf("wrong input!\n");
      scanf("%s", &input[0]);
    }

您的程序可能有几个其他错误,但您可以尝试以下方法:

while (compare_j != 0 && compare_N != 0 && compare_j != 0 && compare_J != 0)

尝试使用do-while循环,移动输入,比较内部内容。你的退出条件也是错误的。您正在检查所有的
char
s是否同时匹配,这是不可能的

您正在检查两次
compare\u j
,而不是
compare\n

int compare_j;
int compare_J;
int compare_n;
int compare_N;

do {
    // Read input
    scanf("%s", &input[0]);

    // Compare
    compare_j = strcmp(str_1, input);
    compare_N = strcmp(str_3, input);
    ..
    ..

}while(compare_n == 0 || compare_N == 0 || compare_j == 0 || compare_J == 0);

这样,您可以检查这些字符是否匹配,如果不匹配,则退出。同样,在循环中移动输入/比较函数,您不需要写两次。

您没有在循环中更改任何
compare.*
变量的值您也在检查
compare.\j
的结果两次,可能永远不会检查小写的“n”。同样,正如建议的注释一样,您可能应该重新计算loopdo中的strcmp(…),while确实更好,但while()条件是错误的