Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

c - Reverse a string word by word

I am able to reverse a string. For example, I can reverse "reverse a string" to "esrever a gnirts". But I am not able to reverse it word by word like "string a reverse".

void reverseString(char string[],char *start, char* end)
{

    char tmp; //temporary variable to swap values
    int count = 0;
    while(start<end)
    {
        if(*start==' ')
        {
            printf("found space count %d 
",count);
            reverseString(string,start-count,start);
        }
        tmp = *start;
        *start = *end;
        *end = tmp;
        *start++;
        *end--;
        count++; 
    }

    printf(" string %s 
", string); 
}

int main()
{
    char string[] = "reverse a string word by word";
    char *start =string;
    char *end =start+ strlen(string) -1;
    reverseString(string,start,end);
    return 0;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Do what you've already done, then reverse the whole result (without treating spaces specially).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...