조언 # 1 : 당신이 힌디어이고 다시 태어났다면 C를 배우기 시작하고 C++로 전환하십시오.
충고 # 2 : 올바르게 이해하면 연속으로 4 개의 문자열이 세미콜론으로 구분됩니다. 그런 다음 각 행을 분할하고 구조체의 배열에 파일의 내용을 넣어 strtok_r()
을 사용할 수 있습니다 (명확성을 위해 생략 확인 모든 오류,하지만 당신은 확실히 몇 가지가 있어야합니다) :
typedef struct {
char *code;
char *name;
int max_appl;
int cur_appl;
} Course;
char buf[1024];
FILE *f = fopen("courses.txt", "r");
size_t size = 0;
size_t allocsize = 8;
Course *c = malloc(allocsize * sizeof(*c));
char *end;
while (fgets(buf, sizeof(buf), f) != NULL) {
if (size >= allocsize) {
allocsize <<= 1;
c = realloc(c, allocsize * sizeof(*c));
}
c[size].code = strdup(strtok_r(buf, ";", &end));
c[size].name = strdup(strtok_r(NULL, ";", &end));
c[size].max_appl = strtol(strtok_r(NULL, ";", &end), NULL, 10);
c[size].cur_appl = strtol(strtok_r(NULL, "\n", &end), NULL, 10);
size++;
}
int i;
for (i = 0; i < size; i++) {
Course *p = c + i;
printf("%s\n%s\n%d\n%d\n\n", p->code, p->name, p->max_appl, p->cur_appl);
free(p->code);
free(p->name);
}
free(c);
fclose(f);
지금까지 무엇을 알아 냈습니까? –
예제가 바이너리 파일이 아닌 텍스트 파일 인 것 같습니다. – nos
왜 이진 파일입니까? –