命令行两个.txt文件的参数

时间:2015-05-19 11:24:29

标签: c# command-line-arguments

我有以下程序,只需将.txt文件中的两个矩阵读入二维数组。我从VS2012的开发人员命令提示符运行它,如第一张图片



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;


namespace Assignment3
{
    class Program
    {
        static void Main(string[] args)
        {

            int[,] matrix1 = new int[3, 3]; int[,] matrix2 = new int[3, 3]; int[,] matrix3 = new int[3, 3];
            int i = 0, j = 0, k = 0;
            #region Reading Matrices From Files
           
            string text = System.IO.File.ReadAllText(@"Matrix1.txt");
            
           
            foreach (var row in text.Split('\n'))
            {
                j = 0;
                foreach (var col in row.Trim().Split(' '))
                {
                    matrix1[i, j] = int.Parse(col.Trim());
                    j++;
                }
                i++;
            }
            Console.WriteLine("Execution Starts Here");
            Console.WriteLine("\nMatrix1 Has been read from file Matrix1.txt...\n");
            for (i = 0; i < 3; i++)
            {
                for (j = 0; j < 3; j++)
                {
                    Console.Write(String.Format("{0}\t", matrix1[i,j]));
                }
                Console.WriteLine();
            }

            
            string text2 = System.IO.File.ReadAllText(@"Matrix2.txt");
            i = 0;

            foreach (var row in text2.Split('\n'))
            {
                j = 0;
                foreach (var col in row.Trim().Split(' '))
                {
                    matrix2[i, j] = int.Parse(col.Trim());
                    j++;
                }
                i++;
            }
            Console.WriteLine("\n\nMatrix2 Has been read from file Matrix2.txt...\n");
            for (i = 0; i < 3; i++)
            {
                for (j = 0; j < 3; j++)
                {
                    Console.Write(String.Format("{0}\t", matrix2[i, j]));
                }
                Console.WriteLine();
            }
            #endregion
&#13;
&#13;
&#13; enter image description here 这里我打算做的是执行带有文件名的program.exe(意思是在执行时给出文件名),就像在第二张图片中一样。

enter image description here

我认为这与某些事情有关,例如命令参数的数量。有人帮我请。

1 个答案:

答案 0 :(得分:1)

string[] args方法的Main部分包含传递给应用程序的任何命令行参数。您可以通过args[0]args[1]访问文件名。

编辑:只需添加,您可以通过查看项目的属性来指定在从Visual Studio调试/运行应用程序时使用的命令行参数(在解决方案资源管理器中选择项目并按Alt+Enter}并将其设置在Command Line Arguments标签下的Debug字段中。

编辑:在评论中回答您的问题:您的位置

string text = System.IO.File.ReadAllText(@"Matrix1.txt");

您已将文件名硬编码为Matrix1.text。如果希望能够在运行时指定文件名,则可以选择将它们作为命令行参数传递。可以使用main方法中的args[]参数访问这些命令行参数。 args [0]包含第一个参数值,args [1]包含第二个参数值,依此类推。所以上面的行可以替换为

string text = System.IO.File.ReadAllText(args[0]);

值得注意的是,人们通常在Main方法的顶部有一个验证部分,它确认用户已经传递了预期数量的参数,并且它们是预期的类型。如果有任何例外,通常会显示使用消息,然后退出应用程序。