#include <cstdio>
#include <cstring>

#define GLOBAL

//GV.h
GLOBAL int message_cnt;//何個メッセージが書かれたかの最大値を見る
GLOBAL int message_graph_cnt;//メッセージを1から順に表示する
GLOBAL int message_rest_flag;//メッセージが2つ以上残っていたら移動させない
GLOBAL int pre_icon[1024];
GLOBAL char pre_id[1024][255];//pre_id[配列数][文字数]
GLOBAL char pre_message[3][1024][255];//pre_message[行目][配列数][文字数]
 
 
//message.cpp
 
//プロジェクト中のあちこちからメッセージを受け取る関数。1ターンに複数のメッセージを受け取ることもあるので、
//それを処理する。（敵を倒し、レベルが上がれば、「～に～ダメージ」「～をたおした」「レベルがあがった」の三つ）
void message_add(int icon,char id[],char message[]){//アイコンの画像番号、名前、メッセージ
        char *tp;
        int i=0;
        message_cnt++;
        pre_icon[message_cnt]=icon;
        strncpy(pre_id[message_cnt],id,255);
        tp = strtok( message, "@" );/*↓おそらくここから問題の場所*/
        strncpy(pre_message[0][message_cnt],tp,255);
        while ( tp != NULL ) {
                i++;
                tp = strtok( NULL,"@" );
                if ( tp != NULL ) strncpy(pre_message[i][message_cnt],tp,255);
        }
}

int main(void) {
    char id[255]="namari(namari)";
    message_add(0,id,"なんという偽物・・・@ちょっとだけ回復");
    printf("pre_icon = %d\n",pre_icon[1]);
    printf("pre_id = %s\n",pre_id[1]);
    printf("pre_message[0] = %s\n",pre_message[0][1]);
    printf("pre_message[1] = %s\n",pre_message[1][1]);
    printf("pre_message[2] = %s\n",pre_message[2][1]);
    return 0;
}