30/09/2018, 17:04

Cách đọc file CSV trong ngôn ngữ C

Tình hình là em có bài tập có liên quan tới file CSV cần đọc sau đó thêm vào template rồi xuất ra file html, encode Unicode UTF-8 nữa nên hơi rắc rối. Hiện tại e đang test thử đọc file CSV, có tham khảo một số trang nước ngoài nhưng vẫn chưa thành công, mọi người có thể giúp mình được không?

Trong file CSV:

“1412222”,“Nguyễn Văn A","nva@gmail.com”,“CÔNG NGHỆ THÔNG TIN”,“2014”,“12/01/1996”,“1412547.jpg”,“Một kẻ điên rồ!!!”,“Linkin Park, Jason Mraz,…”,“Breaking Bad, Daredevil, Harry Potter,…”

Phần sở thích có nhiều sở thích.

Code em thế này ạ.

struct Student{
    char *MSSV;
	char *HoTen;
	char *Khoa;
	int KHoc;
	char *NgaySinh;
	char *HACN;
	char *MTBT;
	char **SoThich;
};

struct Student Students[256];

/* PROTOTYPE OF FUNCTIONS */
int readStudentFile();


int main(int argc, char **argv)
{   
	readStudentFile();
    system("pause");
    return 0;
}

int readStudentFile()
{

    FILE *StudentFile;


    char *buf = new char[256];
    char *tmp; 
	
    //Lỗi nếu không cấp phát được bộ nhớ cho buf
    if (buf == NULL) {
        printf ("No memory
");
        return 1;
    }

    if ( ( StudentFile = fopen( "Test.csv", "r" ) ) == NULL ) //Đọc file
    {
        printf( "File could not be opened.
" );
    }

    int i = 0;
	int j=0;
	int flag=0;
    while (fgets(buf, 255, StudentFile) != NULL)
    {
        if ((strlen(buf)>0) && (buf[strlen (buf) - 1] == '
'))
            buf[strlen (buf) - 1] = '';       

        tmp = strtok(NULL, ",");
        Students[i].MSSV = tmp;

        tmp = strtok(NULL, ",");
        Students[i].HoTen = tmp;

        tmp = strtok(NULL, ",");
        Students[i].Khoa = tmp;

        tmp = strtok(buf, ",");
        Students[i].KHoc = atoi(tmp);


		tmp = strtok(NULL, ",");
        Students[i].NgaySinh = tmp;

		tmp = strtok(NULL, ",");
        Students[i].HACN = tmp;

		tmp = strtok(NULL, ",");
		for(j;strcpy(tmp,'')!=0;j++)
		{
		 Students[i].SoThich[j] = tmp;		
		}
        //tempStudent.ID = atoi(buf);

        i++;
		flag=-1;
    }
    //free(buf);
    fclose(StudentFile);
	if(flag==-1)
	for (i = 0; i <= sizeof(Students); i++)
    {
        if (Students[i].MSSV != 0)
        printf("MSSV: %s
",Students[i].MSSV);
		printf("Ho ten: %s
", Students[i].HoTen);
		printf("Khoa: %s
", Students[i].Khoa);
		printf("Khoa' hoc: %d
", Students[i].KHoc);
		printf("Ngay sinh: %s
", Students[i].NgaySinh);
		for(int k=0;k<j;k++)
			printf("So thich: %s
", Students[i].SoThich);
    }
	return 0;
}
Bài liên quan
0