如何通过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
相关产品推荐
相关产品推荐

