A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dream静 中级黑马   /  2014-11-2 23:58  /  924 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目大致是说要你输入一段英文+数字,进行加密,比如输入"234a32b"加密后为"234bcd32def",就是出现字母的位置用它的后三位字母来替代它;
这主代码大致是这样:
    char final[300];
    char c;
    int i=0;
    printf("输入原文:\n");
    while((c=getchar())!='\n')
    {
        if((c<='z' && c>='a') || (c<='Z'&& c>='A'))
        {
            final[i]=c+1;
            final[i+1]=c+2;
            final[i+2]=c+3;
            i+=3;
        }
        else
        {
            final[i]=c;
            i++;
        }
    }

但是我有个问题了,比如输入"ab2314ab",,按照代码fina[0]是'a',加密,按代码意思是fina[0]='b',final[1]='c',final[[2]='d', 那么请问这代码意思不是说把'b''c''d'3个字符分别赋值给final[0][1][2],那么请问不是把原串的b和2挤掉了,因为我理解原来的final[1]='b'和final[2]='2',这代码觉得是赋值操作,不能理解谁能解释下

6 个回复

倒序浏览
他们没有公用一块内存。初始化char c的时候分诶了一块内存,字符串ab2314ab读入的时候就是用了c分配的一块内存;而final[300]初始化的时候也分配了一块内存,和char c 不相关,故加密后使用的是final[300]的内存,不存在挤掉的问题。
回复 使用道具 举报
keep_flying 发表于 2014-11-3 00:51
他们没有公用一块内存。初始化char c的时候分诶了一块内存,字符串ab2314ab读入的时候就是用了c分配的一块 ...

问题又来了,我都没注意看这是两块,如果是这样的话,为什么可以定义一个字符c,c=getchar()这个是撒意思?怎么前面定义的字符c到这里好像变成字符数组了.....我不了解getchar
回复 使用道具 举报
keep_flying 发表于 2014-11-3 00:51
他们没有公用一块内存。初始化char c的时候分诶了一块内存,字符串ab2314ab读入的时候就是用了c分配的一块 ...

谢谢你说的提醒我了,不过好多方法感觉视频都没有讲这些人是哪里找来的。。。。。
回复 使用道具 举报
dream静 发表于 2014-11-3 00:59
问题又来了,我都没注意看这是两块,如果是这样的话,为什么可以定义一个字符c,c=getchar()这个是撒意思 ...

c=getchar()这个是撒意思?意思是用getchar()这个函数读取数据,存入到c得内存块。
回复 使用道具 举报
c=getchar()这个是撒意思?意思是用getchar()这个函数读取数据,存入到c得内存块。
回复 使用道具 举报
keep_flying 发表于 2014-11-3 02:21
c=getchar()这个是撒意思?意思是用getchar()这个函数读取数据,存入到c得内存块。 ...

这个东西哪里有讲啊?我怎么看视频里没有提到过啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马