建议#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