Sao em làm cái hàm chỉnh sửa thông tin độc giả trong file csv mà nó cứ bị sai vị trí nên nó bị ghi đè tùm lum lên là sao vậy các bác @@, mong các bác có kinh nghiệm chỉ giáo với ạ, nó liên quan đến đồ án của em nên mong các bác dành chút thời gian ạ

void ChinhSuaThongTin()
{
fflush(stdin);
DocGia D;
FILE *pFile = fopen("DocGia.csv", "r+");
if (pFile == NULL)
printf("ERROR!\n");
char ID[10];
printf("Nhap Ma Doc Gia can chinh sua:");
gets(ID);
int check = 0;
int count = 0;
do
{
char buff[1024];
if (!feof(pFile))
{
fgets(buff, sizeof(buff), pFile);
char *token = strtok(buff, ",");
while (token != NULL&&check != 1)
{
count++;
if (strcmp(ID, token) == 0)
{
//strcpy(buff, "0");
fflush(stdin);
D.ID = new char[10];
printf("Nhap Ma Doc Gia moi:");
gets(D.ID);
D.Hoten = new char[20];
printf("Nhap Ho Ten Doc Gia moi:");
gets(D.Hoten);
D.CMND = new char[9];
printf("Nhap CMND moi:");
gets(D.CMND);
D.Ngaysinh = new char[20];
printf("Nhap Ngay thang nam sinh moi:");
gets(D.Ngaysinh);
D.Gioitinh = new char[10];
printf("Nhap Gioi tinh moi:");
gets(D.Gioitinh);
D.Email = new char[20];
printf("Nhap Email moi:");
gets(D.Email);
D.Diachi = new char[50];
printf("Nhap Dia chi moi:");
gets(D.Diachi);
D.Ngaylapthe = new char[20];
printf("Nhap Ngay lap the moi:");
gets(D.Ngaylapthe);
D.Ngayhethan = new char[20];
printf("Nhap Ngay het han the moi(48 thang sau khi lap the):");
gets(D.Ngayhethan);
fflush(stdin);
fseek(pFile,ftell(pFile)-sizeof(D), 0);
fprintf(pFile, "%s,%s,%s,%s,%s,%s,%s,%s,%s\n", D.ID, D.Hoten, D.CMND, D.Ngaysinh, D.Gioitinh, D.Email, D.Diachi, D.Ngaylapthe, D.Ngayhethan);
check = 1;
fclose(pFile);
break;
}
token = strtok(NULL, ",");
}
if (check == 1)
break;
}
} while (!feof(pFile));
fclose(pFile);
bạn fseek là làm binary rồi.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?