[英]How to pass values to scanf() via Windows batch file
我想快速给学生的硬件评分,所以我决定为此编写一个批处理脚本。 我知道在 Ubuntu 中更容易做到这一点,但由于学生需要在 Windows 中编写他们的硬件,我也必须在 Windows 中评估它们。 好吧,到目前为止,我编写了以下批处理文件,但它不使用char
变量。
请注意,硬件的目的是绘制一个矩形并用键盘给出的字符( scanf
)填充它
@echo off
set file=%1
gcc %file% -o %file%.exe
REM Followings are "row col fill" respectively
echo 6 10 A | %file%.exe :: #1
echo 6 6 | %file%.exe :: #2
move %file% graded\
move %file%.exe graded\
在这里,在 #1 和 #2 处,它都绘制了带有空格的矩形,但是在 #1 处它应该用A
填充它。
如果我的学生可以在 web 上找到这个问题,我不能把整个解决方案放在这里,但我可以展示scanf() char
部分:
//take num_of_rows and num_of columns
....
printf("\nFilling char?: ");
fflush(stdin);
scanf("%c",&fill);
...
//draw rectangle
最后,这是所需的 output:
TEST-1
Enter number of rows (between 3-20) : 5
Enter number of columns (between 3-80) : 40
Enter a filling character (one char) : #
+--------------------------------------+
|######################################|
|######################################|
|######################################|
+--------------------------------------+
TEST-2
Enter number of rows (between 3-20) : 8
Enter number of columns (between 3-80) : 25
Enter a filling character (one char) : (blank)
+-----------------------+
| |
| |
| |
| |
| |
| |
+-----------------------+
警告:请不要把 C 代码的整个解决方案,因为它是一个硬件。
由于我这里没有正在运行的 Windows 并且不知道作业解决方案的 rest 看起来如何,这可能会或可能不会起作用。 可能fflush(stdin)
仅清除当前输入行而不是完整输入。
您说(在评论中)您的示例解决方案无需批处理即可工作。
然后您可能想尝试将输入放在输入文件的单独行中,该文件将被馈送到作业程序中:
echo.6> input.txt
echo.10>> input.txt
echo.A>> input.txt
%file%.exe < input.txt
echo.6> input.txt
echo.6>> input.txt
echo. >> input.txt
%file%.exe < input.txt
echo
显命令必须像显示的那样,当然你会改变行、列和填充字符。
一些注意事项:
echo
后面的点使它认为给出了一个参数。 特别是在显示的最后一个命令中,否则它只会 output “Echo is ON”(或 OFF。)
如果您不希望在数字之后的输入中有一个,则行/列号之后不应有空格。
在相应的第三个命令中, echo.
和>> input.txt
。 这是填充字符“A”和空格。
您可以省略>>
和文件名input.txt
之间的空格。 这只是为了清楚。
以防万一您不知道: >
在写入之前清除 output 文件; >>
将 append 给它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.