/****************************************
输入一句话,以单词为单位,逆转输出,例如
I love you
you love I
***************************************/
#include <Windows.h>
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main() {
int i= 0;
int j = 0;
bool flag = TRUE;
char str[1024] = { '\0' };//记录输入的字符串
char strTmp;
char strWord[256][20] = { '\0' };//记录以单词为单位的字符串数组
cout << "请输入一句话:";
//I LOVE YOU
//scanf_s("%s",str,1024);//scanf_s读入的字符串当遇到空格时就截止了,故只能用gets
gets_s(str, sizeof(str));//读入一行的字符串,直到遇到回车换行符
for (i = 0; i < strlen(str); i++) {
strTmp = str[i];
if (strTmp == ' ' && flag == FALSE) {
flag = TRUE;//flag 的定义是为了避免连续的空格时下标连续加,只在遇到第一个空格时下标加1
j++;
}
else if (strTmp != ' ') {
int res=strncat_s(strWord[j],sizeof(strWord[j]),(const char*) &strTmp, 1);
flag = FALSE;
}
}
for (i = j; i >=0; i--) {
cout << strWord[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
个人感觉这样写的代码还是比较精炼易懂的!赞一个!