/* 实现字符串翻转,例如: hello world,bye ---> bye,world hello */ #include <stdio.h> #include <string.h> #define max 128 int main(void) { char input[max]; char split[max][max] = {('/0','/0')}; //如何全部初始化为0 ??? char other[max] = {'/0'}; // 记录每一次产生的其他字符,如空格等,倒序输出 char charater[2] = {'/0'}; gets(input); char* pin = input; int i = 0,j=0; for (pin = input;*pin != '/0';++pin) //最后一个字符串会出问题,应提前初始化字符串数组 { if (*pin <'Z' && *pin > 'A' || *pin > 'a' && *pin < 'z') // the character is from [a-zA-z] { split[i][j] = *pin; ++j; }else { split[i][j+1] = '/0'; other[i] = *pin; ++i; // i 指向下一行 j=0; // j 重新置位,作为下一次遍历的开始 } } memset(input,'/0',max); for (i ; i >= 0; --i) { strcat(input,split[i]); if(i >= 1) { charater[0] = other[i-1]; strcat(input,charater); }else {} } printf("%s/n",input); return 0; }