strncat,strcatを使用時に出たエラーについてお聞きしたい事があります。
文字列操作をしようと思い、strncatを使用したのですが
下記のようなエラーが出てしまい、原因がいまいち分かりません。
試しに書いたプログラムは以下の通りです。
char *tmp = Test
char *res = NULL;
strncat( res, tmp, sizeof(tmp) );
このプログラムを実行するとstrncatの部分で、
「ハンドルされていない例外は~.exe (MSVCRTD.DLL)にあります
:0xC0000005 Access Violation」
と出てしまいます。
これはやはり上記に書いた私のプログラムがおかしいのでしょうか…。
ちなみに実行環境はVC++6.0で、<string.h>もちゃんとインクルード
してあります。
resの指す先に何もないのに、そこに何かをコピーしてもいいんですか?
ポインタの使い方はご存知ですか?
この問題はそこから始まります。
ご存知ならちょっくら説明してみて!!
文字列に限りませんが、関数の引数にポインタを要求されている場合、
これはポインタ変数を宣言してそれを渡しなさいと言っているわけではありません。
関数の引数には参照渡しと値渡しがあります。
この違いをきちんと理解してコードを書かないと自分では訳がわからないバグに
悩まされる事になります。
質問内容からするとこの辺のポインタとは?とか基本的な知識が足りないようです。
C言語の入門書のポインタに関する記述と関数の引数に関する記述をよく読んで
もう一度考え直して見る事をお勧めします。
nさん、Ⅲさん、PATIOさん有難う御座います。
プログラムを始めたばかりの素人なので
ポインタをしっかりと理解できていませんでした。
C言語の本を片手にもう一度プログラムをしたところ、
上手くエラーを取る事が出来ました。
もう一度、じっくりとポインタの勉強をしてから
プログラムをしていきたいと思います。
