これは、すべての助けに感謝に答えてきました。連続した複数のstrcpy()、ディスプレイは、すべての次のstrcpy(のビットが含まれています)
-1
A
答えて
2
これらの2行は、間違って何が起こっているかを示しています。ラインに続き
は「POUND」で初期化された文字cP1_Move2_Name
の配列を宣言します。この配列のサイズはちょうど6バイトです。つまり、 "POUND"の5文字とNULターミネータの1文字です(文字列はNUL文字で終了します)。
char cP1_Move2_Name[] = "POUND";
次の行では、配列「cP1_Move2_Name
」に「地震」をコピーします。 「地震」のためには11バイトが必要ですが、とは前に述べたように、だから何が起こることはより多くのバイトがスペースがあるよりも、コピーされるということですcP1_Move2_Name
配列のサイズが唯一の6
strcpy(cP1_Move2_Name,"EARTHQUAKE");
ですので、いくつかの他のメモリだろう上書きされ、あらゆる種類の問題が発生する可能性があります。あなたは、常に十分なスペースがあることを確実にするために、所定の最大サイズを使用して配列を宣言することができ、プログラムを修正するために
。
#define MAXSTRINGLENGTH 100
...
char cP1_Pokemon_Name[MAXSTRINGLENGTH] = "POKEMON";
char cP1_Move1_Name[MAXSTRINGLENGTH] = "TACKLE";
char cP1_Move2_Name[MAXSTRINGLENGTH] = "POUND";
...
etc.
+0
ああ、機械のプロジェクトの仕事を作ることができます知っている。私はその定義文字列の長さによって、過去走ってきましたが、私はしませんでしたプログラミングは確かにたくさんの仕事ですが、今は5がなぜ69として印刷されているのかを理解する必要があります。 –
関連する問題
- 1. バッファオーバーフローが64ビットでstrcpyで
- 2. strcpy()が動作していません
- 3. なぜ私は(strcpyのでセグメンテーションフォールトを取得しています)
- 4. STRDUP()をし、strcpyの
- 5. strncatまたはstrcpyはループを次の繰り返しに続けることができますか?
- 6. strcpy()上のセグメンテーションフォルト。
- 7. Symbianのstrcpy?
- 8. strcpyに似ていますが、int型の値はありますか?
- 9. のstrcpy関数へのポインタを渡す
- 10. strcpyを使用して配列の入力が間違っています
- 11. セグメンテーションエラーstrcpy
- 12. strcpyのは、割り当てられた文字列をコピーしません
- 13. 私自身のstrcpy関数は、学習技術として
- 14. strcpyは私にセグメンテーションフォールトを与えます
- 15. C++、ボーランドのchar *とstrcpyの
- 16. gdbがstrcpyで壊れないのはなぜですか?
- 17. strcpyの後にCプログラムがクラッシュする
- 18. strcpy with strings array
- 19. C - strcpyポインタ
- 20. strcpyポインタ関数への参照
- 21. C - strcpy()とstrncpy()のバッファオーバーフロー
- 22. strcpyとstrcatの問題
- 23. STRCPYが使用された後、プログラミングに関連のない無関係な変数が上書きされる
- 24. 文字列ポインタのstrcpyはエラーを返します
- 25. ret2libc strcpyが動作しない
- 26. strcpyを使用してコマンドライン引数をソートできない
- 27. C#Union vs連続したデータのリストが含まれています
- 28. ヌル終端はstrcpyの-INGの
- 29. strcpyが別の変数を上書きしないようにするには?
- 30. Strcpy()配列宣言?
[MCVE]を入力してください。あなたの間違いを見つけるためにあなたのコードをすべて見てみたい人はほとんどいません。 – Kevin
tl; drすべての文字列に十分なスペースが割り当てられていますか? –
あなたの問題に関連しますが、構造体や配列を使用して、あなたはおそらく、少なくともトラブルのため申し訳ありません4. –