0

我正在尝试制作一个读取聊天记录并计算一些数字的小程序。事情是我不确定要使用什么命令,因为这些行并不相同。这是日志中的几行

[22:56:37] 你的一击被魔法屏障吸收了!

[22:56:37] 你错过了!

[22:56:37] 你用明亮的奥术加重胡须斧头攻击 Tylaia 并造成 70 (-41) 伤害!

[22:56:37] 你对 Tylaia 造成 19 点额外伤害!

[22:56:37] 你对 Tylaia 造成 66 (-21) 点伤害!

[22:56:37] 你对 Tylaia 造成 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

2

要查找“损坏”一词是否包含在一行中:

if (strstr(line, "damage") != NULL) {
    /* "damage" found */
}
于 2013-03-06T11:46:20.880 回答
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 回答