您的位置:首页 > 编程语言 > C语言/C++

c语言翻转一个英文句子

2016-05-27 21:32 633 查看
思路:先把整个句子翻转一次,再用空格分割,翻转单个单词

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* 翻转一个字符串从start位置到end位置的字符 */
char *reverse_string(char *start, char *end)
{
char tmp;
char *back = start;

if(!start || !end)
return NULL;

while(start < end)
{
tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}

return back;
}

/* 翻转一串单词 */
char *reverse_words(char *words)
{
char *pstart, *pend;

if(!words)
return NULL;

/* 翻转整个句子 */
pstart = pend = words;
while(*pend++);
pend -= 2;
reverse_string(pstart, pend);

/* 翻转单词 */
pstart = pend = words;
while(*(pend + 1))
{
pend = pstart;
while(*pend != ' ' && *pend != 0)
pend++;
pend--;
reverse_string(pstart, pend);
pstart = pend + 2;
}
return words;
}

int main(int argc, char const *argv[])
{
char s[1024];

if(2 == argc)
{
strncpy(s, argv[1], sizeof(s));
printf("%s\n", s);
reverse_words(s);
printf("%s\n", s);
}

return 0;
}


测试

root@ubuntu15:work# ./a.out

root@ubuntu15:work# ./a.out “”

root@ubuntu15:work# ./a.out “123”

123

123

root@ubuntu15:work# ./a.out “1 2 3 4 5”

1 2 3 4 5

5 4 3 2 1

root@ubuntu15:work# ./a.out “12 345 6789 11111”

12 345 6789 11111

11111 6789 345 12
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c