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

使用C语言open函数带O_CREAT参数创建文件时文件名末尾多问号如何解决

问题原因

你遇到的文件名末尾自动追加?的异常,根源是输入字符串分割逻辑的分隔符设置错误:

  • 你从终端读取的用户输入行末尾自带换行符\n,但调用strtok时仅指定了空格" "作为分隔符,导致换行符没有被过滤,残留在command指向的文件名末尾
  • 终端显示文件名时会把不可打印的\n字符替换为?,所以看起来是文件名被自动追加了问号
解决方法
  1. 修改strtok的分隔符参数,将换行符加入分隔符集合:
    把原来的代码行
command = strtok(NULL, " ");

修改为

command = strtok(NULL, " \n");

修改后strtok会同时将空格、换行符作为分割边界,不会把换行符留在文件名中。

  1. (可选优化)增加空值校验逻辑,避免用户未输入文件名时程序触发空指针异常:
    在调用open前增加判断:
if (command == NULL) {
    fprintf(stderr, "未指定输出文件名\n");
    exit(1);
}
  1. (可选优化)普通文本文件不需要执行权限,open的权限参数可以从0700改为0644,更符合常规文件权限规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:48:01