c语言怎么把二维数组的字符串给到一维数组?

#include <stdio.h>
int main(){
char a[15]={"你好"};
char b[3][15]={"323","223","123"};
a=b[2];//这里怎么办
printf("%s",a);

}

按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。
2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。

个就是apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-21
字符串不能用赋值号(=)赋值。
有两种方法,一是用库函数strcpy(),二是一个一个字符赋值。第一种方法,前面已经有答友写了程序。下面说第二种方法。
不用库函数,可以这样写:
#include <stdio.h>
int main(){
char a[15]={"你好"};
char b[3][15]={"323","223","123"};
int i;
for(i=0;a[i]=b[2][i];i++);
printf("%s\n",a);
}
也很简单。
有什么问题请留言。
第2个回答  2021-12-20

使用内存复制函数

memcpy(a, b[2], strlen(b[2]) * sizeof(char) + 1);

格式:

memcpy ( 目标地址 , 源地址 ,内存字节长度);

其中

strlen(b[2]):计算b[2]行地址开始的字符串长度(不含结束符)

sizeof(char):跨编译器跨环境的写法,返回char类型的字节宽度。

两者相乘得到字符串占用内存长度(字节),最后补一个结束符的长度。


第3个回答  2021-12-20

这个需要调用字符串复制函数strcpy,像这样:

#include <stdio.h>

#include <string.h>

int main()

{

char a[15]={"你好"};

char b[3][15]={"323","223","123"};

strcpy(a,b[2]);

printf("%s",a);

return 0;

}

截图:

相似回答