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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中,指针和数组还是有一点微妙的区别的,具体可参考度娘

参考技术A 你既然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了

参考技术B 你是想把char数组变成C++里面的string类型的字符串还是怎样?如果是,那可以i声明一个string对象,有相应的成员函数把char数组转换为string对象的。如果不是,那么ch就代表字符串 参考技术C 可以把s定义成指针,指向这个字符串 参考技术D char s[7]=]='a','b','c','d','e','f','\0';
出现s是字符串。
出现s[i]是字符

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

#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语言中怎样将一个字符数组里面的所有元素变成一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

C语言里怎样判断数组里的一个元素为空还是为0

C语言 删除所有相同值的元素

C语言简单的字符串、字符处理问题求助

在C语言中怎样判断一个字符串中是不是包含另一个字符串

在C语言中怎样判断一个字符串中是不是包含另一个字符串

php怎样把一个数组放入另一个数组的子数组里面