黑马程序员技术交流社区

标题: 字符串数组练习偶遇麻烦! [打印本页]

作者: AngleMGG    时间: 2014-9-21 23:43
标题: 字符串数组练习偶遇麻烦!
本帖最后由 AngleMGG 于 2014-9-21 23:44 编辑

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




作者: cjfire    时间: 2014-9-22 09:03
一句注释没有,不知道你想干啥。
作者: AngleMGG    时间: 2014-9-22 11:59
cjfire 发表于 2014-9-22 09:03
一句注释没有,不知道你想干啥。

注释没写,上面标文写了哦,就是替换字母,如 a 换成 abc 、x 换成 xyz 。最后面多出来一些字符数组里没有的东西是为什么
作者: cjfire    时间: 2014-9-22 16:01
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里面判断的时候,会加一次,所以这里就多加了一次。
作者: 卧龙小    时间: 2014-9-22 17:01
楼上正解
作者: AngleMGG    时间: 2014-9-22 17:44
cjfire 发表于 2014-9-22 16:01
你最后来了个++j这里多加了一次,因为for里面判断的时候,会加一次,所以这里就多加了一次。 ...

额额,了解了,已经调出来了。多谢啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2