It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
                            
                        
                    
                
                                7年前关闭。
            
                    
我在考虑以下代码块并确保它能正常工作时遇到麻烦。

我有三个可能的输入词,分别称为A,B和C。

    //The following if-else block sets the variables TextA, TextB, and TextC to the    appropriate Supply Types.
if(strcmp(word,TextB)!=0 && strcmp(word,TextC)!=0 && i==1 && strcmp("",TextB)!=0) {
     strcpy(TextA,word);
}
else if(strcmp(word,TextA)!=0 && strcmp(word,TextC)!=0 && i==1 && strcmp("",TextC)!=0) {
  strcpy(TextB,word);
}
else if(strcmp(word,TextB)!=0 && strcmp(word,TextA)!=0 && i==1) {
  strcpy(TextC,word);
}


我想发生的事情是,如果TextA中没有任何内容(当i = 1时第一次在AKA周围;这都是循环的),然后将单词写入TextA。但是,如果TextA中确实包含某些内容,请向TextB中写入单词。如果TextB中包含某些内容,请将TextC设置为word。同样,我可以将单词重新复制到正确的位置,因为只有3个选项。

最佳答案

好的,您正在循环执行此操作,但是所有三个检查都具有i==1,因此这意味着您只会一次进入这些块之一。 (当i为1时)。

通常,当您在整个if / else if条件块中进行相同的检查(逻辑与)时,只需将其从块中拉出即可:

if (i == 1){
   //do all the other checks
}


但是考虑一下这是否是您真正想要做的...根据您对要解决的问题的描述,我认为您根本不需要检查i
如果您阅读了在此SO问题中写的内容,那么代码实际上就是从中得出的:


  如果TextA中没有任何内容,则将字写入TextA
  如果TextA中确实有东西,请向TextB中写入单词
  如果TextB中包含某些内容,请将TextC设置为word


因此,遵循该逻辑的代码:

if (strlen(TextA) == 0)       // if TextA has nothing in it,
    strcpy(TextA, word);      // then write word to TextA
else if (strlen(TextB) == 0)  // else (if TextB doesn't have anything in it)
    strcpy(TextB, word);      // write word to TextB
else                          // if TextA and TextB already have something
    strcpy(TextC, word);      // then write word to TextC

10-07 15:33