2017-11-13 6 views
-4

Ich habe ein Problem mit dem Lesen von Daten. Aufgabe:Lesen von der Befehlszeile

Ziel ist es, ein Programm zu schreiben, das einen Huffman-Baum für eine bestimmte Datei erstellen und drucken kann. Das Programm wird den Namen der Datei, in der Form eines einzigen Befehlszeilenargument erhalten, werden alle Daten aus der Eingabedatei gelesen und die Huffman-Baum für diese Datei bauen ...

Beispiel:

$>program.exe simple.in 

Meine Lösung:

string FileName = Console.ReadLine(); 
fileBytes = File.ReadAllBytes(FileName); 

Aber diese Lösung schreibt:

RE: Laufzeitfehler 102: Dereferenzierung Nullwert

Dank

+0

Die Befehlszeilenargumente werden an die 'Main' Funktion durch die' args [] 'Parameter. –

+0

Also, wie soll ich es lösen? Versteh deine Antwort nicht. – Ferenz

+0

'string filename = args [0]'? Dies setzt voraus, dass Ihre Hauptfunktion wie folgt aussieht: 'private static void Main (string [] args)', und der Code ist in dieser Methode enthalten. –

Antwort

0

Ich löste es. Statt:

Console.ReadLine(); 

I verwendet:

args[0]; 
0

Dies sollten Sie für das Lesen von der Kommandozeile gestartet bekommen, aber Sie müssen einige der Forschung auf den Rest tun, was Sie versuchen, wenn Sie einen zu tun haben, und kommen zurück spezifische Frage:

private static void Main(string[] args) 
{ 
    Console.WriteLine($"The command line arguments entered are: {string.Join(" ", args)}"); 

    if (args.Length > 0) 
    { 
     var filePath = args[0]; 

     if (!File.Exists(filePath)) 
     { 
      Console.WriteLine($"The specified file was not found: {filePath}"); 
     } 
     else 
     { 
      // Process the file here 
      var fileBytes = File.ReadAllBytes(filePath); 
     } 
    } 
    else 
    { 
     Console.WriteLine(
      "Error: Enter the full path to a file as the first command line argument"); 
    } 


    Console.WriteLine("\nDone!\nPress any key to exit..."); 
    Console.ReadKey(); 
} 
Verwandte Themen