有一个问题就是下面的程序如果截取函数给str的只有两个字符,然后定义mmsi为int型输出显示都是正确的,但是当截取函数给str的字符数超过两个,就算我将mmsi定义成long型输出显示的也还是只是前两个字符的十进制,还有人说是在sprintf中将%u改为%lu,可是改过之后根本不对,改过之后不管mmsi是long型还是int型输出的数据都不对
void MMSI()
{
uchar str[5],sign;
uchar buf[9];
uint i,j;
unsigned long mmsi;
str[5]=jiequ(2,4); //截取函数表示从2是起始,4是截取的字符数,4个字符给str
sscanf(str, "%s", &mmsi);
mmsi=mmsi>>2&0x3fffffff; //只保留mmsi的0到29位
sprintf(buf, "%u", mmsi);
while(1)
{
lcd_pos(2,0);
for(i=0;i<6;i++)
{
lcd_wdat(buf[i]); //显示mmsi的十进制数在LCD
delay(5);
}
}
}
上一次您给我解决的有关字符型数据转化为十进制数据的问题,我还想问一下就是当字符超过两个之后不对了就
答案:2 悬赏:30 手机版
解决时间 2021-02-08 11:41
- 提问者网友:心牵心
- 2021-02-07 21:18
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-02-07 21:57
这个是一个原则性错误
str[5]=jiequ(2,4);
C语言不允许你这样写程序。
char str[5];
str[5]=XXXXX ;
这两行就足够被开除了,后面的不看也罢;
先学习基础知识吧。
jiequ不知道是个什么东西,但是无论如何都不会正确。
str[5]=jiequ(2,4);
C语言不允许你这样写程序。
char str[5];
str[5]=XXXXX ;
这两行就足够被开除了,后面的不看也罢;
先学习基础知识吧。
jiequ不知道是个什么东西,但是无论如何都不会正确。
全部回答
- 1楼网友:从此江山别
- 2021-02-07 23:04
我。。知。。道
加。。我。。私。。聊
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯