Speicherzugriffsfehler



  • char_in=input2[0];
    printf("String nach Eingabe:%s\n",char_in);

    warum ergibt sich aus der zweiten zeiele ein speicherzugriffsfehler?

    vielen dank im vorraus.



  • char_in=input2[0];
    

    Ich wette char_in und input2 sind so definiert:

    char char_in;
    char input2[/quote]
    

    Mit

    printf("String nach Eingabe:%s\n",char_in);
    

    versucht printf char_in als Nullterminierten String auszugeben. Oder anders
    gesagt den Inhalt von char_in zu dereferenzieren. Das geht aber nicht, da char_in keinen Zeiger enthält sondern nur eine simple char Variable ist.

    Was hast du eigentlich vor?



  • Oops vertippt.

    char_in=input2[0];
    

    Ich wette char_in und input2 sind so definiert:

    char char_in;
    char input2[128]
    

    Mit

    printf("String nach Eingabe:%s\n",char_in);
    

    versucht printf char_in als Nullterminierten String auszugeben. Oder anders
    gesagt den Inhalt von char_in zu dereferenzieren. Das geht aber nicht, da char_in keinen Zeiger enthält sondern nur eine simple char Variable ist.

    Was hast du eigentlich vor?



  • ich will lediglich ein buchstaben, also ein (char_in) einer funktion uebergeben
    der char wird hierbei aus der eingabe ausgelesen und bis auf das erste zeichen gekuerzt.

    char input[80];
    char input2[2];
    char char_in;

    fgets(input, 80, stdin);
    strncpy(input2,input,1);
    input2[1]='\0';
    char_in=input2[0];
    printf("vor ausgabe\n");
    printf("String nach Eingabe:%s\n",input2);
    printf("nach ausgabe\n");



  • wie kann ich das denn ganeu machen mit dem uebergeben, und was hat das genau mit dme zeiger auf sich, also wasn zeiger is weiss ich schon, aber net wie prinf in zusammenhang mim zeiger steht



  • hansi87 schrieb:

    wie kann ich das denn ganeu machen mit dem uebergeben, und was hat das genau mit dme zeiger auf sich, also wasn zeiger is weiss ich schon, aber net wie prinf in zusammenhang mim zeiger steht

    mit dem format "%s" glaubt printf es muss einen string ausgenen. in c sind strings arrays von char. der name eines arrays wird in c zu einem pointer auf das erste zeichen. printf glaubt also wenn du "%s" angibst es muss einen zeiger dereferenzieren. Wenn du jetzt nur ein einzelnes zeichen angibst krachts.

    Ein einzelnes Zeichen gibst du mit

    printf("das erste zeichen ist: %c\n",char_in);
    

    aus.
    Kurt



  • aso 🙂
    ok kappiert
    danke vielmals


Anmelden zum Antworten