次のように表示されるテストを作成しました。
char* trim(char* strr, char* str1) {
char* s = strr;
while(*str1 == 32) str1++;
while( (*str1 != 32) && (*str1 != 0) )
*s++ = *str1++;
*s = 0;
return strr;
}
int main(void) {
char str[20] = "???";
char str1[20] =" bcd \0";
printf("(%s)\n(%s)\n", str, trim(str, str1));
return(0);
}
質問は、上記のコードは何を出力し、その理由は何ですか? 出力とその理由についての手がかりを得ましたが、この件に関してより経験豊富な人々から聞きたいと思います.
一見すると、次のように表示されます。
(???)
(bcd)
しかし実際には、生成される出力は次のとおりです。
(bcd)
(bcd)