C语言中怎样将一个字符数组里面的所有元素变成一个字符串

例如:char ch[6]={'a','b','c','d','e','f'},s;
变成s=abcdef(注意:在以后出现s就是abcdef)

首先要明确的是,“字符串”在C语言中的含义实际上就是一个char类型的指针或数组,且最后一位置为0标记字符串的结束。所以,你所说的”字符数组“我是否可以理解为一个没有终结符0的char类型数组?


这样的话,方法如下

#include <string.h>
int main() // 这里为了方便直接用main函数
{
    char array[] = { 'h', 'e', 'l', 'l', 'o' };
    /* 需要注意的是,这里没有终结符,故需要知道数组的 */
    /* 大小(数组的大小是编译时常量)*/
    char *dest_str; // 目标字符串
    
    dest_str = (char *)malloc(sizeof(char) * (sizeof(array) + 1));
    /* 为字符串分配堆空间 */
    
    strncpy(dest_str, array, sizeof(array));
    // 用C标准库函数strncpy拷贝字符
    
    return 0;
}


实际上在C中,指针和数组还是有一点微妙的区别的,具体可参考度娘

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-06
你是想把char数组变成C++里面的string类型的字符串还是怎样?如果是,那可以i声明一个string对象,有相应的成员函数把char数组转换为string对象的。如果不是,那么ch就代表字符串
第2个回答  推荐于2017-10-07
char ch[6]={'a','b','c','d','e','f'}, *s;
s = (char*)malloc(sizeof(char)*7);
if(!s)
return NULL;
s[6] = 0;
strncpy(s, ch, 6);本回答被提问者采纳
第3个回答  2011-06-06
char s[7]=]={'a','b','c','d','e','f','\0'};
出现s是字符串。
出现s[i]是字符
第4个回答  2011-06-06
你既然char s了,那么s只能存一个字符啊,不可能存放abcdef的,要么用成字符串数组s[6],要么用string啊,vector之类的追问

c里面没有string类型啊,具体的实施能讲详细点吗?谢谢了

追答

char ch[6]={'a','b','c','d','e','f'};
char *s=new char[100];
for(int i=0;ch[i]!='\0';i++)
s[i]=ch[i];
以后s就是abcdef了

相似回答