2016-11-24 9 views
-6

ここに短いコードがありますが、コンパイルされません。どのようなアイデアが間違っていた?文字列をコピーするためのC++ strcpy

char *str; 
strcpy(str, "Hello world"); 
cout << str[6] << ' ' << &str[6] << endl; 
+0

、* *ポインタ 'str'ポイントを行いどこ? –

+0

申し訳ありませんが、int main()関数 –

+0

また、ビルドエラーに関する質問を投稿するときは、未編集の完全なエラーを質問本体に含めてください。そして、[最小限の、完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。ここでは、エラーが発生した行(コメントなど)をマークします。最後に[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)をご覧ください。 –

答えて

1

文字列のメモリを割り当てる必要があります。メモリにポインタを割り当てるmallocを使うべきです。そのWhen to use malloc for char pointers

について

詳細を試してみてください:あなたがこれを行うと

char *str = malloc(sizeof(char) * 1024); 
+1

これはコンパイルエラーを修正しません。また、なぜこれが助けになるのか説明しておけば助けになります。 – juanchopanza

+0

'char str [16]'はもっと良いIMOになります。 –

+0

は、私はそれがSTR [16] をchar型試してみました、それはまだ 重大\tコード\t説明\tプロジェクト\tファイル\tライン\t抑制状態\t C4996 \t「strcpyの」 エラーと同じエラーを与える:この関数や変数が安全でない可能性があります。代わりにstrcpy_sの使用を検討してください。廃止予定を無効にするには、_CRT_SECURE_NO_WARNINGSを使用してください。詳細については、オンラインヘルプを参照してください。 –

関連する問題