Mình có đoạn code sau:
Code:
#include <stdio.h>
#include <conio.h>
#define MAX 100
typedef struct
{
char tenthisinh[30];
char namsinh[5];
float diemthi;
char nganhhoc[20];
} THISINH;
void main()
{
THISINH a[MAX];
char s[30];
int i;
FILE *f;
f = fopen("THISINH.txt", "r");
while (!feof(f))
{
fscanf(f, "%d", &i);
i = i - 1;
printf("%3d", i + 1);
fgets(s, 2, f);
fgets(a[i].tenthisinh, 31, f);
printf("%s", a[i].tenthisinh);
fgets(s, 6, f);
fgets(a[i].namsinh, 6, f);
printf("%s", a[i].namsinh);
fscanf(f, "%f", &a[i].diemthi);
printf("%10.2f", a[i].diemthi);
fgets(s, 2, f);
fgets(a[i].nganhhoc, 21, f);
printf("%s\n", a[i].nganhhoc);
fgets(s, 1, f);
}
printf("%s", a[0].tenthisinh); // Ten thi sinh khong chinh xac, no di kem ca 1989
getch();
}
Tên thí sinh trong lúc chạy vòng lặp lưu vào rồi in ngay thì hoạt động chính xác nhưng sau khi chạy hết vòng lặp lấy dữ liệu từ file txt thì bị lỗi, a[0].tenthisinh bị thừa mất " 1989", mình giải quyết mãi mà không được. Bạn nào giúp mình với :(. File txt và mã nguồn mình đính kèm bài viết