33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#define SIZE 80
char *s_gets(char *str,unsigned short n);
int main(void){
char a[SIZE];
short i,j,k;
s_gets(a,SIZE);
i=strlen(a)-1;
while(i){
k=i;
while(a[i]!=' ' && i>=0){
i--;
}
for(j=i+1;j<=k;j++)
putchar(a[j]);
i--;
}
return 0;
}
char *s_gets(char *str,unsigned short n){
char *p;
unsigned short i=0;
p=fgets(str,SIZE,stdin);
if(p){
while(p[i]!='\n' && p[i]!='\0')
i++;
if(p[i]=='\n')
p[i]='\0';
else
while(getchar()!='\n')
continue;
}
return p;
}
#include <stdio.h>
#include <string.h>
#define SIZE 80
char *s_gets(char *str,unsigned short n);
int main(void)
{
char a[SIZE];
short i,j,k;
s_gets(a,SIZE);
puts(a);
i = strlen(a)-1;
while (i >= 0){
k = i;
while(a[i] != ' ' && i >= 0){
i--;
}
for(j = i+1; j <= k; j++)
putchar(a[j]);
putchar(' ');
i--;
}
return 0;
}
char *s_gets(char *str,unsigned short n)
{
char *p;
unsigned short i=0;
p = fgets(str,SIZE,stdin);
if(p) {
while(p[i] != '\n' && p[i]!='\0')
i++;
if(p[i] == '\n')
p[i]='\0';
else
while(getchar()!='\n')
continue;
}
return p;
}
参考一洗吧
导致程序异常的原因是数组越界。当最后一个单词时,i = -1;然后再进行i--,即i = -2;由于是while(i);也是满足循环的,因此就导致越界。