gpt4 book ai didi

在C程序中调用可执行文件

转载 作者:行者123 更新时间:2023-11-30 18:06:44 27 4
gpt4 key购买 nike

我有一个 C 程序,它将接受一个参数作为输入,如果该参数与可执行文件中的字符串匹配,它将返回 1,否则返回 0。可执行文件名为 prg1。我在名为 inputs.txt 的文件中有一些输入字符串。我想从输入文件中获取这些字符串,并使用每个字符串在 C 程序中调用 prg1 。

我已经尝试了以下代码,但它不起作用。没有段错误,但是当我调用 prg1 时它会执行,因为 prg1 内的 printf() 语句正在工作,我可以看到输出。它将找到的变量更改为0我无法更改prg1。因为我的 friend 给了我那个程序的可执行文件,而不是源代码。头文件是stdio.h和string.h

int main()
{
FILE *fk;
char text[80],inp[16],test[50]={"./prg1 "};
int found=100;
fk=fopen("inputs.txt","r");
while((fscanf(fk,"%s",inp))!=EOF)
{
strcat(test,inp);
found=system(test);
if(found==1)
{
printf("\nAnswer is : %s",inp);
break;
}
strcpy(test,"./prg1 ");

}
fclose(fk);
return 0;
}

我的代码有什么问题吗?

最佳答案

我不确定您想要实现什么,但这里有一些评论:

1 - 您应该测试 fopen 的返回值:

if (!fk) { ... }

2 - 您没有在每次测试之间清理 test 缓冲区,因此您实际上是在调用:

system("prg1 first_word");
system("prg1 first_wordsecond_word");
...

你应该有这样的东西:

strcpy(test, "prg1 ");

进入循环之后、strcat之前。

3 - 您的输入字符串中是否有空格?在这种情况下,您应该修复代码以读取换行符。

4 - 您可能需要使用 EXIT_SUCCESSEXIT_FAILURE 而不是 0 和 1。

关于在C程序中调用可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com