C#以StandardInput方式读取命令行提供的文本文件

C# Reading a text file provided via the command line in the way of StandardInput

我正在尝试解决旧的 FizzBu​​zz 挑战。我弄清楚了 FizzBu​​zz 部分背后的逻辑(为可被 3 整除的数字打印 Fizz,为可被 5 整除的数字打印 Buzz,为可被两者整除的数字打印 FizzBu​​zz)。

说明:

玩家一般坐成一圈。第一个玩家说出数字“1”,然后每个玩家依次说出下一个数字。但是,任何可被 X 整除的数字(例如,三)都将替换为 fizz 一词,而任何可被 Y 整除的数字(例如,五)将替换为单词 buzz。可被两者整除的数字成为嘶嘶声。犹豫或犯错的玩家将被淘汰出局。 编写一个程序,打印出最后一系列数字,其中可被 X、Y 和两者整除的数字替换为“F”代表嘶嘶声,“B”代表嗡嗡声,“FB”代表嘶嘶声。

输入样本: 你的程序应该接受一个文件作为它的第一个参数。该文件包含多个分隔行;每行包含 3 个以 space 分隔的数字。第一个数字是第一个分隔符 (X),第二个数字是第二个分隔符 (Y),第三个数字是您应该数多远 (N)。您可以假设输入文件的格式正确并且数字是有效的正整数。

例如: 3 5 10 2 7 15

输出样本: 打印出系列 1 到 N,将可被 X 整除的数字替换为“F”,可被 Y 整除的数字替换为“B”,可被两者整除的数字替换为“FB”。由于输入文件包含多组值,您的输出应该每组打印一行。确保打印的每一行中没有尾随的空 space。

1 2 F 4 B F 7 8 F B 1 F 3 F 5 F B F 9 F 11 F 13 FB 15

约束条件:

• 测试用例数≤20

• "X" 在 [1, 20]

范围内

• "Y" 在 [1, 20]

范围内

• "N" 在 [21, 100]

范围内

我不是在找人帮我做这件事,只是帮助我更好地理解我是如何阅读文本文件的。如果这是 "dumb" 问题,我深表歉意。我已经研究了微软的开发网络页面以进行澄清,但这让我更加困惑......谢谢。

标准输出 (stdout) 只是常规的控制台输出;

要向其发送内容,只需执行 Console.WriteLine

发送到 stderr Console.Error.WriteLine,但挑战不需要它。

CodeEval 上的挑战不需要您从 stdin 输入任何内容,您只需从第一个文件中获取文件名Main 方法的参数:

public static void Main(string[] args)
{
    var fileContent = File.ReadAllText(args[0]);
}

如果你必须从 stdin 有效地读取,你可以只使用 Console.ReadLine:

string line;

while ((line = Console.ReadLine()) != null)
{
    // Do whatever you need to do with the line variable read from the stdin.
}

或与您提供的代码集成:

using (var reader = new StreamReader(Console.OpenStandardInput()))
{
    Console.WriteLine(FizzBuzz.ParseInput(reader));
}

而且,如果您只需要解析文本,还有另一种选择:Console.In