Entwickler-Ecke

Off Topic - C: String ausgeben


Jakob_Ullmann - Di 13.04.10 16:19
Titel: C: String ausgeben
Hallo!

Ich habe nun diesen Samstag Ubuntu installiert, mir CodeLite heruntergeladen und wollte nun mal vernünftig in C++ programmieren, wollte jedoch erstmal mit C anfangen. Ich habe jetzt schon ein paar Progrämmchen geschrieben, die mit Zahlen was machen, aber Strings gehen irgendwie noch nicht so. Ich wollte also folgendes compilieren:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
int main(void)
{
    char myname[5]; // erstmal mit Begrenzung ausprobieren
    printf("Name: \n");
    scanf(myname);
    printf("Willkommen %s", myname); // hier kommt der Fehler: Es gäbe kein String-Literal oder so
    return 0;
}


Da wollte ich mal fragen, wie das korrekterweise sein müsste, hier gibt es doch sicher viele, die sich auch mit C auskennen.


Jakob_Ullmann - Mi 14.04.10 18:22

OK, ich sehe gerade, dass das scanf(&myname) als Pointer sein muss. Aber trotzdem klappt das nicht. Keiner eine Idee?


BenBE - Mi 14.04.10 21:59

Bei dem Scanf fehlt das Muster für das Einlesen. Beachte, dass scanf leicht zu Buffer-Overflows führen kann. Das F in scanf steht für Formatstring; und genau der fehlt.


Chemiker - Mi 14.04.10 23:25

Hallo Jakob Ullmann,


Quelltext
1:
scanf("%s", myname);                    

dann sollte es eigentlich funktionieren.

Bis bald Chemiker


Jakob_Ullmann - Do 15.04.10 15:26

Hm, darauf hätte man doch eigentlich kommen können (naja, wie gesagt, hab bis jetzt nur was mit Zahlen gemacht, da will er ja komischerweise keinen Format-String, zumindest bei int und float)... Vielen Dank!