Hallo Ich schreibe ein Programm, um Befehle aus der Textdatei auszuführen. Der Code unten wird verwendet, um Zeile für Zeile zuerst in Char-Array zu speichern. SoSpeichern von Zeile für Zeile aus Textdatei in Char-Array mit Char-Zeiger
Ich erwarte, dass es so etwas wie
args[0]= The first line of text file
args[1]= The second line of text file
... and so on
In meinem Code zu tun, würden alle der Arrays von der letzten Reihe abgedeckt werden. Und ich kann nicht herausfinden warum.
Kann mir jemand helfen, dies zu beheben und mir sagen, warum mein Code das tut. Außerdem muss ich char * args [] behalten. cos würde ich später mit execvp() verwenden.
int main(int argc, const char * av[]) {
FILE *fp;
fp = fopen(av[1],"r");
int n_lines=0;
char in[100],*args[16];
int size=sizeof(in);
while(fgets(in, size, fp)!=NULL){
args[n_lines] = in;
printf("Args[0] is %s\n",args[0]);
n_lines++;
}
printf("Now Args[0] is %s\n",args[0]);
}
Ausgabe
zacks-MacBook-Pro:prac2 zack$ ./a.out test
Args[0] is ./addone
Args[0] is ./add
Now Args[0] is ./add
Einzeln von Ihnen Problem: Sie wissen, dass Sie auf Probleme stoßen werden, wenn Ihre Datei mehr als 16 Zeilen. –
Unabhängig von Ihrem Problem sollten Sie überprüfen, ob die Datei vorhanden ist und den Dateizeiger schließen, wenn Inhalt gelesen wird ... – user3078414