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

如何通过Matlab向含get_char的无参main的C程序EXE自动传参

在Matlab中向使用getchar()的EXE自动输入字符(无需main传参)

核心思路是直接向EXE的**标准输入流(stdin)**写入字符,因为getchar()是从stdin读取输入,而非命令行参数,完全不需要修改原C程序的void main()结构。以下是两种实用的Matlab实现方案:

方案1:临时文件重定向输入

通过将需要传递的字符写入临时文本文件,再让EXE从该文件读取输入:

% 1. 写入要传递的字符到临时文件(比如传字符'a',多字符可写'ab')
fid = fopen('temp_input.txt', 'w');
fwrite(fid, 'a');
fclose(fid);

% 2. 运行EXE,将标准输入重定向到临时文件
system('your_program.exe < temp_input.txt');

% 3. 可选:清理临时文件
delete('temp_input.txt');

方案2:管道直接传递输入(无临时文件)

利用系统命令的管道功能,直接将字符注入EXE的标准输入:

Windows系统

% 传递单个字符'a',避免默认换行符用echo|set /p
system('echo|set /p="a" | your_program.exe');
% 若允许换行,直接用echo
system('echo a | your_program.exe');

Linux/macOS系统

% 传递单个字符'a',-n参数避免追加换行符
system('echo -n "a" | ./your_program.exe');
% 精准控制输入(比如带换行)用printf
system('printf "a\n" | ./your_program.exe');

注意事项

  • 若程序多次调用getchar(),只需在输入字符串中按顺序写入对应字符即可,比如'abc'对应三次输入。
  • 确保EXE文件路径正确:要么放在Matlab当前工作目录,要么写绝对路径(如'C:\projects\your_program.exe')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:47:04