String mit Leerzeichen füllen (Tabulator - mässig)
-
Hallo
char[15] string; string = "irgendwas"; cout << string; for (int = strlen(string); i<16 ; i++) { cout " "; } cout "2. Spalte";
Problem erkannt?
strlen() nur für const??
was würde strlen überhaupt zurückgeben? 15 oder 9?
wie kann ich das lösen? charaker Array ist leider vorgegeben.Besten Dank
-
strlen würde 9 zurückgeben.
int nSize = 15; char string[nSize]; sprintf(string, "irgendwas"); cout << string; for (int = strlen(string); i<nSize ; i++) { cout " "; } cout "2. Spalte";
-
Dummy78 schrieb:
Hallo
char[15] string; string = "irgendwas"; cout << string; for (int = strlen(string); i<16 ; i++) { cout " "; } cout "2. Spalte";
Problem erkannt?
strlen() nur für const??
was würde strlen überhaupt zurückgeben? 15 oder 9?
wie kann ich das lösen? charaker Array ist leider vorgegeben.Hast du den Code mal durch einen Compiler gejagt?
mfg
v R
-
virtuell Realisticer schrieb:
Hast du den Code mal durch einen Compiler gejagt?
Sorry!!
es soll ja nur das Problem erklären.ich glaube das grössere Problem ist nicht const sondern unsigned, dies ist die vorgegebene Variable leider auch noch.
Fehlermeldung:cannot convert parameter 1 from 'unsigned char [15]' to 'const char *'
-
Wie sieht denn dein Code konkret aus?
mfg
v R
-
Dann such ich mal zusammen:
typedef struct { LONG ID; UCHAR szString[44]; UCHAR szString2[5]; } myStruct; //andere Klasse: ofstream SCfile ("c:/MyFile.txt"); if (SCfile.is_open()) { myStruct s; SCfile << " '"<<s.szString<< "'"; for (int i = strlen(s.szString);i<15 ;i++) SCfile << " "; SCfile << s.szString2 << "\n"; }
-
Du hast also einen char[] und in diesem steht schon irgendein Wert. Du willst diesem bestehenden Wert aber noch z.B. 5 (oder mehr) Leerzeichen hinzufügen? Habe ich das richtig verstanden?
Wenn ja, dann kannst du das z.B. so lösen:char str[20] = "hello World"; for(unsigned int i = strlen(str); i < 20; ++i) strcat(str, "!");
//Edit: Aber in C++ wäre es sowieso besser die Klasse std::string zu benutzen: z.B.
std::string str("hello World"); for(unsigned int i = str.size(); i < 20; ++i) str += '!';
//Edit2: *UnschuldigPfeif*
Caipi
-
wie initialisiert man eigentlich einen C string?
char string[10]; memset(&string, '\0', sizeof(string)); oder memset(&string, 0, sizeof(string));
also ich würd so ne aufgabe auch lieber mit der Stringklasse der STL machen...
cu
-
Dummy78 schrieb:
...charaker Array ist leider vorgegeben...
-
*autsch*
-
sprintf ist zum formatierten Schreiben, nicht zum kopieren von strings gedacht. (Man denke was passiert, wenn plötzlich mal ein % im String auftaucht...)
-
strcat hängt zwar an den string an, aber trotzdem sollte dort genug freier Speicher sein.
-
man initialisiert ein C Array so
type array[anzahl]={0}; -
0=='\0'
-
-
Gehe jetzt das array einfach von hand durch:
for (int i = 0; i < 15; i++) { if (s.szString[i] == '\0') { while (i<15) { SCfile << " "; i++; } } }
thnx Euch allen!
-
Shade Of Mine schrieb:
*autsch*
2) strcat hängt zwar an den string an, aber trotzdem sollte dort genug freier Speicher sein.Arghhh... peinlich, peinlich. Ich merke doch so langsam, dass ich mich mit den C-String-Funktionen noch garnicht auseinandergesetzt habe [...] (Und ja, manchmal bin ich lernfähig ;))
Danke!
Caipi