如何在Xcode 14.1中为C程序传入< input.txt命令行参数
解决Xcode 14.1中重定向input.txt输入的可行方案
方案一:通过自定义Shell命令运行程序
Xcode的Run参数不支持Shell重定向符号(<),可以让Xcode调用Shell执行带重定向的命令:
- 打开Scheme编辑器:点击Xcode顶部菜单栏
Product > Scheme > Edit Scheme - 切换到
Run > Info标签页,将Executable改为系统Shell(比如/bin/bash或/bin/zsh) - 切换到
Arguments标签页,在Arguments Passed On Launch里添加命令:-c '$(BUILT_PRODUCTS_DIR)/test < $(PROJECT_DIR)/input.txt'- 若input.txt已复制到产品目录,把
$(PROJECT_DIR)/input.txt替换为$(BUILT_PRODUCTS_DIR)/input.txt
- 若input.txt已复制到产品目录,把
- 先执行
Product > Build生成test可执行文件,再点击Run即可
方案二:修改代码直接读取文件
不想修改Scheme的话,可在代码中将标准输入重定向到input.txt:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { // 根据文件实际位置调整路径 FILE *input_file = fopen("input.txt", "r"); if (!input_file) { perror("无法打开input.txt"); return EXIT_FAILURE; } // 将标准输入重定向到文件 dup2(fileno(input_file), fileno(stdin)); fclose(input_file); // 原有业务逻辑,示例为读取整数输入 int value; while (scanf("%d", &value) != EOF) { // 处理输入内容 } return EXIT_SUCCESS; }
- 若input.txt在项目根目录,需在Scheme的
Run > Options中勾选Use custom working directory并选择项目根目录;若已复制到产品目录,直接写文件名即可
方案三:使用Xcode内置终端临时执行
打开Xcode控制台:View > Debug Area > Activate Console,手动执行命令:
gcc test.c -o test && ./test < input.txt
- 若终端路径不对,先执行
cd $(PROJECT_DIR)切换到项目目录
内容的提问来源于stack exchange,提问作者Shreamy
相关产品推荐
相关产品推荐

