世人染于眼前之微渺,所以昧乎未见之大观
第一次有点小错误,是没有考虑只有一个单词输入的情况
第一次:
#include <stdio.h>
#define MAX_C 80 /* 最大字符串长度 */
/* 得到字符串, 且返回长度 */
int get_str(char s[]){
int c, i;
for(i = 0; (c = getchar()) != '\n'; ++i)
s[i] = c;
return i;
}
/* 反向输出字符串 */
void print_str(char s[], int lim){
int i;
int pos;
pos = lim; /* 从后向前扫描数组 */
while(pos > 0){
for(i = pos-1; s[i] != ' ' && i > 0; --i); /* 当还在一个单词里面时,继续前进 */
pos = i;
if(i != 0){ /* 到了一个单词外面 */
for(++i; i < lim && s[i] != ' '; ++i) /* 向后扫描输出这个单词 */
printf("%c", s[i]);
printf(" ");
}else{ /* 到了第一个单词 */
for(; s[i] != ' '; ++i)
printf("%c", s[i]);
}
}
}
int main(){
char str[MAX_C] ={0};
int len;
len = get_str(str);
print_str(str, len);
return 0;
}
第二次:
修改了26行
#include <stdio.h>
#define MAX_C 80 /* 最大字符串长度 */
/* 得到字符串, 且返回长度 */
int get_str(char s[]){
int c, i;
for(i = 0; (c = getchar()) != '\n'; ++i)
s[i] = c;
return i;
}
/* 反向输出字符串 */
void print_str(char s[], int lim){
int i;
int pos;
pos = lim; /* 从后向前扫描数组 */
while(pos > 0){
for(i = pos-1; s[i] != ' ' && i > 0; --i); /* 当还在一个单词里面时,继续前进 */
pos = i;
if(i != 0){ /* 到了一个单词外面 */
for(++i; i < lim && s[i] != ' '; ++i) /* 向后扫描输出这个单词 */
printf("%c", s[i]);
printf(" ");
}else{ /* 到了第一个单词 */
for(; i < lim && s[i] != ' '; ++i)
printf("%c", s[i]);
}
}
}
int main(){
char str[MAX_C] ={0};
int len;
len = get_str(str);
print_str(str, len);
return 0;
}