Ich schreibe c-Programm, die als Eingaben fileName und txt fileName erhalten. Mein Programm sollte die EXE-Datei mit den Zeichenfolgen aus der TXT-Datei im nächsten Format ausführen: ./Exename ./fileName .. Ich lese jede Zeile aus der Textdatei mit fgets() -Funktion. Ich verwende system() -Funktion, um die Exe von meinem Code zu starten. dies ist mein CodeAusführen von Programm von c-Code mit System
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define READSIZE 100
int main(int argc,char *argv[]){
FILE * src;
//char path[] ="home/omriz/playGround/Cyber/ex4/1/prog1strings.txt";
char buffer[READSIZE];
int i;
int status;
char *result = malloc(strlen(argv[2]) + strlen(buffer)+2);//+1 for the zero-terminator
if(argc < 3){
printf("prototype error <exe file to run><strings txt file txt>\n");
return -1;
}
printf ("exe file path is : %s \n",argv[1]);
printf ("src file path is : %s \n",argv[2]);
src = fopen(argv[2],"r");
while(!(feof(src))){
fgets(buffer,READSIZE,src);
printf("string read from txt file is: %s\n",buffer);
*result = malloc(strlen(argv[2])+strlen(buffer)+2);
strcpy(result,argv[1]);
strcat(result," ");
strcat(result, buffer);
printf("result is %s\n",result);
printf("before sys command\n");
status = system(result);
printf("status value is %d\n",status);
}
printf("we reached the end of the string.txt file\n");
free(result);
fclose(src);
}
Das Problem ist, dass das Programm beendet, bevor es alle Zeilen aus der Textdatei gelesen und ich weiß nicht, warum.
Die Exe-Datei, die ich aus meinem Code ausführen, sollte String-Wert wie "True" oder "False" Wie kann ich diese Werte unter Berücksichtigung der System() -Funktion zu fangen?
danke.
Sie haben ein Problem mit der Ergebnisspeicherzuordnung. Ich denke, dass stattdessen * result = malloc (strlen (argv [2]) + strlen (Puffer) +2); du wolltest result = .... schreiben (jetzt übertreibst du die ersten 4 Bytes mit dem Zeiger auf den neuen Ergebnisspeicher) Noch etwas - bist du dir sicher, dass du genug Speicher für den Befehl zugewiesen hast? – sborpo