繁体   English   中英

如何通过 Windows 批处理文件将值传递给 scanf()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM