通过 C# 对 C 程序的多个输入

Posted

技术标签:

【中文标题】通过 C# 对 C 程序的多个输入【英文标题】:Multiple Inputs to a C Program through C# 【发布时间】:2014-08-28 07:27:54 【问题描述】:

我正在将输入传递给通过 C# 由 Compiler 编译 C 程序生成的 .exe 文件。我的 C# 代码是:

string line = "1" + " 2 " ;

Process p = new Process();                
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.StartInfo.FileName = "C:\\..\\demo1.exe";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.Start();
p.StandardInput.WriteLine(line);

p.Close();

我成功地为读取一个输入的 C 程序传递了单个输入。但是当我尝试将多个输入传递给需要多个输入的 C 程序时,它只运行 exe 文件并且它不读取/传递我提供的任何输入。我也隐藏了exe文件的进程,但它会打开它。

我尝试向其传递多个输入的 C 代码是:

#include<stdio.h>

int main()

   int a, b, c;

   printf("Enter two numbers to add\n");
   scanf("%d%d",&a,&b);

   c = a + b;

   printf("Sum of entered numbers = %d\n",c);

   return 0;

我们将不胜感激任何形式的帮助/建议。

【问题讨论】:

【参考方案1】:

您是否尝试过使用Write 而不是WriteLine

另外,如果可能的话,我建议更改 C 应用程序以将您的输入作为命令行参数,这样您就可以直接使用输入启动它。

【讨论】:

使用 Write 代替 WriteLine 不会打开 exe 并在隐藏状态下运行它,但它会将数字“1”和“2”的总和显示为数字“12”。 我正在开发这个项目以使用与 C# 应用程序和编译器链接的网站在线检查 C 编程作业,因此将代码更改为命令行参数与要求相矛盾。

以上是关于通过 C# 对 C 程序的多个输入的主要内容,如果未能解决你的问题,请参考以下文章

C# - 向子进程发送输入 - 控制台应用程序

C# + EntityFramework:通过查询将多个组转换为嵌套 JSON

C#调用dll时的类型转换总结

C#通过本地IP获取本地MAC地址(多个接口)

如何使用C#语言编写程序通过ip地址找出端口号

C语言中利用scanf语句输入多个值的问题