Ich versuche ein Programm zu erstellen, das Befehle vom Ubuntu-Terminal entgegennimmt und gleichzeitig eine Datei einliest. Die Befehle wären, wenn der Benutzer "-c" eingibt, liest er die Datei und druckt die Zeichenanzahl, wenn der Benutzer "-w" eingibt, druckt er die Wortzählung aus der gelesenen Datei, "-l", um die Anzahl der Zeilenumbrüche zu drucken Figuren. Jedenfalls habe ich versucht, dies mit fscanf für die Anzahl der Zeichen zu tun, aber es scheint aus irgendeinem Grund nicht zu funktionieren. Kann mir jemand erklären, was ich falsch mache oder ob es bessere Möglichkeiten gibt, dies zu tun? C Befehlsargumente für Sprache + Lesen in Datei
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
int i;
char words[1000];
int counter = 0;
for(i = 0; i < argc; i++){
if(strncmp(argv[i], "-c", 2) == 0){
if(argv[i + 1] != NULL){
while((fscanf(argv[i + 1], "[^\n]%s", words[i])) != EOF){
counter++;
}
printf("%d characters\n", counter);
}
printf("print character count\n");
}
else if(strncmp(argv[i], "-w", 2) == 0){
printf("print word counts\n");
}
else if(strncmp(argv[i], "-l", 2) == 0){
printf("print newline counts\n");
}
else if(strncmp(argv[i], "-h", 2) == 0){
printf("prints help\n");
}
}
}
es ist 'sscanf' nicht' fscanf' aus einer Zeichenkette zu lesen. –
Sie können die getopt-Bibliothek auch verwenden, um Befehlszeilenargumente zu analysieren. –