Dies wurde beantwortet, danke für die Hilfe.Mehrere aufeinanderfolgende strcpy(), Display enthält Bits von jedem nächsten strcpy()
Antwort
diese 2 Linien zeigen, was falsch läuft:
folgende Zeile deklariert ein Array von char cP1_Move2_Name
mit „PFUND“ initialisiert. Die Größe dieses Arrays ist genau 6 Bytes, das sind die 5 Zeichen von "POUND" plus eins für den NUL-Terminator (Strings werden durch ein NUL-Zeichen abgeschlossen, lesen Sie das Kapitel in Ihrem C-Lehrbuch für weitere Details):
char cP1_Move2_Name[] = "POUND";
Jetzt in der folgenden Zeile kopieren Sie "EARTHQUAKE" in das Array cP1_Move2_Name
. Für „ERDBEBEN“ müssen Sie 11 Bytes, aber wie bereits erwähnt, die Größe des cP1_Move2_Name
Array nur 6.
strcpy(cP1_Move2_Name,"EARTHQUAKE");
ist Also, was ist passiert, dass mehr Bytes kopiert werden, als Platz vorhanden ist, so dass einige andere Speicher werden überschrieben werden und Sie können alle möglichen Probleme erfahren.
Um das Programm zu korrigieren, können Sie Ihr Array mit einer vorgegebenen maximalen Größe deklarieren, um sicherzustellen, dass immer genügend Speicherplatz vorhanden ist.
#define MAXSTRINGLENGTH 100
...
char cP1_Pokemon_Name[MAXSTRINGLENGTH] = "POKEMON";
char cP1_Move1_Name[MAXSTRINGLENGTH] = "TACKLE";
char cP1_Move2_Name[MAXSTRINGLENGTH] = "POUND";
...
etc.
Oh, das macht mehr Sinn. Ich bin daran vorbeigelaufen, um die Länge der Zeichenfolge zu definieren, aber ich tat es nicht Verstehen und erkennen und es ist Implikationen Programmieren ist sicher eine Menge Arbeit hahaha Jetzt muss ich nur herausfinden, warum 5 als 69 ausgedruckt wird. –
- 1. Speicherzuordnung von String literal strcpy
- 2. strcpy im Array von Strings
- 3. Segmentierungsfehler beim Aufruf von strcpy
- 4. strcpy() funktioniert nicht
- 5. strcpy Crashes C Programm
- 6. Segmentation Fault in strcpy()
- 7. strcpy gibt seg Fehler
- 8. strcpy gibt mir Segmentierungsfehler
- 9. ret2libc strcpy funktioniert nicht
- 10. strcpy mit Strings Array
- 11. String Zeiger und strcpy
- 12. Strcpy() Array-Deklaration?
- 13. C - strcpy() und char
- 14. c strcpy ein Dateideskriptor
- 15. mit strcpy() mit strtok
- 16. Fehler bei strcpy mit
- 17. malloc und strcpy Interaktionen
- 18. C/C++ strcpy unbehandelte Leseverstoß
- 19. Ist strcpy gleichbedeutend mit strcpy_s
- 20. Alternative für Strcpy in C++
- 21. strcpy auf einem dynamischen Array
- 22. Probleme mit strcpy und strcat
- 23. Überlappung zwischen strcpy und Memcpy
- 24. Unterschied zwischen 'strcpy' und 'strcpy_s'?
- 25. strcpy-sse2-unaligned.S nicht gefunden
- 26. Strcpy keinen zugewiesenen Zeichenfeld kopieren
- 27. Was ist in Java strcpy?
- 28. inkompatiblen Typ für Argument 2 von 'strcpy'
- 29. Verwendung von strcpy mit Zeigern zu Zeichen
- 30. C strcpy Array von String-Zeigern
Bitte geben Sie eine [MCVE]. Nicht viele Leute werden Ihren gesamten Code durchsehen müssen, um Ihren Fehler zu finden. – Kevin
tl; dr Sind Sie sicher, dass Sie genügend Platz für alle Strings reserviert haben? –
Nicht im Zusammenhang mit Ihrem Problem, aber mit Structs und Arrays können Sie wahrscheinlich die Größe Ihres Programms um mindestens einen Faktor 4 reduzieren. –