Segmentation fault: 11 bei String-Vergleich
-
Hallo,
ich muss mich derzeit in der Uni mit C befassen und stehe so nen bisschen auf dem Schlauch. Ich habe ein bisschen Code geschrieben, der erfassen soll, wenn ein A, B oder C auf der Konsole eingegeben wird und gleichzeitig die Häufigkeit mitzählt.
Das hier ist das Programm:
#include <stdio.h> int main(int argc, char *argv[]) { int array[3]; char input; int i; for(i=0; i<3; i++) array[i]=0; do { input = getchar(); if ((strcmp(input, "A"))==0) array[0]++; else if ((strcmp(input, "B"))==0) array[1]++; else if ((strcmp(input, "C"))==0) array[2]++; printf("Anzahl A: %i; Anzahl B: %i; Anzahl C: %i \n",array[0],array[1],array[2]); } while (input != EOF); return 0; }
Wenn ich das jetzt ausführe und ein beliebiges Zeichen eingebe, bekomme ich immer "Segmentation fault: 11" zurückgegeben. Ich hab auch schon gegoogelt und so, aber ich komm nicht drauf. Bin auch absolut nicht neu im programmieren, aber das C will nicht, wie ich will...
Hat jemand einen Tipp?
-
Dein
input
ist kein String.
-
Bei (einzelnen) Zeichen kannst du direkt vergleichen:
if (input == 'A')
"A" ist etwas anderes als 'A'
"0" ist etwas anderes als '0' ist etwas anderes als 0
-
Vielen, vielen Dank!!
Das war mir nicht bewusst. Das Programmiersprachen aber auch immer ihre Eigenheiten haben müssen.
Danke nochmal, das rettet mir halb den Tag.