当前位置: 代码迷 >> C语言 >> 关于在函数里对字符加密后返回的一个题目
  详细解决方案

关于在函数里对字符加密后返回的一个题目

热度:312   发布时间:2007-04-23 11:36:08.0
关于在函数里对字符加密后返回的一个题目

编写一个程序,从键盘接受用户输入一个字符串,编写函数对该字符串进行加密(把字符串中的每个字符ASCII都加上5),然后返回并输出结果。

#include <stdio.h>
void jiami(char *);

void main()
{
char a[20];
printf("请输入一个字符串:\n");
gets(a);
jiami(a);
printf("加密后的字符串内容为:%s",a);
}

void jiami(char *s)
{
char ch;
while (*s!='\0');
{
*s+=5;
s++;
}
}

觉得自己的思路哪里错了,但是又不知道问题出在哪。

搜索更多相关的解决方案: 字符  

----------------解决方案--------------------------------------------------------

这个可以了:
#include <stdio.h>

void jiami(char *s);

void main()
{
char a[20];
printf("请输入一个字符串:\n");
gets(a);
jiami(a);
printf("加密后的字符串内容为:%s\n",a);
}

void jiami(char *s)
{
char *ch;

ch=s;
while (*ch!='\0')
{
*ch+=5;
ch++;
}
//puts(s);
}


----------------解决方案--------------------------------------------------------
以下是引用pinglideyu在2007-4-23 12:08:05的发言:

这个可以了:
#include <stdio.h>

void jiami(char *s);

void main()
{
char a[20];
printf("请输入一个字符串:\n");
gets(a);
jiami(a);
printf("加密后的字符串内容为:%s\n",a);
}

void jiami(char *s)
{
char *ch;

ch=s;
while (*ch!='\0')
{
*ch+=5;
ch++;
}
//puts(s);
}


很反感只贴代码,不对提问者说明原因的做法.LZ你的算法没错,只是在细节上没处理好~只要像LS改动程序即可,但按你的算法,我实在看不出错的原因来...不过按习惯上来说,最好按LS的这样写代码,不然会出现难以预料的问题~
----------------解决方案--------------------------------------------------------

是的,没有错误和警告,但是运行后没有任何结果.
我对于数组指针还是比较生疏,不大会用.
谢谢:)


----------------解决方案--------------------------------------------------------
高手指教下啊。LZ的算法错在哪???? 
想弄个明白。。。
----------------解决方案--------------------------------------------------------
我也不是很明白,为什么函数里形参*s不能直接用来作为指针遍历而必须再定义个char *ch;ch=s;然后用ch来进行遍历?

----------------解决方案--------------------------------------------------------

是不是*s如果在调用函数进行了遍历,那么在返回主程序后输出时printf("%s",a)变成了从数组最后位输出,就产生了逻辑上的错误?


----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
我觉得是这样子的。。。
----------------解决方案--------------------------------------------------------

我晕过去了,再认真看了遍,找到问题了,是个低级得不得了的错误.

现在好了:
#include <stdio.h>
void jiami(char *);

void main()
{
char a[20];
printf("请输入一个字符串:\n");
gets(a);
jiami(a);
printf("加密后的字符串内容为:%s\n",a);
}

void jiami(char *s)
{
while (*s!='\0')
{
*s+=5;
s++;
}
}

[此贴子已经被作者于2007-4-25 15:47:33编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案