0

私は現在、テキスト ファイルから 2 つの数字のセットから数字を読み取り、それらを出力するプログラムを書いています。後で数値を使用して GCD を決定したいのですが、最初にファイルから数値をスキャンできる必要があります。テキスト ファイルは次のようになります。

24      72
25      50
31      89
...

最初の行の各数字と 2 番目の行の各数字の間でタブが押されます。

私はこれまでにこれを思いつきました(コメントアウトされたセクションはGCDを決定するために使用されます):

/*
File name: euclid.cpp
This program find the largest common multiple of two numbers using the Euclid  method.
*/

#include <stdio.h>
#include "genlib.h"
#include "simpio.h"

int main()
{
    FILE *input;
    long num1=0, num2=0, orinum2=0, rem=0, gcd=0;
    int i=0, size=0;
    char temp;

    input=fopen("Euclid.txt", "r"); 

    while((temp=getc(input))!=EOF)
    {
        if(temp=='\n') size++;
    }
    size++;

    while(i<size)
    {
        fscanf(input, "%d\t%d%[^\n]", &num1, &num2);
        printf("%d\t%d\n", num1, num2);
        orinum2=num2;
/*      while (true)
        {
            rem=num1%num2;
            if (rem==0)
            {
                gcd=num2; break;
            }
            else
            {
                num1=num2;
                num2=rem;
            }
        }
        printf("The GCD of %d and %d is %d.\n", num1, orinum2, gcd);
*/      i++;
    }

    fclose(input);

}

私がチェックしたすべてのウェブページとリソースは、これが機能するはずだと指示していますが、何らかの理由でそうではありません.

4

1 に答える 1

0

fscanfは、「正常に一致して割り当てられた入力項目の数を返します」:

#include <stdio.h>

int main()
{
    FILE *input = fopen("input.txt", "r"); ;
    int num1, num2;

    while(fscanf(input, "%d %d", &num1, &num2) > 0)
        printf("%d\t%d\n", num1, num2);

    fclose(input);
}

パターン ("%d %d") は一致し、任意の数の空白文字で区切られた 2 つの整数を割り当てます。

空白文字には、タブ (\t) と改行 (\n) が含まれます。

于 2014-09-13T23:34:46.440 に答える