簡體   English   中英

從C中的.in文件讀取

[英]Reading from a .in file in c

我一直在編碼此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

我的代碼無法正常工作,因為在dividTwoNums方法內沒有while循環,可以幫助我到達下一個句子。 現在,我嘗試了各種東西,但都無濟於事。 你們能幫我嗎?

編輯:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM