You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 API Sleep(1000),单位为毫秒,实现暂停1秒的效果
  • 无需每次执行命令都创建临时bat脚本,可直接调用system函数执行命令,逻辑更简洁
  • 缺少输入长度校验,用户输入的文件名超过63字符会触发缓冲区溢出,建议改为scanf("%63s", cName)限制输入长度

内容的提问来源于stack exchange,提问作者Checken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:36:02