C语言问题(数组赋值问题)

来源:百度知道 编辑:UC知道 时间:2024/04/29 14:16:35
问题如下:我有两个字符数组:char time1[5],里面放有"2009",还有一个字符数组char time2[3],里面放有"12",还有一个实型数组float array[3],问题是:我怎么样把time1数组中的"2009"放在array[0]中,time2数组中的"12"放在array[1]中,哪位知道的,请告诉我哈,希望给出C语言语句,在线等待,非常感谢!!
array[0]=time1[0];
我测试了一下,2009没有存到array[0]里面去。大家都说说看啊

我要解决的就是设置时间问题,比如要设置时间为字符串char *datetime = "2009-10-10 12:12:12";设置时间函数为SetTime(uint16 *TimePtr);uint16为 unsigned short,要把上面的datetime字符串中的"-"和冒号去掉再保存到一个数组再去设置时间,我的想法是先把2009取出保存到一数组中,取出10保存到一数组中,然后再把这些数都保存到一个uint16的数组当中。或者还有什么别的方法把那字符串中的 - 和冒号去掉,把2009 10等这些书存到一uint16的数组中?谢谢

array[0]=time1[0];
执行的结果array[0]是50是把time1[0]的值付给了array[0]由于array是float型time1是字符型传值过程具体是,time1[0]转换成float型就‘2’变成了50(由于2的ascii码为50)所以最后救国就成了50.

(1)如果是作为字符存储,以后还要拿出来:
首先要知道一个float是4字节,一个char是1字节那么将一个“2009”放入一个float中是可能的。
只要把每个char放入float中的不同位置就可以了,具体如下:
array[0]=time1[0]<<3;
array[0]+=time1[1]<<2;
array[0]+=time1[2]<<1;
array[0]+=time1[3];
这样就可以把time1数组中的"2009"放在array[0]中了;
另外一个同理

(2)如果要存储的是数字2009,
那么只要将字符转换为数字就可以了
这里要用到ascii码,0的ascii码为48.
所以将字符换为数字就要-48,具体如下:

array[0]=(time1[0]-48)*1000+(time1[1]-48)*100+(time1[2]-48)*10+time1-48[3];

LZ试试这个:

array[0]=time1[0]+time1[1]+time1[2]+time1[3]-4*'0';
array[1]=time2[0]+time2[1]-2*'0';

已经确认过了,这么写就可以了:

array[0]=(float)((time1[0]-'0')*1000+(time1[1]-'0')*100+(time1[2]-'0')*10+(time1[3]-'0'));

array[1]=(float)((time2