字符串中单词反序输出
#include <stdio.h>#include <string.h>
#define MAX 81
void StrOL(char * ar); /* 接受一个字符串指针,把该字符串中的单词反序 */
int main(void)
{
char ar[MAX];
gets(ar);
StrOL(ar);
puts(ar);
puts("Done");
getchar();
return 0;
}
void StrOL(char * ar)
{
int i, j, n, k, s;
char temp[MAX];
temp[MAX - 1] = '\0';
for(j = 0; ar[j]; j++) /* 使用空格替代字符串中的符号 */
if(ar[j] < '0' || (ar[j] > '9' && ar[j] < 'A')
|| (ar[j] > 'Z' && ar[j] < 'a') || ar[j] > 'z'
) /* 可改用 isalnum() isalpha() 进行判断 */
ar[j] = ' ';
i = j = n = 0;
k = MAX - 1;
while(ar[j])
{
while(ar[i] == ' ')
i++;
j = i;
while(ar[j] != ' ' && ar[j])
j++;
n = j - i;
k -= n;
for(s = 0; s < n; s++) /* 可使用 strncpy() 替换 */
temp[k + s] = ar[i + s];
if(k)
temp[--k] = ' ';
i = j;
}
(temp[k] == ' ') ? k++ : k ;
s = 0; /* 可使用 strcpy() 替换 */
do{
ar[s] = temp[k + s];
}while(ar[s++]);
}
[[italic] 本帖最后由 Uc-Sun 于 2007-11-29 07:28 编辑 [/italic]]