Xcode中的分段错误,调试器无法帮助我

Xcode中的分段错误,调试器无法帮助我,c,xcode,segmentation-fault,C,Xcode,Segmentation Fault,我一直在发疯,想弄清楚哪里做错了。我承认我在C语言方面缺乏经验,但我不知道哪里不对。我访问/使用结构的方式是否不正确 编辑:我一直在调试器中获得EXC\u BAD\u访问权限 #include <stdio.h> #include <string.h> #define MAX_STRING 20 #define MAX_PLYR 16 typedef struct { char pname[MAX_STRING]; int runs;

我一直在发疯,想弄清楚哪里做错了。我承认我在C语言方面缺乏经验,但我不知道哪里不对。我访问/使用结构的方式是否不正确

编辑:我一直在调试器中获得EXC\u BAD\u访问权限

#include <stdio.h>
#include <string.h>
#define MAX_STRING 20
#define MAX_PLYR 16

typedef struct {

        char pname[MAX_STRING];
        int runs;
        char *s;

} Team_t;

int
main(void) 
{
        Team_t *team_data[MAX_PLYR];
        int i;
        char *p;
        char name[MAX_STRING];
        FILE *inp;
        inp = fopen("teamnames.rtf", "r");

        for (i = 0; i < MAX_PLYR;) {
            while ((fgets(name, MAX_STRING, inp) != NULL));
            printf("Name(i): %s\n", name);
            strcpy(team_data[i]->pname, name);
            i++;
        }
        fclose(inp);
        return(0);
}
编辑:以下是更改的内容,仍然存在分割错误

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

#define MAX_STRING 20

#define MAX_PLYR 16


typedef struct {

char pname[MAX_STRING];
int runs;
char s;

} Team_t;

int
main(void) 

{
Team_t team_data[MAX_PLYR];

char name[MAX_STRING];

int i;

FILE *inp;

inp = fopen("teamnames.rtf", "r");

for (i = 0; i < MAX_PLYR; i++) {

    ((fgets(name, MAX_STRING, inp)));

    if (feof(inp)) {

        printf("End of stream\n");

        i = MAX_PLYR;

    }

    else {

        if (ferror(inp)) {

            printf("Error reading from file\n");
}

    printf("Name(i): %s\n", name);

    strcpy(team_data[i].pname, name);
}
}

fclose(inp);

return(0);
}
您声明团队_数据,但不分配它;因此,它指向随机内存,数组的虚拟内容也是如此。您需要实际创建数组,比如


团队*团队数据[MAX\u PLYR]=团队**mallocMAX\u PLYR*大小fteam\u t*

使用结构,而不是指针,或者如果坚持使用指针,则为这些结构分配空间

Team_t team_data[MAX_PLYR];

fgets(team_data[i].pname, MAX_STRING, inp)
当你写作时

 Team_t *team_data[MAX_PLYR];
您没有为实际的团队记录分配任何内存,而是设置指向记录的指针数组

如果你愿意写

Team_t team_data[MAX_PLYR];
你会分配记录的。当您想要复制到team_数据数组中时,您可以改为编写

strcpy( team_data[i].name, name );

确保您检查了fopen的返回状态,文件并不总是成功打开为什么人们总是将选项卡与空格混合-这使得重新格式化和理解编辑器是否具有错误的间距非常困难。for循环中的while循环将导致问题。要么像for循环那样从文件中读取固定数量的项,要么像while循环那样读取所有项直到文件结束,但尝试将它们组合起来将无法正常工作。尤其不是,如果有一个;阻止while循环的正文。进行了所有这些编辑,没有任何更改错误我应该从团队_数据中删除*。很抱歉我不理解,但我对CYes很陌生,正如其他几张海报所建议的那样,您可以去掉指针并将其声明为团队数据[MAX_PLYR]。这将更改用于访问元素的语法:通常使用。我已经按照您的建议分配了记录,而不是->。错误没有改变。