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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AngleMGG 中级黑马   /  2014-9-21 23:43  /  1826 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 AngleMGG 于 2014-9-21 23:44 编辑

我的练习目的是输入字符串,将字符串中的字母用其后3个字母替换,如a—>abc;功能已经实现了,但是输出的时候字符串后面莫名其妙的出现了不应该存在的字符(最下方所示),真是神马情况呢????
——————————————————————————————————————————————



5 个回复

倒序浏览
一句注释没有,不知道你想干啥。
回复 使用道具 举报
cjfire 发表于 2014-9-22 09:03
一句注释没有,不知道你想干啥。

注释没写,上面标文写了哦,就是替换字母,如 a 换成 abc 、x 换成 xyz 。最后面多出来一些字符数组里没有的东西是为什么
回复 使用道具 举报
AngleMGG 发表于 2014-9-22 11:59
注释没写,上面标文写了哦,就是替换字母,如 a 换成 abc 、x 换成 xyz 。最后面多出来一些字符数组里没 ...

  1. #include <stdio.h>

  2. void change(char str[],int length)
  3. {
  4.     char ss[30];
  5.     int j = 0;
  6.     for (int i = 0; i < length; i++,j++) {
  7.         if (str[i] >= 'a' && str[i] <= 'z') {
  8.             ss[j] = str[i];
  9.             ss[++j] = str[i]+1;
  10.             ss[++j] = str[i]+2;
  11.         }
  12.         else{
  13.             ss[j] = str[i];
  14.         }
  15.     }
  16.     ss[j] = '\0';
  17.     printf("%s\n",ss);
  18. }

  19. int main(int argc, const char * argv[]) {
  20.    
  21.     char s[30];
  22.     printf("input the chars\n");
  23.     scanf("%s",s);
  24.     change(s, (int)strlen(s));
  25.    
  26.     return 0;
  27. }
复制代码

你最后来了个++j这里多加了一次,因为for里面判断的时候,会加一次,所以这里就多加了一次。
回复 使用道具 举报
楼上正解
回复 使用道具 举报
cjfire 发表于 2014-9-22 16:01
你最后来了个++j这里多加了一次,因为for里面判断的时候,会加一次,所以这里就多加了一次。 ...

额额,了解了,已经调出来了。多谢啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马