Chinaunix

标题: 反转的小例子,求解! [打印本页]

作者: hubimaso    时间: 2012-06-18 19:46
标题: 反转的小例子,求解!
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int i;
  5.         char str[6] = "hello";
  6.         char reverse_str[6] = "";
  7. //      char reverse_str[];这样的话第一个元素值不是‘\0’

  8.         printf("%s\n", str);
  9.         for (i = 0; i < 5; i++)
  10.                 reverse_str[5-i] = str[i];
  11.         printf("%s\n", reverse_str);
  12.         return 0;
  13. }
复制代码

作者: fdl19881    时间: 2012-06-18 21:28
12行下面加一句
reverse_str[i] = 0;

你应该都知道是缺个'\0'值。。。想问啥 ?
作者: hubimaso    时间: 2012-06-18 21:58
就是你那意思。呵呵!我试试回复 2# fdl19881


   
作者: hubimaso    时间: 2012-06-18 22:03
不行啊,没结果输出啊!回复 3# hubimaso


   
作者: hubimaso    时间: 2012-06-18 22:09
请看图,主要看reverse_str

未命名.jpg (39.85 KB, 下载次数: 15)

未命名.jpg

作者: fdl19881    时间: 2012-06-18 22:23
#include <stdio.h>

int main(void)
{
        int i;
        char str[6] = "hello";
        char reverse_str[6] = "";
//      char reverse_str[];这样的话第一个元素值不是‘\0’

        printf("%s\n", str);
        for (i = 0; i < 5; i++)
                reverse_str[4-i] = str[i];  //here
        reverse_str[i] = 0;
        printf("%s\n", reverse_str);
        return 0;
}
作者: hubimaso    时间: 2012-06-18 22:28
谢啦!回复 6# fdl19881


   
作者: hubimaso    时间: 2012-06-18 22:34
这不能是严格意义上的反转,因为reverse_str[0]不是‘\0’,reverse_str[5]是'\0',呵呵!!!回复 7# hubimaso


  
作者: fdl19881    时间: 2012-06-18 23:38
本帖最后由 fdl19881 于 2012-06-18 23:38 编辑

'\0'不能称为字符串的内容。
就像strlen(str)求字符串长度时,并不把'\0'包括进去一样。。

转牛角尖。。。
作者: xbjpkpk    时间: 2012-06-20 14:13
你把\0放在字符串第一个位置了,字符串怎么来把\0后面的内容给你输出,一看到\0就认为字符串已经结束了,就不会继续输出了。
作者: hubimaso    时间: 2012-06-20 21:14
嗯,谢啦,呵呵,感觉自己好菜,死脑筋!回复 10# xbjpkpk


   
作者: z75993971    时间: 2012-06-26 12:33
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2