好的,所以我正在使用以下代码从文件中读取一些内容:
for (i=0; i<start;i++)
{
filename=files[i];
if((fp=fopen(filename, "r"))==NULL)
{
printf("unable to open %s\n", filename);
exit(1);
}
while(fgets(buffer, sizeof(buffer), fp) !=NULL)
{
d[counter].id=atoi(strtok(buffer, del));
strcpy(buffer2, strtok(NULL, del));
len=strlen(buffer2);
if(buffer2[len-1]=='\n')
buffer2[len-1]='\0';
strcpy(d[counter].name, buffer2);
counter++;
}
token = strtok (filename, del1);
holder=token;
token = strtok (NULL, del1); /* section*/
token2 = strtok(holder, del2);
token2 = strtok(NULL, del2); /*course name */
for(x=z;x<counter;x++)
{
d[x].section=atoi(token);
printf("%d ", d[x].section);
strcpy(d[x].course, token2);
printf("%s %d %s %d\n", d[x].course, d[x].section, d[x].name, d[x].id);
}
z=counter;
}
结构定义:
struct student {
char course[8];
int section;
char name[19];
int id;
};
除了结构中的“部分”之外,一切都打印得很好,由于某种原因,元素在一定数量后使其自身为 0。
这是输出:
1 CSE1325 1 Sally 3233
1 CSE1325 1 George 9473
2 CSE1325 2 Tom 1234
2 CSE1325 2 Ralph 3540
2 CSE1325 2 Mary 5678
1 CSE2312 1 Tom 1234
1 CSE2312 1 Ralph 3540
1 CSE2312 1 Mary 5678
1 CSE2315 1 Tom 1234
1 CSE2315 1 Ralph 3540
1 CSE2315 1 Mary 5678
2 CSE2315 2 Sally 3233
2 CSE2315 2 George 9473
4 ENGL1301 0 Tom 1234
4 ENGL1301 0 Sally 3233
4 ENGL1301 0 Ralph 3540
4 ENGL1301 0 Mary 5678
4 ENGL1301 0 George 9473
1 HIST1311 0 Tom 1234
1 HIST1311 0 Sally 3233
1 HIST1311 0 Ralph 3540
1 HIST1311 0 Mary 5678
1 HIST1311 0 George 9473
5 MATH1426 0 Sally 3233
5 MATH1426 0 George 9473
这是预期的输出:
1 CSE1325 1 Sally 3233
1 CSE1325 1 George 9473
2 CSE1325 2 Tom 1234
2 CSE1325 2 Ralph 3540
2 CSE1325 2 Mary 5678
1 CSE2312 1 Tom 1234
1 CSE2312 1 Ralph 3540
1 CSE2312 1 Mary 5678
1 CSE2315 1 Tom 1234
1 CSE2315 1 Ralph 3540
1 CSE2315 1 Mary 5678
2 CSE2315 2 Sally 3233
2 CSE2315 2 George 9473
4 ENGL1301 4 Tom 1234
4 ENGL1301 4 Sally 3233
4 ENGL1301 4 Ralph 3540
4 ENGL1301 4 Mary 5678
4 ENGL1301 4 George 9473
1 HIST1311 1 Tom 1234
1 HIST1311 1 Sally 3233
1 HIST1311 1 Ralph 3540
1 HIST1311 1 Mary 5678
1 HIST1311 1 George 9473
5 MATH1426 5 Sally 3233
5 MATH1426 5 George 9473
看看数字如何匹配?但对我来说不是这样,当我d[x].section
在 for 循环中作为独立打印时,它会打印正确的东西,但是当我出于某种原因在组合打印语句中使用它时,它会在达到 ENGL1301 时打印出 0。