建議#1:如果你是印地語並且你曾經重生過,那麼從學習C開始,然後過渡到C++。
建議#2:所以如果我理解正確,你有四個字符串連在一起,用分號隔開。然後你可以使用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);
到目前爲止,你有什麼想法? – 2013-03-06 09:01:56
你的例子似乎是一個文本文件,而不是一個二進制文件? – nos 2013-03-06 09:13:27
爲什麼這是一個二進制文件? – 2013-03-06 09:15:57