| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 620 人关注过本帖
标题:字符串反转问题求教
只看楼主 加入收藏
xdreamlike
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-8-8
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:8 
字符串反转问题求教
根据范例,写了如下一段字符反转的程序:
#include<stdio.h>

int main()
{
    int i;
    char String[6]="Hello";
    char Reverse[6]={0};
    int size;
    size=sizeof(String);
    printf("%d\n",size);

    for(i=0;i<5;i++)
    {
        Reverse[size-i-2]=String[i];
    }

    printf("输出源字符串:%s\n",String);
    printf("输出目标字符串:%s\n",Reverse);
}

请问char Reverse[6]={0}怎么理解?是定义一个空的字符数组吗?为什么直接写成char Reverse[6]就会出错?
搜索更多相关主题的帖子: 字符串 
2013-08-14 15:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:18 
初始化

DO IT YOURSELF !
2013-08-14 15:32
xdreamlike
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-8-8
收藏
得分:0 
回复 2楼 wp231957
一定要初始化一下吗?直接写成char Reverse[6],为什么不行?之前一些程序并没有加{0},也没有问题,但是到这里就不行了。
2013-08-14 15:38
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
是的 ,一定要初始化

大概你还不知道{0} 是啥意思吧  这种写法很少见  一般都是  char Reverse[6]={'\0'}

DO IT YOURSELF !
2013-08-14 15:41
xdreamlike
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-8-8
收藏
得分:0 
也就是说{0}等于{'\0'}咯?明白了,多谢。
2013-08-14 16:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
字符串以'\0'结尾,所以只有一个'\0'是有用的

程序代码:
#include <stdio.h>
#include <string.h>

int main()
{
    size_t i;
    const char* src = "Hello";
    char dst[256]; // 看这里,没有浪费时间将所有元素都初始化为'\0'
    size_t len = strlen(src);
    printf( "%u\n", (unsigned)len );

    for( i=0; i<len; ++i )
        dst[len-i-1] = src[i];
    dst[len] = '\0'; // 看这里,字符串以'\0'结尾

    printf("输出源字符串:%s\n", src);
    printf("输出目标字符串:%s\n", dst);

    return 0;
}

2013-08-14 16:25
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用xdreamlike在2013-8-14 16:06:41的发言:

也就是说{0}等于{'\0'}咯?明白了,多谢。

谁教你这样是相等的?{0}是用在整型数组,{'\0'}是字符串数组初始化,如果两个是相等的话,你试试用{'\0'}来初始化一个整型数组,看看会不会出错

思考赐予新生,时间在于定义
2013-08-14 17:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用love云彩在2013-8-14 17:31:45的发言:

 
谁教你这样是相等的?{0}是用在整型数组,{'\0'}是字符串数组初始化,如果两个是相等的话,你试试用{'\0'}来初始化一个整型数组,看看会不会出错
你试过了吗   云版


以下代码 vs2010下编译通过
程序代码:
#include<stdio.h>

int main()
{
    char s1[10]={0};
    char s2[10]={'\0'};
    char s3[10]={NULL};

    int t1[10]={0};
    int t2[10]={'\0'};
    int t3[10]={NULL};
   
    return 0;
}



DO IT YOURSELF !
2013-08-14 21:15
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
收藏
得分:0 
#include<stdio.h>

int main()
{
    int i,s;
    char String[6]="Hello";
    char Reverse[6];
    int size;
    size=sizeof(String);
    printf("%d\n",size);

    for(i=0;i<5;i++)
    {
        Reverse[size-i-2]=String[i];
    }

    printf("输出源字符串:%s\n",String);
    printf("输出目标字符串\n");
    for(s=0;s<=4;s++)
    printf("%c",Reverse[s]);
    printf("\n");
}
问题在这,昂~你输出用的是%s,用这样就可以啦,自动分配内存空间。
2013-08-14 21:50
快速回复:字符串反转问题求教
数据加载中...
 
   



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

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