/* mystrcat02.c */ #include <stdio.h> char *mystrcat(char *, char *); int main() { char str1[32] = "Hello, "; char str2[16] = "World!\n"; printf(mystrcat(str1, str2)); return 0; } char *mystrcat(char *a, char *b) { char *aorg; aorg = a; while (*a) a++; while (*a++ = *b++); return aorg; }
こんばんは。とある本でC言語を勉強しています。
サンプルプログラムを実行するとエラーがでます。どこが駄目なのか分からないので、分かる方は修正して頂けたら嬉しいです。
while (*a) a++; while (*a++ = *b++);
あと、この部分がわからないのでどなたか解説をできたらでいいんですけど、してもらえると助かります。
prog.cc: In function 'char* mystrcat(char*, char*)':
prog.cc:25:14: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
while (*a++ = *b++);
~~~~~^~~~~~
というエラーです。
エラーではなく警告ですね。
while (*a++ = *b++);
が「代入」になっていて「真偽判定結果」の体裁ではないので
ループの真偽判定を間違ってる可能性があるので注意してね
という意図での警告です。(=と==を間違えていませんか?という警告)
意図通りなら無視しても構いませんし
while ((*a++ = *b++) != '\0');
のように明示的に真偽判定の体裁になるようにしてみるのでもいいです。
回答2件
あなたの回答
tips
プレビュー