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

char a[3] = {'a','b','c'};
char *s = "abc";
上面的字符数组如何转换成下面的字符串

不可能做得完全一样!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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-08
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);本回答被提问者采纳
第2个回答  2017-08-01
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;
//这应该是比较简单的方式。

第3个回答  2015-10-19
a[3]=0;
puts(a);

只要给一个结束标志就可以了a[3]就是c的后面。给个0代表字符串结尾
第4个回答  2015-10-19
不太清楚你想干嘛,理论来说是不可能的,上面是个字符数组,下面是个字符串常量,字符串常量的内容不能修改。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网