示例:
翻转前:to be or not to be
翻转后:ot eb ro ton ot eb
基本思路:
利用strtok字符串切割函数拿到每一部分,存储到一个字符串数组中,再将每一个字符串数组倒置。最后顺序输出。
程序代码:
#include<iostrem>
#include<string>
#include<cstring>
string daozhi(string str)//倒置函数
{
for (int i = 0; i < str.length()/2; i++)
{
char temp = str[i];
str[i] = str[str.length()- 1-i];
str[str.length()- 1-i] = temp;
}
return str;
}
int main()
{
char s[100];
gets(s);//
string str[100];//字符串类型的数组
char *token = strtok(s, " ");//strtok 返回的是切割字符串的首地址
int num = 0;//有效位置
while (token != NULL)//通过切割函数,拿到每个子字符串
{
str[num] = token;//str[0]第一个子串,str[1]第二个子串
num++;
token = strtok(NULL, " ");
}
//倒置每个子串str[0],str[1].....
for (int i = 0; i < num; i++)//num为子串有效位置
{
str[i] = daozhi(str[i]);//倒置
}
int flag = 0;//利用标志控制输出格式
for (int i = 0; i < num; i++)//循环输出每个子串
{
if (flag == 0)
flag = 1;
else
cout << " ";
cout << str[i];
}
}