|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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是从这里输出的
注释掉,编译运行
这次正常了
调试程序的方法有很多,谁也没办法保证自己写的程序没有问题,所以关键是学会调试程序
|
|