C语言开发带图标C文件编译工具时if字符判断失效问题求助
问题根因
判断语句存在类型不匹配错误:
- 变量
c为char类型,存储的是单个字符的ASCII值 - 双引号包裹的
"y"是字符串字面量,本质是指向存储'y'和结束符'\0'的内存地址的const char*指针
用==直接对比字符和指针,本质是用字符的ASCII值和字符串的内存地址做比较,永远不会成立,因此必然进入else分支。
修复方法
将判断语句中的双引号替换为单引号,单引号包裹的内容才是char类型的字符字面量:
if(c == 'y') {
其他可优化的代码问题
- 读取文件名的
scanf语句多写了取地址符,数组名本身就是首地址,直接写scanf("%s", cName)、scanf("%s", exeName)即可 - Windows环境下小写
sleep单位为毫秒,你写的sleep(1)仅暂停1毫秒,无法保证文件操作完成,建议替换为大写的Windows APISleep(1000),单位为毫秒,实现暂停1秒的效果 - 无需每次执行命令都创建临时bat脚本,可直接调用
system函数执行命令,逻辑更简洁 - 缺少输入长度校验,用户输入的文件名超过63字符会触发缓冲区溢出,建议改为
scanf("%63s", cName)限制输入长度
内容的提问来源于stack exchange,提问作者Checken
相关产品推荐
相关产品推荐

