满意答案
he3325
2018.06.19
采纳率:45% 等级:10
已帮助:1417人
// 了解一下函数strtok或strtok_r,会更简单些
// 下面是一个例子,你可以修改一下
#include
#include
#include
#define ID_LEN (3 + 1)
#define KM_NUM 8
#define STU_MAX_NUM 100
#define LINE_MAX_LEN 256
struct {
char id[ID_LEN];
int score[KM_NUM];
} stu[STU_MAX_NUM];
int main(int argc, char ** argv)
{
int i = 0, j = 0, count = 0; // count 用于保存学生数量
char buf[LINE_MAX_LEN] = {0}, *tmp = 0;
FILE * fp = fopen("score.txt", "r");
if (fp)
{
fgets(buf, LINE_MAX_LEN, fp); // 过滤文本首行
memset(buf, 0x00, sizeof(buf)/sizeof(char)); // 清空缓存
while (fgets(buf, LINE_MAX_LEN, fp))
{
j = 0;
strcpy(stu[i].id, strtok(buf, " \t")); // strtok 分割字符串, 没有进行有效性验证,下同
while (tmp = strtok(NULL, " \t"))
{
stu[i].score[j] = atoi(tmp);
++j;
}
++i;
memset(buf, 0x00, sizeof(buf)/sizeof(char));
}
count = i;
fclose(fp);
}
printf("%d\n", count);
return 0;
}
00分享举报