-3

我很难想出下面的代码块并确保它有效。

我有三个可能的输入词,分别称为 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 附近;这一切都在一个循环中)然后将 word 写入 TextA。但是,如果 TextA 中确实包含某些内容,则将 word 写入 TextB。如果 TextB 中有内容,请将 TextC 设置为 word。我可以将单词重新复制到正确的位置,因为只有 3 个选项。

4

1 回答 1

1

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

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

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

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

如果 TextA 中没有任何内容,则将 word 写入 TextA
如果 TextA 中确实有某些内容,则将 word 写入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
于 2013-02-08T20:11:25.007 回答