[英]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循環,可以幫助我到達下一個句子。 現在,我嘗試了各種東西,但都無濟於事。 你們能幫我嗎?
編輯:
您需要處理幾個問題:
您可以通過在main
使用while
循環來完成第一個。
int main(void)
{
while ( 1 )
{
divideTwoNums();
}
return 0;
}
要檢測到沒有輸入,您需要做幾件事。
檢查getchar()
的返回值。 如果返回值為EOF,則沒有更多輸入。
從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.