我还无法解决一个非常基本(令人尴尬)的问题。
我创建了一个函数minimum
,该函数在调用时应显示用户输入文件的最小整数。我也在用atoi
。
工作功能如下:
int minimum(int number) {
static int minNumber = INT_MAX;
if (number < minNumber) {
minNumber = number;
}
return minNumber;
}
接下来,稍后当我从文件中读取用户已输入这些整数时,将在程序中调用该函数。
编辑我现在正在使用以下正确的代码,如下所示
for (int i = 1; !finished; i++)
{
if (fscanf(fp, "%s", word) < 1)
finished = 1;
else {
number = atoi(word);
minNumber = minimum(number);
printf("\nstring is \t %s\n", word);
printf("integer is \t %d\n", number);
}
}
minimum(number);
解决了-我的问题是number
总是总是以最小的返回我的最后一个输入。
假设我还想显示此整数的索引,从而确定最小数字的位置。创建另一个功能是路要走吗?还是可以仅通过更改当前功能来完成?
minimum(number);
位于循环之外,因此基本上您只检查最后一个输入。
但是,将其移入for
循环仍然无法解决问题:每次调用minimum()
它时,只需将其与初始化为的局部变量进行比较,就可以INT_MAX
轻松地返回它得到的数字(因为它是< INT_MAX
每次)。
所以首先:正如@WhozCraig在评论中提到的那样,创建minNumber
对minimum
函数可见的对象,但对其的每次调用都相同:static int minNumber = INT_MAX;
minimum
函数现在看起来像这样:
int minimum(int number) {
static int minNumber = INT_MAX;
if (number < minNumber) {
minNumber = number;
}
return minNumber; // return a minimum for later print it out
}
请注意,我删除了对的呼叫,printf
因为它将minNumber
在每次呼叫中打印出来。
让我们将迄今发现的极小值存储在某个地方:
int minNumber = 0
for
循环前
现在进入循环:
...
else {
number = atoi(word);
minNumber = minimum(number); // now we call it for every input
printf("\nstring is \t %s\n", word);
printf("integer is \t %d\n", number);
}
...
现在只需将其打印出来:
printf("min number is %d\n", minNumber);
顺便说一句,还有一种通过@KeineLust建议的方式传递指针
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句