面试宝典上的一道题。
题目:倒置一个字符串里面的单词
例子:I am from wuhan. -------> wuhan. from am I
思路:先倒置整个字符串,然后倒置每个单词。
//倒置一个字符串中的单词 #include<stdio.h> #include<string.h> #define BUF 100 void StringReverse(char* input); int main(void) { puts("Enter a string:"); char input[BUF]; //fgets(input,BUF,stdin); //此函数会将回车一起算作字符串的输入 gets(input); StringReverse(input); return 0; } void StringReverse(char* input) { int i; int j = strlen(input)-1; int temp=0; for(i=0;i<j;i++,j--) { //input[i]^=input[j]^=input[i]^=input[j]; //a^a=0 temp=input[i]; input[i]=input[j]; input[j]=temp; } printf("inverse string:%s\n",input); int begin; int end; i=0; while(input[i]) { if(input[i]!=' ') { begin =i; while(input[i]!=' '&&input[i]!='\0') //注意结束符的位置所在的循环!!! { i++; } i=i-1; end=i; } while(begin<end) { temp = input[begin]; //注意交换的不索引 input[begin] = input[end]; input[end] = temp; begin++; end--; } i++; } printf("output string:%s\n",input); }