itoa - Integer in Chararray ergänzen
-
Ich beschäftige mich seit langem mal wieder mit C. Jetzt habe ich folgenden Code:
#define SIZE 30; static char buffer[SIZE]; int client(char *buffer) { int spalte = 4; strcpy(buffer, "59"); strappend(buffer, (char*)spalte); printf("%s", buffer); return 1; } printf("Liefert ergebnis: %i, client(buffer));
Jetzt erwarte ich die Ausgabe "594", bekomme aber "59" und ein "komisches Char", was ich nicht deuten kann.
Kann mich jemand aufklären, ich sitz da schon seit gestern Abend dran und weiß nicht was ich falsch mache. (Wäre auch sehr dankbar!)
-
Was soll strappend machen?
Deine Funktion liefert immer 1, was soll der Sinn sein?
-
Zeile 5:
char spalte[] = "4";
oder Zeile 6 und 7
sprintf(buffer,"%s%i","59",spalte);
Es gibt einen Unterschied zwischen Zahlen, Zeichen und Strings. Lies nochmal in deinem Buch nach.
char i = 4; // Zahl char z = '4'; // Zeichen char s[] = "4"; // String
-
Meine strappend:
void strappend(char *org, char *toappend) { int leno = strlen(org); if(leno>0 && org[leno-1]=='\n') { org[leno-1]='\0'; } strcat(org, toappend);
die strappend überprüft nur, ob das letzte Zeichen ein Absatz ist und entfernt ihn ggf. und hängt danach den String einfach an.
Das sollte doch eigentlich gehen oder nicht? Ich muss doch ein Integer auch einem Array anhängen können oder nicht? Ich bin etwas verwirrt.
-
DirkB schrieb:
Zeile 5:
char spalte[] = "4";
oder Zeile 6 und 7
sprintf(buffer,"%s%i","59",spalte);
Es gibt einen Unterschied zwischen Zahlen, Zeichen und Strings. Lies nochmal in deinem Buch nach.
char i = 4; // Zahl char z = '4'; // Zeichen char s[] = "4"; // String
Das mit sprintf funktioniert übrigens gut
Aber wie hänge ich trotzdem ein Integer "manuell" also selbst an?
-
TTP schrieb:
Das mit sprintf funktioniert übrigens gut
Aber wie hänge ich trotzdem ein Integer "manuell" also selbst an?Du musst ans Ende vom String schreiben. Wobei ein String immer Nullterminiert ist.
sprintf(buffer+strlen(buffer),"%d",spalte);
Funktioniert aber nur wenn in buffer schon was drinsteht.
itoa ist nicht Standard von C.
Wenn du also ohne sprintf auskommen willst, musst du dir was eigenes machen.
Schau die das Kapitel Arrays/Felder/Vektoren noch mal an.
-
Danke für die schnelle Hilfe (an alle)