多级指针问题~谢谢
目的是把输入的字符串加1输出~
比如:
输入:aaaaaaa
输出:bbbbbbb
但是现在
输入aaaaaa
输出bccccc
请问问题是什么地方不对呀???
我的程序代码如下
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void getchard(char **f){ //输入字符函数
*f = (char *)malloc(sizeof(char)*10);
scanf("%s",*f);
return;
}
void encrypt(char **fe){ //字符加1函数
char *p;
p = &(**fe);
for(int i=0;i<10;i++){
*(p+i) = (**fe+1);
}
return;
}
void main(){
char *f;
getchard(&f);
encrypt(&f);
printf("%s\n",f); //输出
free(f);
}
问题点数:20、回复次数:3Top
1 楼fishrod(Coollike)回复于 2003-12-03 23:09:23 得分 10
把你的程序的
这一行 :*(p+i) = (**fe+1);
改成: *(p+i) = ( *(*fe+i)+1 );
这是因为,在你的循环里fe指针并没有移动,这就意味这你所有的字符全部是用第一个字符+1得到的。第一次循环中,第一个字符已经+1了,以后的循环就相当于第一个字符+1+1Top
2 楼smalltalk(老徐)回复于 2003-12-03 23:09:29 得分 10
void encrypt(char *fe){ //字符加1函数
for(int i=0;i<10;i++){
*(fe+i) += 1;
}
return;
}
main()函数中的encrypt()参数不需要用char **,用char *即可。;
void main(){
char *f;
getchard(&f);
encrypt(f);
printf("%s\n",f); //输出
free(f);
}
Top
3 楼pipilang(皮皮狼)回复于 2003-12-03 23:37:32 得分 0
对了,谢谢~Top




