-1

数値 1 を数値 4 で読み込んで乗算したいとします。

5000     49     3.14     Z      100
0322     35     9.21     X      60

現在、私は持っていますが、情報を操作することはできず、情報をコピーすることしかできません

#include <stdio.h>
#include <stdlib.h>
#define FILE_1 "File1.txt"
#define FILE_2 "File2.txt"
int main (void)
{
    // Local Declarations 
    char score;
    int curCh;
    int count = 0;
    FILE* sp1;
    FILE* sp2;

    if (!(sp1 = fopen (FILE_1, "r"))) //check if file is there
    {
        printf ("\nError opening %s.\n", FILE_1);
        return (1);
    } // if open error 
    if (!(sp2 = fopen (FILE_2, "w")))
    {
        printf ("\nError opening %s.\n", FILE_2);
        return (2);
    } // if open error

    while((curCh = fgetc(sp1)) != EOF)
    {
        printf ("%c", curCh); //copy the contents
            count++;
    } // while 


    return 0;
}
4

2 に答える 2

1

行全体を処理するには fgets() を使用する必要があるという Randy と Jonathan のコメントに同意します。既知の区切り記号 (タブなど) と既知の列がある場合は、 strtok() を使用して区切り記号で行をトークン化し、カウントを使用して必要な値を取得できます。

sscanf() に加えて、以下の Randy のコメントに記載されているように、また StackOverflow の他の場所で参照されているように、atoi() および atof()を使用して strtol()をうまく利用できる場合があります。

于 2013-03-15T02:24:39.427 に答える
0

1 に 4 を掛けるのは簡単です1 * 4

「同じファイルから読み取った値をbetter_identifier掛けるbest_identifier」ということですか?uint64_tあなたが思いつくことができる最高の識別子は何ですか?

次のものが必要です#include

#include <stdio.h>
#include <assert.h>
#include <stdint.h>
#include <inttypes.h>

これをコメントアウトすることを忘れないでください:

/*while((curCh = fgetc(sp1)) != EOF)
{
    printf ("%c", curCh); //copy the contents
        count++;
}*/ // Make sure you comment this, because the side-effect of this
    // ... won't allow you to do anything else with sp1, until you
    // ... rewind

ところで、あなたはどの本を読んでいますか。

uint64_t better_identifier = 0, best_identifier = 0;
assert(fscanf(sp1, "%"SCNu64" %*d %*g %*c %"SCNu64, &better_identifier, &best_identifier) == 2);
printf("%"PRIu64" * %"PRIu64" = %"PRIu64"\n", better_identifier, best_identifier, better_identifier * best_identifier);

おそらくx、 andyを識別子として使用するつもりでした。確かに、それよりも優れた識別子を思い付くことができます!

uint64_t x = 0, y = 0;
assert(fscanf(sp2, "%"SCNu64" %*d %*g %*c %"SCNu64, &x, &y) == 2);
printf("%"PRIu64" * %"PRIu64" = %"PRIu64"\n", x, y, x * y);
于 2013-03-15T02:24:09.210 に答える