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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表。

参考技术A 字符串不能用赋值号(=)赋值。
有两种方法,一是用库函数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);

也很简单。
有什么问题请留言。
参考技术B

使用内存复制函数

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

格式:

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

其中

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

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

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


参考技术C

这个需要调用字符串复制函数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;

截图:

C++二维数组给一维数组赋值

比如我有个数组
char a[3][3] = 1,2,3,4,5,6,7,8,9;
如何把这个数组赋值给数组
char b[3];
b为123,456,789

二维数组给一维数组赋值有两种情况:

1 按元素,逐个赋值到对应目标元素上。

适用于所有情况,可以自定义规则,遍历二维数组,并赋值到一维数组的对应位置上。由二维数组的行列值计算出一维数组的偏移量,这部分算法可以随意设计,有很高的灵活度。

比如,将二维数组第一列复制出来称为一个单独的一维数组,可以写作:

int a[100][100], b[100];
int i;
//二维数组赋值操作可以写在这里,与主题无关,代码从略。
for(i = 0; i < 100; i ++)
    b[i] = a[i][0];//第一列即0列,C语言下标从0开始。

2 整体复制。

二维数组中的元素本身是连续存储的,如果要将二维数组连续的一组数据赋值给一维数组,可以直接调用memcpy函数。该函数声明在cstring中,形式为

void* memcpy(void *dst, void *src, size_t length);

功能为将src地址上,长度为length字节的数据,复制到dst地址上。

比如将第二三两行(这两行是连续的),复制到一维数组中,代码可以写作:

int a[100][100],b[200];
//赋值,从略。
memcpy(b,a[1],sizeof(b));//整体复制。
参考技术A char b[3]; b的元素是char,456和789对于char类型的整数来说是溢出的
b是int类型的数组才行
int b[3];
int i;
for(i=0;i<3;i++)
b[i]=100*a[i][0]+10*a[i][1]+a[i][2];

这样b就是123,456,789了
参考技术B char类型的字符数组,存放整型数字,这个整型数字实际上是某个字符的ASCII码,比如41--A,42---B等。但是如果超过了ASCII中能够显示的字符范围,就会显示乱码。
建议将char b[3];修改为char *b[3]
参考技术C char b[3];
char a[3][3] = 1,2,3,4,5,6,7,8,9;
char temp[3];
for( int i = 0; i < 3; i ++)

for( int j =0; j< 3; j ++)

temp[j] = a[i][j];



b[i] = temp;
本回答被提问者采纳

以上是关于c语言怎么把二维数组的字符串给到一维数组?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎么把一维数组赋给另外一个一维数组

怎么样给一个一维数组全赋成false

怎么样给一个一维数组全赋成false

c语言中能把一个二维数组的值赋给一个一维数组吗

C++二维数组给一维数组赋值

C语言中怎么把一维数组初始化都为0,