我正在写c程序,它获取输入执行fileName和txt fileName。 我的程序应该使用下一格式的txt文件中的字符串运行exe文件: ./exame ./fileName .. 我用fgets()函数从文本文件中读取每一行。 我使用system()函数从我的代码运行exe。 这是我的代码
#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);
}
问题是程序在读取文本文件中的所有行之前退出,我不知道原因。
我从我的代码运行的exe文件应该返回字符串值 &#34;真&#34;或&#34;错误&#34; 考虑使用system()函数,我怎样才能捕获这个值?
感谢。
答案 0 :(得分:1)
*result = malloc(strlen(argv[2])+strlen(buffer)+2);
结果是一个char *,所以这是一个错误(只需删除*)
编辑:一点解释
malloc返回一个void *,所以在这里你将结果指向的1byte设置为malloc返回的指针