题目:字符串反转,如将字符串“Hello World”反转为”dlroW olleH”
代码一:
1234567891011121314151617181920212223242526272829 | void Char_Reverse(char* ch){ int i = 0; while (ch[i] != '\0') { i++; } char temp[i]; int j = 0; int x = i; for (j=0; j<i; j++) { temp[j] = ch[x-1]; x--; } for (j=0; j<i; j++) { ch[j] = temp[j]; }}int main(){ char ch[50]; scanf("%s",ch); Char_Reverse(ch); printf("%s",ch); return 0;} |
但是这段代码无法反转带空格的字符串,原因是scanf遇到空格就停止读取了。
解决这个问题,使用%[^\n],表示读取除了换行符 \n 以外的所有字符,这样可以读取整行文本。
代码二:
123456789101112131415161718192021222324252627 | void Char_Reverse(char* ch){ int i = 0; while (ch[i] != '\0') { i++; } char temp[i]; int j = 0; int x = i; for (j=0; j<i; j++) { temp[j] = ch[x-1]; x--; } for (j=0; j<i; j++) { ch[j] = temp[j]; }}int main(){ char ch[50]; scanf("%[^\n]",ch); Char_Reverse(ch); printf("%s",ch); return 0;} |
这里改进了scanf不能读取空格之后的问题。
输入Hello World
输出为dlroW olleH