2017-12-06 6 views
0

So lese ich meine Textdateien in cmd. Es ist eine Einschränkung.Kann den Dateinamen nicht lesen, wenn die Eingabe über cmd in C erfolgt (über args [1])

>gcc -std=c99 myproject.c -o myproject 
>myproject<1.txt 

Was ich versuche zu erreichen, ist der Dateiname „1.txt“ als String, so dass ich die Nummer Zeilen in der Datei lesen kann. Ich sah durch ein Bündel von Lösungen und alle von ihnen vorschlagen argv [1], aber wenn ich dies tun:

int main(int args, char*argv[]) { 
printf("File: %s\n", argv[1]); } 

es null druckt.

args gibt 1 und argv [0] gibt myproject. Ich weiß nicht, was ich sonst noch versuchen könnte. Alles was ich erreichen möchte ist die Anzahl der Zeilen in der angegebenen Eingabedatei. Bitte helfen Sie. Vielen Dank!

+2

Warum hast du das '<' da? entfernen Sie es. – tkausl

+0

@tkausl Hi, so ist das Skript zum Lesen des Projekts. – PhastOfTheFuture

+0

'myproject <1.txt' übergibt keine Argumente an' myproject'. 'myproject 1.txt' tut das. –

Antwort

2

Verwendung der Umleitung (<) gibt die Daten an das Programm auf der Standardeingabe (das Programm sieht die Daten so, als ob sie von der Tastatur eingegeben wurden), wenn Sie nur den Parameter übergeben möchten, löschen Sie einfach die Umleitung.

myproject 1.txt 

... wenn Sie wollen einfach nur ‚count Zeilen‘ einen Versuch, um den wc -l Befehl geben, wenn es sich um eine Hausaufgaben ist, nur überprüfen Sie die Datei in der richtigen Art und Weise zu tun hat: Verwenden Sie fscanf, fgetc , fputs, fputc, ... anstelle der 'standardeingabe' ein scanf, bekommt, getc, putc, ...

+0

Dies funktioniert nicht für mich, da es nur den Dateinamen gibt, aber der Rest des Programms friert ein. – PhastOfTheFuture

+2

Kann das Problem im "Rest des Programms" sein? (Wie Sie sagten, der Code über dem Code 'druckt den Dateinamen', was ist es zu tun) – DDS

+0

Antwort wurde bearbeitet – DDS

Verwandte Themen