C语言字符数组转换字符串

chara[3]={'a','b','c'};char*s="abc";上面的字符数组如何转换成下面的字符串... char a[3] = {'a','b','c'};
char *s = "abc";
上面的字符数组如何转换成下面的字符串
展开
 我来答
White_MouseYBZ
2015-10-19 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6714万
展开全部

不可能做得完全一样!char *s = "abc";这样的定义意思是“创建一个常字符串abc,将首地址(就是a的地址)赋给char*型指针s”。可以设法让数组a变成字符串,再让一个s指针指向它,但目标却不是常量,也不在常量区。可以用下面的代码做个效果差不多的转换。

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char a[3]={'a','b','c'},b[4];
    const char *s;
    b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]='\0';
    s=b;
    printf("%s\n",s);
    return 0;
}
zarelaky
推荐于2017-10-08
知道答主
回答量:23
采纳率:0%
帮助的人:13.7万
展开全部
char a[3] = {'a','b','c'}; 不可以直接转成下面的
char *s = "abc";
因为char *s 对应的实际上是 char a[4] = { 'a','b','c','\0'}
所以你可能需要重新处理成
const int len=sizeof(a) + 1;
char* b=(char*)malloc(len);
memcpy(b, a, sizeof(a));
b[len -1] = '\0'; //不要忘了在不使用b时free(b);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dttsw
2017-08-01 · TA获得超过1059个赞
知道小有建树答主
回答量:770
采纳率:88%
帮助的人:313万
展开全部
char a[3] = {'a','b','c'};
char b[4];
int i;
for(i=0;i<3;i++){
    b[i] = a[i];
}
b[3]='\0';
char *s = b;
//这应该是比较简单的方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-10-19
展开全部
a[3]=0;
puts(a);

只要给一个结束标志就可以了a[3]就是c的后面。给个0代表字符串结尾
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cmcceduycu
2015-10-19 · 超过26用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:49.7万
展开全部
不太清楚你想干嘛,理论来说是不可能的,上面是个字符数组,下面是个字符串常量,字符串常量的内容不能修改。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式