Der Code, den ich schrieb, soll die Menge von a, c, t und g in einer Char-Zeiger-Liste zählen. Wenn dann das eingegebene Zeichen kein a, c, t oder g ist, dann soll es den ungültigen Buchstaben in die Zeichenliste invalidBase einfügen. Stattdessen, wenn ich die Daten agtcpoop gebe, druckt es ungültige Basis aus: aber die Zeichen sind nicht dort, wenn es poop ausdrucken soll. Bitte helfen Sie! Hier ist der Code:Verschachtelte if-else-Anweisungen geben mir Probleme
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);
}
Meine Vermutung jetzt nach mehr darüber nachzudenken, ist, dass ich zu dereferenzieren invalidBase in der else-Anweisung müssen? Mit einem Zeiger? So wie es in der else-Anweisung sein soll * invalidBase = * p; Dann inkrementieren Sie invalidBase statt j ++. Ist das nahe? ** Ich denke, das ist Weg, nachdem ich Mikeks REPLY! ** – Cole
Nein, Sie können 'invalidBase' nicht erhöhen, weil es ein Array ist und wird automatisch in einen Zeiger, die ID nicht ein Lvalue konvertiert, wenn es verwendet wird Ausdrücke mit Ausnahme von Operanden von 'sizeof' oder unary' & 'operator. – MikeCAT
Sie können anstelle dieser vielen 'if-else'-Anweisungen' switch' Anweisungen verwenden. – MikeCAT