马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
按照我自己的思路来,从结果上来看 好像多输出了一个 ‘\t’ 也可能不是这个 求解
#include<stdio.h>
#define MAX 1024
char *s_gets(char *st, int n);
void engish_words(char *pc);
int main(void)
{
char str[MAX];
char *pc;
pc = s_gets(str, MAX);
engish_words(pc);
putchar(pc[0]);
putchar('\n');
return 0;
}
char *s_gets(char *st, int n)
{
char *ret_val;
int i = 0;
ret_val = fgets(st, n, stdin);
if(ret_val)
{
while(st[i] != '\n' && st[i] != '\0')
i++;
if(st[i] == '\n')
st[i] = '\0';
else
while(st[i] == '\0')
continue;
}
return ret_val;
}
void engish_words(char *pc)
{
if(*pc != '\0')
{
engish_words(++pc);
}
else
{
printf("反向输出:\n");
}
putchar(*pc);
}
没有出现你说的问题,不过既然你那边出现了问题,我们就看看究竟输出了什么
这两个0有点可疑
注释掉这个,不要有干扰,再看一下输出
前面这两个0不对
这里判断的是不等于0,等于0会发生什么?
输出 “反向输出:\n”
然后输出 0,这里多了0
是0就直接返回,不输出这个0
但是还有一个0(一个字节两个0)
这里++pc有没有,加完后,到了下面会输出一个0
前面的0没了,但是多了一个字符 p
p是从这里输出的
注释掉,编译运行
这次正常了
调试程序的方法有很多,谁也没办法保证自己写的程序没有问题,所以关键是学会调试程序
|