0

チャットログを読んで数字を計算する小さなプログラムを作ろうとしています。行が同一ではないため、どのコマンドを使用すればよいかわかりません。ログから数行を抜粋

[22:56:37] あなたの攻撃は魔法の障壁によって吸収されました!

[22:56:37] 懐かしい!

[22:56:37] あなたは明るいアルカニウムの重りを付けたひげの生えた斧でティライアを攻撃し、70 (-41) のダメージを与えます!

[22:56:37] ティライアにクリティカル ヒットを与え、追加で 19 ダメージを与えます!

[22:56:37] ティライアに 66 (-21) のダメージを与えました!

[22:56:37] ティライアに 17 の追加ダメージを与えました!

[22:56:37] Tniatha は、72 のダメージを与える彼女の明るいダスウッド エクセプショナル バックラーであなたの手を叩きます!

[22:56:37] Tniatha のクリティカル ヒットにより、さらに 32 ダメージが与えられます!

[22:56:37] Tniatha はあなたに 8 つの追加ダメージを与えます!

[22:56:37] Tniatha はあなたに 8 ダメージを与えます!

[22:56:37] あなたは土の雲に包まれています!

「損傷」が発生した行のみをインポートするにはどうすればよいですか?

これは私がこれまでに持っているものです。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct{
    char your_self[15], char who_ever_else[15];
    int damage_done, damage_taken, healing_done, healing_taken;
} input;


int main(void){
    input *inputArray = malloc(1);
    read_log_file(&inputArray);
    return 0;
}

void read_log_file(input **inputArray, int *lineCount){
    char your_self[15], char who_ever_else[15];
    int damage_done, damage_taken, healing_done, healing_taken;

    FILE *inputFile;
    inputFile=fopen("chat.log", "r");
    if(inputFile = NULL){
        printf("File cant open");
        exit(1);
    }
}

このようなことを考えていました;p

  (fscanf(inputFile, ".............."...

しかし、すべての行が同一ではないため、変数に間違った値が入りますか?

ありがとうございました!

4

2 に答える 2

1

私は最近、同様のコードを書きました。これが役立つと思います

char *match;

/* Read line by line - fgets reads only till a newline/ EOF - u can refer help*/
while (fgets(buffer, sizeof(buffer), fp))
{
    /* Search for pattern */
    match = strstr(buffer,"damage");

    if (match != NULL)
    {
                  //Do ur stuff
                 }
     }
于 2013-03-06T12:09:19.573 に答える