zoukankan      html  css  js  c++  java
  • C#学习记录(五)第一次上机实验

    这一次上机实验的内容是关于CRC循环冗余校验的。虽然实验内容是用英语写的,逐句阅读并不难理解。

    实验内容简单来说是先要编写一个控制台应用程序,读取一个文件的内容,根据CRC循环冗余校验的规则进行运算,最后将运算的结果输出到控制台。

    然后编写一个窗体应用程序对这个控制台程序进行调用,读取用户在窗体中输入的文件路径,最后将校验后的内容输出到窗体当中显示。

    对于我,这次实验的难点主要并不在控制台程序中的校验过程的试验,而是C#中流的输入输出以及不同程序之间的连接通信。C#中的流的输入输出与我之前学习的C++的流输入输出有很大的不同,个人感觉相比C++要略微复杂一些。

    这是控制台程序中的输入输出的一些代码

     1  try
     2             {
     3                 FileStream fStream = new FileStream(args[0], FileMode.Open, FileAccess.Read);
     4 
     5                 BinaryReader binReader = new BinaryReader(fStream);
     6             byte message;
     7                 while (true)
     8                 {
     9                     message = binReader.ReadByte();
    10                     CalcCRC.CalculateCRC(message);
    11                 }
    12             }
    13             catch (EndOfStreamException e)
    14                 {
    15 
    16                 }

    这是窗体应用程序中调用控制台应用程序的代码

     1  private void buttonOK_Click(object sender, EventArgs e)
     2         {
     3             Process process = new Process();
     4             process.StartInfo.FileName = @"f:\C#\C#选修\Project1\Project1\bin\Release\Project1.exe";
     5             process.StartInfo.RedirectStandardInput = true;
     6             process.StartInfo.RedirectStandardOutput = true;
     7             process.StartInfo.CreateNoWindow = true;
     8             process.StartInfo.UseShellExecute = false;
     9             process.StartInfo.Arguments = filePathTextbox.Text;
    10             process.Start();
    11 
    12             string outPut = process.StandardOutput.ReadLine();
    13 
    14             outputTextbox.Text = outPut;
    15            
    16         }

    刚开始编写的时候,我采取的并不是将文件路径直接传入控制台程序的方法,而是将文件在窗体应用程序中读取并分段传入控制台程序中运算。控制台程序读取传入内容有两种方法,一种是作为参数传入,在程序中保存在Main函数的args参数中;另一种是采用流读入的方法传入。若在控制台中输入"*.exe arg1 arg2"的方式运行程序,以上两种方法都能够传入参数没有问题。然而,若是用另一个程序通过process的方法运行,这两种方法必须严格区分。开始我编写控制台程序用args传入参数,然后在用process的方法调用的时候发现无论如何都无法传入参数,便是没有将这两种方式区分开来。

    最后贴上窗体程序的运行结果

  • 相关阅读:
    BZOJ_3159_决战
    11.19 ~ 11.25训练计划+总结
    BZOJ_1304_[CQOI2009]叶子的染色_树形DP
    BZOJ_1999_[Noip2007]Core树网的核_单调队列+树形DP
    BZOJ_4033_[HAOI2015]树上染色_树形DP
    BZOJ_5338_ [TJOI2018]xor_可持久化trie
    BZOJ_2957_楼房重建_线段树
    BZOJ_3124_[Sdoi2013]直径_树形DP
    BZOJ_4987_Tree_树形DP
    「JOISC 2019 Day2」两个天线(线段树)
  • 原文地址:https://www.cnblogs.com/zany/p/4399113.html
Copyright © 2011-2022 走看看