C语言字符数组转换字符串
chara[3]={'a','b','c'};char*s="abc";上面的字符数组如何转换成下面的字符串...
char a[3] = {'a','b','c'};
char *s = "abc";
上面的字符数组如何转换成下面的字符串 展开
char *s = "abc";
上面的字符数组如何转换成下面的字符串 展开
6个回答
展开全部
不可能做得完全一样!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;
}
展开全部
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);
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);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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代表字符串结尾
puts(a);
只要给一个结束标志就可以了a[3]就是c的后面。给个0代表字符串结尾
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不太清楚你想干嘛,理论来说是不可能的,上面是个字符数组,下面是个字符串常量,字符串常量的内容不能修改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询