30/09/2018, 16:06

Cách đọc file text đã tạo sẵn

Tình hình là mình tạo 1 file text document và tự điền info của 10 sinh viên gồm: mssv, toán, lý, hóa, tb, tên. Sau đó mình đọc file bằng visual, không hiểu sai ở đâu mà nó cứ lỗi hoài. Ae nào giúp mình gỡ rối với!

#include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct STUDENT
{
    char mssv[4];
    float toan, ly, hoa, tb;
    char ho_ten[20];
} STUDENT;
typedef struct NODE
{
    STUDENT info;
    NODE *pNext;
} NODE;
typedef struct
{
    NODE *pHead;
} LIST
void Initialize(LIST &list)
{
    list.pHead = NULL;
}
bool IsEmpty(LIST list)
{
    if (list.pHead == NULL) return true;
    return false;
}
void Process(LIST list)
{
    NODE *p = list.pHead;
    while (p != NULL)
        p = p->pNext;
}
void main()
{
    STUDENT list[10];
    FILE *f;
    f = fopen("C:\Users\MinhDao\Desktop\bangdiem.txt.txt", "rt");
    if (f == NULL)
    {
        printf("Error!!!");
    }
    else
    {
        int i = 1;
        while (list)
        {
            fscanf(f, "%s	%.1f	%.1f	%.1f	%s	", &list[i].mssv, &list[i].toan, &list[i].ly, &list[i].hoa, &list[i].ho_ten);
            i++;
        }
        fclose(f);
    }
    getch();
}

Đề yêu cầu là dùng C và dùng danh sách liên kết đơn nha mn!

Phạm Hoàng Tuấn viết 18:19 ngày 30/09/2018

e nên post thêm file text của e lên nữa, k upload dc thì copy dán lên đi e

Light Way viết 18:15 ngày 30/09/2018

e đọc đc rồi, thaks a có gì thắc mắc lại hỏi tiếp này

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

Liệu @Neo có thể post code mới, code đã giải quyết vấn đề và cho mọi người biết lý do tại sao trước đây @Neo không làm được không? Đây là cách củng cố kiến thức và giúp đỡ các bạn khác gặp vấn đề tương tự.

Light Way viết 18:23 ngày 30/09/2018
#include< stdio.h>
#include< conio.h>
#include< string.h>

typedef struct STUDENT
{
    char mssv[4];
    float toan, ly, hoa, tb;
    char ho_ten[20];
} STUDENT;
typedef struct NODE
{
    STUDENT info;
    NODE *pNext;
} NODE;
typedef struct
{
    NODE *pHead;
} LIST;
void Initialize(LIST &list)
{
    list.pHead = NULL;
}
bool IsEmpty(LIST list)
{
    if (list.pHead == NULL) return true;
    return false;
}
void Process(LIST list)
{
    NODE *p = list.pHead;
    while (p != NULL)
        p = p->pNext;
}
void main()
{
    STUDENT list[10];
    FILE *f;
    f = fopen("input.txt", "rt");
    if (f == NULL)
    {
        printf("Error!!!");
    }
    else
    {
        int i = 0;
        while (i<10)
        {
            fscanf(f,"%s %f %f %f %s", &list[i].mssv, &list[i].toan, &list[i].ly, &list[i].hoa, &list[i].ho_ten);
            i++;
        }
        fclose(f);
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%s\t%.1f\t%.1f\t%.1f\t%s\n", list[i].mssv, list[i].toan, list[i].ly, list[i].hoa, list[i].ho_ten);
    }
    getch();
}
Light Way viết 18:16 ngày 30/09/2018

Mình đã fix đc lỗi bài mình hỏi, có gì các bạn tham khảo nha! Về lỗi thì bị 2 lỗi ntn nha mn:

1/ điều kiện trong while của mình sai phải dùng i<10 để giới hạn điểm dừng cho việc đọc file vào các phần tử, không nó sẽ chạy hoài luôn. Cái này mình bị nhầm với điều kiện của lệnh switch

2/ đọc mà không in thì lấy đâu ra thông tin file đã đọc các bạn nhỉ ở đâu mình thiếu phần in thông tin file ra màn hình console (màn hình đen đen ý ), vậy nên cần 1 vòng lặp for để in ra màn hình

  • Ae nào còn thấy gì sai nữa góp ý luôn cho mình để mình sửa chữa nha! thaks all
Nguyễn Minh Dũng viết 18:11 ngày 30/09/2018

Cảm ơn @Neo nhé, đây là cách mà diễn đàn chúng ta làm việc. Em có thể

  • Tạo một topic để hỏi và chờ câu trả lời
  • Tạo một topic để hỏi và tự trả lời

Vì quá trình chờ đợi em hoàn toàn có thể giải được, và khi giải được em sẽ share kết quả cho các bạn khác, những bạn học sau em. Cảm ơn @Neo thêm lần nữa vì đã đóng góp một đoạn code hữu ích cho diễn đàn.

Light Way viết 18:18 ngày 30/09/2018

Không có gì đâu a e rất vui khi đc tham gia diễn đàn bổ ích này của a vừa được trau dồi kiến thức, vừa được thảo luận biết sai để sửa và ôn tập lại bài học, e cám ơn a đúng hơn

Bài liên quan
0