我做了一个测试,它看起来像这样:
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)