69,371
社区成员
发帖
与我相关
我的任务
分享
scanf("%s", buff);
len = strlen(buff);
int i,j;
j = i = len - 1;
for(; i >= 0; --i) {
if(buff[i] == ' ' || i == 0) {
int k = i;
while(k != j)
printf("%c", buff[k++]);
printf(" ");
j = --i;
}
}
如果有第三方库包含substr接口,那么上文中的while循环可以直接使用substr替换
此外,还有一种解决方案使用strtok函数,不过这个需要栈和内存分配结合使用
#include<stdio.h>
#include<string.h>
void a(char *p)
{
char temp[100];
int b = strlen(p);
int k = 0;
char temp1[100];
int i = 0;
for(i=0;i<b;i++)
{
temp[i]=p[b-i-1];
}
temp[b]='\0';
//puts(temp);
int j = 0;
//要循环结束条件为: j <= b
for(j=0;j<=b;j++)
{
//此处应为判断,用 '==',还要考虑句尾的情况,要不最后一个单词打印不出来
if(temp[j]==' ' || temp[j] == '\0')
{
int l = 0;
for(;k<j;k++)
{
temp1[k]=temp[j-l-1];
l++;
}
//在单词之间添加空格
temp1[j] = ' ';
k++;
}
}
temp1[b]='\0';
puts(temp1);
}
int main()
{
char ch[100];
gets(ch);
a(ch);
return 0;
}