【发布时间】:2019-08-09 08:28:45
【问题描述】:
使用 C,我想基于另一个函数运行一个函数。我需要检查是否执行了特定功能。如果是,那么我希望这个函数在调用时也能执行,否则不。
我正在从文件中读取一些文本。在第一个函数中,我想阅读它们并打印它们。现在在第二个函数中,我需要一个条件,如果第一个函数被执行,那么也运行它。否则,什么都不做。
我该怎么做?
编辑
注意:这是完整的解决方案。问题得到解答后。
我的代码在这里:
#include <stdio.h>
static int already_run = 0;
void Reading_Function(FILE **rf)
{
already_run = 1;
*rf=fopen("file.txt","r");
if(rf==NULL)
{
printf("Error in file openning.");
return 0;
}
char first [120];
fscanf(*rf,"%s",first);
printf("Value: %s", first);
}
// this is the second function
void Second_Function(FILE *rf)
{
if (already_run)
{
char second [50];
fscanf(rf,"%s",second);
printf("Value: %s", second);
}
else
return;
}
int main()
{
char t;
FILE *rf;
while(scanf("%c", &t)==1)
{
switch(t)
{
case 'f' :
Reading_Function(&rf);
break;
case 's' :
Second_Function(rf);
break;
}
}
return 0;
}
如果问题不清楚,请告诉我。谢谢。
【问题讨论】:
-
设置一个标志。如果设置了标志,请不要再这样做。
-
我应该在这两个函数之外设置那个标志吗?以及如何在每个中调用它?
-
你应该在函数之外define标志,但是set它要么在函数内部,要么在你的
main()例程中调用之后功能。如if (!ReadingDone) { ReadingFunction(rf); ReadingDone = 1; }或类似的int ReadingDone = 0;建立在main()开头附近。 -
第一个函数运行,它也打印一个值。但是当我从键盘输入
s时,它不会打印任何内容。在什么情况下我应该把你上面提到的那个标志放在上面? -
不要像这样笨拙地使用
scanf,而是坚持使用getc或其他简单的东西。还可以考虑使用argv而不是用户输入,这样您就可以使用相同的参数轻松地重复调用可执行文件,从而使测试更容易和更可预测。
标签: c function conditional-statements call