问题记录
megeeT
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用FATFS的f_write函数时,会覆盖掉原始文件内容
使用FATFS的f_write函数时,有别于c语言的fwrite,无论怎么改参数都无法实现数据的续写解决:只需要在写函数之前查询一下文件的末尾,并把返回的指针赋给地址参数即可即:res_sd=f_lseek(&fnew,f_size(&fnew));f_write(&fnew,buff,64,&fnum);...原创 2021-10-14 15:23:04 · 2126 阅读 · 1 评论 -
定义一个char类型的十六进制数时,前面会补齐ffffff
问题:有符号char如果其符号位为1,printf格式化输出其十六进制数值,前面自动补全四个fffff分析:有符号char型如果最高位是1,意思是超过了0x7f,当%X格式化输出的时候,则会将这个类型的值拓展到int型的32位,所以才会出现0xff,被扩展为ffffffff解决:定义为无符号字符,uint8_t char...原创 2021-09-18 11:37:29 · 1079 阅读 · 0 评论 -
做项目将结构体memcpy到字符数组时,数组内容不全的问题
问题:做项目将结构体memcpy到字符数组时,数组内容不全,只能显示一部分。分析:这是由于结构体定义的对齐规则,导致有的成员首地址不连贯。解决:在定义结构体前后,加上紧密对齐#pragma pack(1)tydefef struct {...}a_t;#pragma pack()...原创 2021-09-18 11:33:04 · 584 阅读 · 0 评论 -
读取文件使用feof多读取最后一行的问题
错误:多读取一遍最后一行数据while(!feof(fp)){ fgets(databuf,1024,fp); cout << databuf << endl;}原因:读取最后一行时feof(fp)没有置!0,下一次才会置!0解决:做两次判断,先输出后读fgets(databuf,1024,fp);while(!feof(fp)){ cout << databuf << endl; fgets(da.原创 2021-09-12 11:31:18 · 760 阅读 · 0 评论 -
在keil中创建结构体时遇到的问题,incomplete type is not allowed以及symbol multiply defined(by main.o and a.o)
错误:当我在a.c中定义并声明一个结构体,并在mian中extern声明后报incomplete type is not allowed的错误,提示没有实际意义,上网上查了资料,说需要在a.h中定义声明结构体,显示symbol multiply defined(by main.o and a.o)的错误。原因:未知解决:在...原创 2021-08-20 09:44:05 · 1780 阅读 · 1 评论 -
初始化字符数组时的错误
错误:初始化字符数组后打印出现错误。原因:没有结束符。解决:1、char BDS_year[3]="21";2、char BDS_year[3]={‘2’,‘1’,‘\0’};3、char BDS_year[2]={'2','1'};1和2是正确的,3会出错。原创 2021-08-19 15:52:13 · 554 阅读 · 0 评论 -
写结构体时报expected ‘=‘, ‘,‘, ‘;‘, ‘asm‘ or ‘__attribute__‘ before ‘.‘ token错误
错误:定义声明结构体后,给结构团体成员赋值时报expected '=', ',', ';', 'asm' or '__attribute__' before '.' token的错误。原因:结构体成员赋值是可执行语句。解决:在函数中赋值,或者声明时赋值。原创 2021-08-19 15:16:06 · 2176 阅读 · 1 评论 -
在使用strtok遇到的问题
问题:使用strtok分割字符,在循环中调用结果时会出现分割的字符串错乱现象。原因:由于strtok函数将指定的分隔符变为结束符,当第二次传入时由于地址未变,新传入的字符串将结束符变为分隔符,当再次打印时就会将全部数组显示,出现错乱情况。解决:由于该项目频率不高,直接strcpy再拷贝一份就可以了。...原创 2021-08-18 11:54:55 · 1139 阅读 · 0 评论
分享