我一直在瘋狂試圖找出什麼是做錯了。我承認在C方面我缺乏經驗,但我不知道什麼是錯的。我訪問/使用結構的方式是不正確的嗎?在Xcode中的分段錯誤,調試器不能幫助我
編輯:我一直在調試器中得到EXC_BAD_ACCESS。
#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);
}
請務必檢查'fopen'返回狀態,文件中並不總是成功打開 – Joe
爲什麼人們總是混合使用空格-.-品牌標籤如果編輯器的間距不對,很難重新格式化和理解。 – Constantinius
'for'循環中的'while'循環會導致問題。要麼從文件中讀取固定數量的項目(如在'for'循環中),要麼直到文件結尾讀取所有項目(如在'while循環中),但嘗試組合它們不會按照它應該的方式工作。尤其是,如果有'''阻止'while'循環的主體。 –