1. 这种缝缝补补的修改方法似乎不够优秀,一定有一种更高屋建瓴的方法可以更容易的通过逻辑修改?

2. 修改点记录:

增加分划记录功能,增加位置:TIMER里做last变量记录检测,如果符合判断条件就根据射表或APP解算重新打开功能(last变量只有手动开关才可以做修改,神奇的是MENU_L居然完美的避开了代码的修改)

增加强制百米归零功能:百米归零检测置于show_shoot_cross里,因为只有当打开射表和解算功能后每次调用该函数可以检测一下保证实时响应,平时就不用总是调用。不过这样说的话似乎那个timer里的检测也可以放在别的地方检测欸。

3. 用sprintf的方法拼接字符串。strcat也可以,但是strcat似乎只能拼接在 ‘\0’ 的末尾?它判断字符串末尾的机制是什么呢。而且 strcat要注意的一点是,两个参数在C语言里应当是字符数组的形式或者字符串的形式,不然就会越界错误。

4. 字符串的长度就是这个字符串所包含字符的个数,但是这个长度是不包含 NUL 字符的。C 语言中使用库函数 strlen 来计算字符串长度。且 strlen的返回值类型是 size_t(无符号整数类型)。

sizeof 获取某个数据类型所占用存储空间的字节数,如果是字符数组,不包含休止符。

测试记录:printf 输出的%s 字符串是不会包含 ‘\0’ 休止符的;sizeof经过我的测试输出的是字符数组所给的长度;strlen 函数计数确实不会包含 ‘\0’ ;printf 输出时遇到 \0 会停止执行 printf ;经过测试证明:strcat 判断目标数组结尾的方法是休止符 ‘\0’ ,并且这种拼接会将后续字符覆盖掉,例如 y k \0 l 的数组拼接 y \0 \0 ,输出的结果字符串是 y k y,这说明之前结论的正确性。

printf(“>>>>>>>>>>>>>>>>>>>>>>>>>>>>开机测试1010\n”);
char buffer[3] = {‘y’,’\0′,’\0′};
char test1[16] = “what the fuck”;
strcat(test1,buffer);
printf(“拼接后:%s\n”,test1);
char buffer2[7] = {‘y’,’k’,’\0′,’l’};
strcat(buffer2,buffer);
printf(“拼接到含有杠0的数组的情况:%s\n”,buffer2);
printf(“sizeof %d\n”,sizeof(buffer));
printf(“strlenbuffer %d\n”,strlen(buffer));
printf(“strlentest1 %d\n”,strlen(test1));

除此之外,赋值的时候如果将 int 型赋给 char 型的变量是无法赋值成功的,虽然原理暂时不明,但是建议用 sprintf 来将 int 型赋给 char 型。

整型转字符型–>可以使用 sprintf 的方法,字符型转整型,可以使用 – ‘ \0 ‘ 的方法或者用 sscanf 的方法。这里我发现,用我自己写的那个什么解析函数还是会出错,就用 sscanf 吧,至于为什么等过一会儿再考虑。

字符数组的初始化可以用 char a[10] = ‘\0’ 的方法,至于后续是否默认填充为 ‘\0’ 要实验测试。

测试证明,write 函数只能写字符串进文件,不能写整型进去。O_TRUNC参数确实可以起到覆盖原有数据的作用。

同时write 和 read 函数读写时如果读到负号,用我自己写的解析函数是不能够得到正确结果的,因此还是要用 sscanf 。

哦对还有我的一个记忆深刻的地方,就是打开文件时应该不能多次用/?仔细想想这一点似乎有一点问题,因为我打开也是在这个目录下打开,为什么就不行呢?很明显,应该是open函数不能创建不存在的目录。

5. 测试效果实现也需要正确的方法,不需要全部测一遍,能找到几个点测一下就可以了。

6. 通配符的使用是值得学习记录的(通配符区分大小写)

?:匹配一个非空的任意字符 ;*:匹配任意数量的任意字符;\:表示转义字符;[]:表示匹配中括号中包含的任意一个字符;[^]:表示匹配不属于中括号中字符的数据。

7. 对数组取地址和直接用数组有啥区别

测试证明,一个数组a的&a 和直接用 a,值是一样的;对数组初始化的时候,如果初始化所给赋值个数未满数组个数,则后续会默认以 ‘\0’ 来填充,所以全部置空只要初始化为 = { ‘\0’ }即可,同时printf输出到 ‘\0’ 时是真的会停止输出。

printf(“>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.>>>>>>>>>>>>>.1011开机测试\n”);{
char a[10] = {‘\0’};
char b[10] = {‘1’};
char c[10] = {‘\0′,’1’};
int i;
for ( i = 0; i < 10; i++)
{
printf(“a%d:%c “,i,a[i]);
}printf(“\n”);
for ( i = 0; i < 10; i++)
{
printf(“b%d:%c “,i,b[i]);
}printf(“\n”);
for ( i = 0; i < 10; i++)
{
printf(“c%d:%c “,i,c[i]);
}printf(“\n”);

char d[1] = {‘\0’};
printf(“&a:%x a:%x\n”,&a,a);}

原文地址:http://www.cnblogs.com/bird436/p/16745526.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性