gpt4 book ai didi

c - 从 c 中的 .in 文件读取

转载 作者:行者123 更新时间:2023-11-30 14:46:34 25 4
gpt4 key购买 nike

我一直在编写这个 c 文件,该文件读取 .in 文件一行中的 2 个整数。到目前为止,我的代码如下所示:

#include <stdio.h>

void divideTwoNums()
{
int c = 0;
int num1 = 0;
int num2 = 0;
int product = 0;
c = getchar();

while (c != '\n' && c != ' ' && c != '\t')
{
num1 = 10 * num1 + (c - '0');
c = getchar();
}
c = getchar();
while (c != '\n' && c != ' ' && c != '\t')
{
num2 = 10 * num2 + (c - '0');
c = getchar();
}
product = num1 / num2;
printf("%d / %d = %d\n", num1, num2, product);
}
int main(void)
{
divideTwoNums();
return 0;
}

当我在 .in 文件上尝试此代码时,如下所示:

96 16

我的 .out 文件如下所示:

96 / 16 = 6

所以,我知道我正在做正确的事情,因为代码只适用于一行。然而,当涉及到多行时,我陷入了困境。假设我的 .in 文件如下所示:

96 16
50 10

我的代码无法工作,因为在divideTwoNums 方法中没有while 循环来帮助我进入下一个句子。现在,我尝试了各种方法,但都没有效果。你们能帮我一下吗?

编辑:

Screenshot of the code for R Sahu

最佳答案

您需要处理几个问题:

  1. 使用循环将数字除以更多行。
  2. 确定何时退出循环,即检测何时不再有输入。

您可以通过在 main 中使用 while 循环来完成第一个。

int main(void)
{
while ( 1 )
{
divideTwoNums();
}
return 0;
}

要检测没有输入,您需要执行以下操作。

  1. 检查getchar()的返回值。如果返回值为EOF,则没有更多的输入。

  2. divideTwoNums() 返回一个值以指示不再有输入。

这是该函数的骨架更新。我假设您可以完成其余的工作。

// The return value needs to be int instead of void.
int divideTwoNums()
{
...

c = getchar();
if ( c == EOF )
{
// Return 0 to indicate to stop the loop.
return 0;
}

...

// Return 1 to indicate to continue with the loop.
return 1;
}

并将main更改为:

int main(void)
{
int cont = 1;
while ( cont )
{
cont = divideTwoNums();
}
return 0;
}

关于c - 从 c 中的 .in 文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52154180/

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