为什么在此C程序中出现段错误?处理Fscanf和printf

问题描述 投票:0回答:2

我已经尝试了很多有关fscanf和print函数的东西,Fight函数在另一个文件中,并且具有此原型

void Fight( char * combatant1, int ac1, int hp1, int hitbonus1, int damagebonus1, char * combatant2, int ac2, int hp2, int hitbonus2, int damagebonus2);

但是我不认为这是错误的出处。当该行被注释掉时,我仍然遇到段错误。谁能帮我这个?数据文件看起来像这样

名称## ## ## ### >>

这是我的代码

void printInfo(FILE *f1, FILE *f2){
    char* name1;
    char* name2;
    int armor1;
    int armor2;
    int hp1;
    int hp2;
    int hb1;
    int hb2;
    int db1;
    int db2;
    fscanf(f1, "%s %d %d %d %d", name1, &armor1,&hp1,&hb1,&db1);
    printf("\nName=%s, Armor=%d, Hit Points=%d, Hit Bonus=%d, Damage Bonus=%d", name1,armor1,hp1,hb1,db1);
    fscanf(f2, "%s %d %d %d %d", name2, &armor2,&hp2,&hb2,&db2);
    printf("\nName=%s, Armor=%d, Hit Points=%d, Hit Bonus=%d, Damage Bonus=%d", name2,armor2,hp2,hb2,db2);
    //Fight(name1,armor1,hp1,hb1,db1,name2,armor2,hp2,hb2,db2);
}

我已经尝试了很多与fscanf和print函数有关的事情,Fight函数位于另一个文件中,并且具有该原型void Fight(char * fightingant1,int ac1,int hp1,int ...

c segmentation-fault printf scanf
2个回答
1
投票

每个指针在声明后都需要初始化为有效地址。为了使地址有效,需要分配该地址。您的指针

char* name1;
char* name2;
© www.soinside.com 2019 - 2024. All rights reserved.