c语言的数据转换

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:20:54
/*数组的复制是个令人头疼的事情,不得不使用for循环来完成,但是当看到现成的字符串处理函数,我考虑将其它类型的数组作为字符数组来处理,如此,简化数组的复制为一个字符串赋值函数,好了思路已经很清晰了,下面我们一起来试一试*/

#include "stdio.h"

#include"string.h"
void main(void){
int a[4]={1,2,3,4}, b[4],i=0; /*定义两个测试用的整型数组,大小为4,i为for循环控制变量*/
strcpy((char*)b,(char*)a); /*将a当作string型copy 到b中*/
for(i=0;i<4;i++) printf("%d \n",*(b+i)); /*我们输出检查一下结果*/
getch();
}

/*好像没有错啊,怎么老师输出
1
0
0
0
呢?高手支招哦,谢谢。*/

strcpy是不能这么用的。
strcpy是在遇到'\0'时,认定这是字符串的结尾,就返回了。

int a[4]={1,2,3,4}
里是int型的,一般int占4个字节,也就是a的内容为
0x00000001,0x00000002,0x00000003,0x00000004,
然后每个int倒置存在内存里,所以strcpy只复制了a[0]的第一个字节0x01,后面都没管。
上面的解释如果看不全懂可以先不管,知道strcpy只能用于处理'\0'结尾的字符串就可以了。

要实现你要的功能,可以用
memcpy(b, a, sizeof(int)*4);
应该在stdlib.h里

晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
要得什么啊。。。
完全不同的两个概念。。。

字符串有'\0'结尾啊,这个没有怎么弄啊,而且char和int在内存中的存储也是不一样的,虽然你这种求索的精神值得赞赏,但是我要告诉你这是不科学的。

建议:
1.自己定义一个一劳永逸的函数,每次你要复制数组的时候,就包含自定义的函数的头文件,然后调用函数即可。
2.学习c++,你会发现有个叫copy的函数,可以拿来复制数组,无论是字符还是数值,通吃。

1.自己编写一个C语言的复制数组函数不是更好么??

我来写一个,你可以参考一下:

#include "stdio.h"
#include "string.h"
//复制整型数组
//失败返回0,成功返回1
int arrCopy(int a[],int b[],int len)
{
int tempA =sizeof(a);
int tempB = sizeof(b);
if (tempA <len || tempB<len)
{
return 0;
}