私が書いたコードは、charポインタリストのa、c、t、およびgの数を数えることになっています。次に、入力されたcharがa、c、t、またはgでない場合、無効な文字をcharリストinvalidBaseに追加することになっています。代わりに、データagtcpoopを入力すると無効なベースが表示されますが、文字列が表示されない場合は、その文字は表示されません。助けてください!ここでは、コードは次のとおりネストされたif-elseステートメントが私に問題をもたらしています
void countBase(char *p)
{
int aCount = 0, cCount = 0, tCount = 0, gCount = 0;
char invalidBase[100];
int i, j=0;
while(*p != '\0')
{
if(*p == 'A' || *p == 'a')
{
aCount++;
}
else if(*p == 'C' || *p == 'c')
{
cCount++;
}
else if(*p == 'T' || *p == 't')
{
tCount++;
}
else if(*p == 'G' || *p == 'g')
{
gCount++;
}
else
{
invalidBase[j] = *p;
}
j++;
p++;
}
for(i = 0; invalidBase[i] != '\0'; i++)
{
printf("Invalid Base: %c\n", invalidBase[i]);
}
printf(" A: %i\n C: %i\n T: %i\n G: %i\n", aCount, cCount, tCount, gCount);
}
私の推測では、今、それについての詳細を考えた後、私は他の文で間接参照invalidBaseに必要があるということですか?ポインタを使って?そのようなelse文で* invalidBase = * p; j ++の代わりにinvalidBaseをインクリメントします。これは近いですか? **私はMIKECATS REPLYを実行した後にこの方法が間違っていると思っています!** – Cole
いいえ、 'invalidBase'は配列なのでインクリメントすることはできませんし、ivalは自動的に変換されます。 'sizeof'オペランドまたは単項'& '演算子以外の式 – MikeCAT
これらの多くの 'if-else'ステートメントの代わりに' switch'ステートメントを使いたいかもしれません。 – MikeCAT