Ich arbeite aus einem Lehrbuch lernen c. Eine der Übungen ist das Kopieren des Codes aus dem Buch, um mit scanf zu demonstrieren. Es wird Benutzereingabe für wie oft etwas gedruckt werden soll. Mit einer for-Schleife zum Ausdrucken der Zeichenfolge scheinen die letzten Zeichen der Zeichenfolge durcheinandergewürfelt zu sein. Bitte sehen Sie unten und jede Hilfe wäre willkommen. Bisher habe ich versucht, das '\ n' zu entfernen, um zu sehen, ob es das Problem verursacht. Ich habe die Zeichenfolge vor der Schleife ausgedruckt, um zu sehen, ob es ein Fehler mit der Zeichenfolge ist, aber es scheint außerhalb der Schleife gut zu funktionieren. Code unten:string druckt nicht richtig in for loop aber druck OK vor
#include <stdio.h>
#include <string.h>
int main(void)
{
char message[10];
int count, i;
strcpy(message, "Hello, World!");
printf("Repeat how many times? ");
scanf("%d", &count);
printf("%s\n", message);
for(i = 0; i < count; ++i)
{
printf("%3d - %s\n", i, message);
}
return 0;
}
Ergebnisse:
Repeat how many times? 3
Hello, World!
0 - Hello, Wor
1 - Hello, Wor
2 - Hello, Wor
Vielen Dank im Voraus.
Out-of-bounds schreiben, nicht definiertes Verhalten. – EOF
Sie schreiben 14 Zeichen (13 plus Nullbyte) in ein Array, das nur 10 enthält. Sie beschädigen den Stapel und alles danach ist ein undefiniertes Verhalten. Achte auf mehr Aufmerksamkeit! –
Es ist nicht wirklich gültig, * undefined Verhalten zu erklären *, aber es kann zufriedenstellend sein, wenn es passt. * Möglicherweise * wenn du anfingst, 'i' zu benutzen, korrumpierte es die Zeichenkette, die wegen unzureichender Länge in' i' übergelaufen war. –