| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1300 人关注过本帖
标题:关于在函数里对字符加密后返回的一个题目
只看楼主 加入收藏
ayakyd
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-4-19
收藏
 问题点数:0 回复次数:9 
关于在函数里对字符加密后返回的一个题目

编写一个程序,从键盘接受用户输入一个字符串,编写函数对该字符串进行加密(把字符串中的每个字符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++;
}
}

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

搜索更多相关主题的帖子: 字符 
2007-04-23 11:36
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 

这个可以了:
#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);
}


~~我的明天我知道~~
2007-04-23 12:08
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
收藏
得分:0 
以下是引用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的这样写代码,不然会出现难以预料的问题~


2007-04-23 15:55
ayakyd
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-4-19
收藏
得分:0 

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

2007-04-23 16:54
oclassic
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2007-4-18
收藏
得分:0 
高手指教下啊。LZ的算法错在哪???? 
想弄个明白。。。

编程群号码30772309群刚刚建立一个论坛http://tszbbs./?u=2 诚招斑猪哦
2007-04-23 20:56
ayakyd
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-4-19
收藏
得分:0 
我也不是很明白,为什么函数里形参*s不能直接用来作为指针遍历而必须再定义个char *ch;ch=s;然后用ch来进行遍历?
2007-04-24 10:57
ayakyd
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-4-19
收藏
得分:0 

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

2007-04-24 16:27
ayakyd
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-4-19
收藏
得分:0 
2007-04-25 14:59
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
我觉得是这样子的。。。

~~我的明天我知道~~
2007-04-25 15:19
ayakyd
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-4-19
收藏
得分:0 

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

现在好了:
#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编辑过]

2007-04-25 15:40
快速回复:关于在函数里对字符加密后返回的一个题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050690 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved