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. 😉


Anmelden zum Antworten