c言語のstrdup関数でコピーした内容で条件分岐するとうまく行きません。
下記プログラムでは、文字ポインターaとbを用意し、aの中に"copy"という文字列を入れています。
strdup関数でaの内容をbにコピーし、bの内容と"copy"が同じならば"bの中身とaは同じです。"と出力するようにしています。
しかし、結果は「bとaは違います。」と出力されます。
どうしたら、この条件式で真になるのでしょうか?
追記:プログラムのコードを張ります。
C言語
1#include<stdio.h> 2#include<string.h> 3int main(void) { 4 char* a = "copy"; 5 char* b; 6 7 //aの文字列をbにコピーする 8 b = _strdup(a); 9 10 //条件:bの内容がaと同じ時 11 if (*b == "copy") { 12 printf("bの中身はaと同じです。\n"); 13 } 14 else { 15 printf("bとaは違います。\n"); 16 } 17 18 return 0; 19}
コードは画像ではなくテキストで提示しましょう
いただいている各回答へのコメントを読んで:
解決したのであれば質問者さんの疑問の解決に直接役に立ったいずれかの回答にBA(ベストアンサー)を差し上げ、質問を閉じましょう。
尚、「strdup (_strdup) の使い方」で言うと、strdup()で確保した文字列のメモリーは実はmalloc関数で確保されるものなので、使った後はfree関数で解放するのがお約束です。リファレンスを見ても明示的に書かれていないので分かりづらいですが。
_strdup()
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strdup-wcsdup-mbsdup?view=msvc-160
strdup()
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/strdup.3.html