string initialisieren?
-
Bei folg. code funktioniert alles wie es soll. Lasse ich aber bei der Deklaration von char PfadDatName[30] die Zuweisung "" weg, sehe ich bei der printf-Ausgabe, das er 3 Zeichen vor dem Laufwerksbuchstaben setzt. Wird der Speicher beim anlegen einer Variablen nicht automatisch auf 0 gesetzt?
#define Pfad "C:\\Temp\\" #define Extension ".txt" . . char DatName[12]; char PfadDatName[30]=""; . printf("\n\n\n\t\tGeben Sie den Dateinamen an: "); fflush(stdin); gets(DatName); strcat(DatName,Extension); strcat(PfadDatName,Pfad); strcat(PfadDatName,DatName); pfile=fopen(PfadDatName,"wb"); //pfile=fopen("c:\\Temp\\Test.txt","w"); printf("%s",PfadDatName);
-
plc_tippser schrieb:
Wird der Speicher beim anlegen einer Variablen nicht automatisch auf 0 gesetzt?
nee, nicht bei normalen lokalen variablen, also bei denen, die auf dem stack liegen (auto-variablen). bei denen, die im daten-segment oder gar im rom-segment liegen (globale variablen oder lokale static-variablen) kannste von initialisierung mit 0 ausgehen.
-
Sprich, das "" ist schon ok?
Ich habe noch ein ähnliches Problem. Wenn ich erst z.B. "Mercedes_Benz" eingebe und beim nächsten Umlauf "BMW", dann speichert er mir "BMW des_Benz". Deshalb führe ich erst das strcpy aus. Ist das auch OK oder geht das alles noch eleganter?
strcpy(Auto.Typ," "); printf("\n\n\n\t\tGeben Sie den Fahrzeugtyp ein: "); fflush(stdin); scanf("%20s",Auto.Typ);
Grüße pt
-
"" statt "[viele Leerzeichen]" reicht auch, da er eine 0 an die erste (0.) Position schreibt und jegliche Ausgaben eines Strings nur bis zum ersten 0-Zeichen ('\0') gehen.
MfG SideWinder
-
fflush(stdin); ist nicht definiert
siehe FAQ
-
SideWinder schrieb:
"" statt "[viele Leerzeichen]" reicht auch, da er eine 0 an die erste (0.) Position schreibt und jegliche Ausgaben eines Strings nur bis zum ersten 0-Zeichen ('\0') gehen.
MfG SideWinder
Das hatte ich schon probiert, gerade aber extra noch einmal. Bei der 2. Eingabe steht dann schon BMW edes_Benz in der Datei.
@shade
ich habe Deinen Beitrag schon gesehen, steht auch noch auf meiner Inputliste, aber wenn es solche Störungen auslöst, dann kurze Info nochmal, dann ziehe ich´s natürlich vor
-
Möglicherweise liegt es an %20s, dass du nach BMW noch was stehen hast.