|
本帖最后由 jyrpxj 于 2019-12-23 02:50 编辑
不得不承认自己太辣鸡了。 虽然写过N多单片机程序,但很多基础知识都没掌握。 说出来让大家嘲笑一下吧, 随便向大家请教。
main.c文件里
- #include "XX.h" //(头文件不列举了)
- #include <string.h>
- //全局变量
- const char wb1[]="0:00000000.txt"; // 常量 文件名 2..9为序号
- char wjm[16];
- //主函数
- int main(void)
- {
- //初始化部分(略)
- strcpy(wjm,wb1); //给字符串变量赋初始值 ,这里是OK的, 调试中可以看到wjm[0]是“0” 然后依次是“:00000000.txt” ,wjm[15] [16] 都是 二进制值0x00,
- while (1)
- {
- //新建以wjm变量为文件名的文档
- //(新建文件) 这个代码正常,因为可以看到已经有一个名为00000000.txt的文件了。
- //现在要wjm 这个字符串变量从[2]到[9] 这8个元素每次变化一次,"0:00000000.txt" "0:00000001.txt" "0:00000002.txt" .... "0:00000999.txt" "0:00001000.txt" 等等
- wjminc(wjm); //[color=Red](这部分我写的函数好像没有被编译,也没有提示出错,所以没有看到 wjm 这个字符串变量, 调试中下接跳过了这一行)[/color]
- //调试时跳过了上面的函数,到达了这里,[color=Red]没有看到 wjm 变化[/color]
- [color=Red]
- [/color]
- HAL_Delay(30000); //
- }
- }
- void wjminc(char *wb) [color=Red]//让指定的字符串的第2到第9个元素组成的数值每调用一次递增1 为什么不会被编译 ?[/color]
- {
- uint8_t i;
- uint8_t a;
- for(i=9;i<2;i--)
- {
- a=(uint8_t)wb[i];
- a++;
- wb[i]=(char)a;
- if(a>0x39) // >“9”
- {
- a=0x30;
- wb[i]=(char)a; // “0”
- }
- else
- {
- break;
- }
- }
复制代码
--------------------------编辑--------------------------
回应2楼主,新增截图。呼叫坛主看看wb在纯文本模式中是显示的,在不是纯文本模式就不显示了???问题大概已经查到原因
for(i=9;i<2;i--) //这里的for循环永远不会执行,所以编译器直接跳过了。果然是太辣鸡。
改为for(i=9;i>=2;i--) 应该是没问题了。
--------------------------编辑--------------------------
- wb[i] //要这样写才能显示[i] , 不然[i]不显示,且后面的字全为斜体。
复制代码
按坛友说的办法把贴上的程序代码以代码格式显示了。学习了。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|