我无法在下面的代码块中思考它并确保它能够正常工作。
我有三个可能的输入词,称为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中没有任何东西(第一次围绕AKA,当i = 1时;这一切都在循环中),然后将字写入TextA。但是,如果TextA中确实包含某些内容,请将单词写入TextB。如果TextB中有内容,请将TextC设置为word。我可以将这些单词重新复制到正确的位置,因为只有3个选项。
答案 0 :(得分:1)
好的,你在循环中这样做,但是所有三个检查都有i==1
,这意味着你只会进入其中一个块。 (当i
为1时)。
通常情况下,当您在整个if
/ else if
条件块中进行相同的检查(逻辑AND)时,您可以将其拉出块:
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