Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Đọc file text? Đọc file dung lượng lớn? Lỗi lưu kết quả khi đọc nhiều lần?

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    19

    Unhappy Đọc file text? Đọc file dung lượng lớn? Lỗi lưu kết quả khi đọc nhiều lần?

    mình viết 1 đoạn code để đọc file text và in kết quả ra màn hình nhưg bị 2 lỗi sau:
    1.Kết quả đọc lần sau chứa cả kết quả của lần đọc trước khi kích thước file lần đầu lớn hơn kích thước file đọc lần 2.
    +Mình RUN lần 1 file có 12 kí tự,kết quả in ra đúg.Nhưg khi RUN lần nữa với 1 file có 2 kí tự chẳng hạn thì kết quả in ra sẽ đè lên kết quả lần 1.
    +Mình cho in thử chiều dài của file thì cũng lỗi luôn(lần 2 size như lần 1).
    2.Ko đọc được file có dung lượng lớn (đề bải yêu cầu là 1Mb).
    Mình thử đọc 1 file 4kb nhưng ko đc.

    các bạn giúp mình nhé!!

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. #include<stdlib.h>
    5.  
    6.  
    7. void DocFile(char *P);
    8.  
    9.  
    10. main()
    11. {
    12.     char P[1000];
    13.     int m,n;
    14.     clrscr();
    15.  
    16.     DocFile(P);
    17.  
    18.     m=strlen(P);
    19.     printf("\nSize file:%d\n",m);
    20.  
    21.     getch();
    22. }
    23.  
    24. /*--------------------------------------------------*/
    25. void DocFile(char *P)
    26. {
    27.     FILE *fp;
    28.     char ten_file_P[20];
    29.     int i;
    30.    
    31.         printf("Nhap ten File P:");
    32.     fflush(stdin);
    33.     gets(ten_file_P);
    34.     strcat(ten_file_P,".txt");//noi ten file voi duoi .txt
    35.     fp=fopen(ten_file_P,"r");
    36.  
    37.     if(fp==NULL)
    38.     { printf("Khong mo duoc File...");
    39.       return;
    40.     }
    41.  
    42. //doc file
    43.     i=0;
    44.     while(!feof(fp))
    45.     {
    46.       fscanf(fp,"%c",&P[i]);
    47.       i++;
    48.     }
    49.     puts(P);
    50.  
    51.     fclose(fp);
    52.  
    53. }

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Bạn xem ở đây xem
    Đọc file dung lượng lớn
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    19

    bài đó viết bằng code C++ mình chằng hiểu j cả.bác nào có code C cho mình xin với!!!

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    16

    Nguyên nhân lỗi của bạn như sau :
    Lỗi 2:bạn khai báo mảng P chỉ có 1000 phần tử .như vậy khi bạn đọc file thì i tăng lên lớn nhất chỉ là 1000 =>bạn không thể đọc các file có kích thước lớn hơn 1000 bytes.
    Khắc phục :
    Cách 1:bạn có thể tăng kích thước của mảng P ,nhưng cách này ko hiệu quả vì nếu khai báo mảng tĩnh thì biến P sẽ nằm trong vùng nhớ stack của chương trình .Mà bản thân vùng nhớ stack cũng bị hạn chế (trên win hình như là 512k nếu mình ko nhầm ,Linux lớn hơn vài lần )
    Cách 2: khai báo P vào vùng nhớ heap

    Lỗi 1: có thể là do bạn ko xóa vùng nhớ sử dụng bởi ctrinh cũ .Ở đây mình có thêm lệnh memset thì ko thấy lỗi xuất hiện
    Best regards ,

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. #include<stdlib.h>
    5.  
    6. #define MAX_SIZE     4000000
    7. void DocFile(char *P,int *size );
    8.  
    9.  
    10. int main()
    11. {
    12.     /*FILE* f;
    13.     f=fopen("G://TestData//3.txt","wt");
    14.     for(int i=0;i<1000000;i++)
    15.         fwrite("hehe",1,4,f);
    16.     fclose(f);*/
    17.     char* p;
    18.     p=(char*)malloc(MAX_SIZE*sizeof(char));
    19.     memset(p,0,MAX_SIZE);
    20.     int m,n;
    21.    // clrscr();
    22.  
    23.     DocFile(p,&m);
    24.  
    25.     //m=strlen(P);
    26.     printf("\nSize file:%d\n",m);
    27.     free(p);
    28.  
    29.     getch();
    30.     return 0;
    31. }
    32.  
    33. /*--------------------------------------------------*/
    34. void DocFile(char *P,int *size)
    35. {
    36.     FILE *fp;
    37.     char ten_file_P[20];
    38.     int i;
    39.    
    40.         printf("Nhap ten File P:");
    41.     fflush(stdin);
    42.     gets(ten_file_P);
    43.     strcat(ten_file_P,".txt");//noi ten file voi duoi .txt
    44.     fp=fopen(ten_file_P,"r");
    45.  
    46.     if(fp==NULL)
    47.     { printf("Khong mo duoc File...");
    48.       return;
    49.     }
    50.  
    51. //doc file
    52.     i=0;
    53.     while(!feof(fp))
    54.     {
    55.       fscanf(fp,"%c",(P+i));
    56.       i++;
    57.     }
    58.    
    59.     puts(P);
    60.     *size=i;
    61.  
    62.     fclose(fp);
    63.  
    64. }
    Đã được chỉnh sửa lần cuối bởi lethanh : 18-04-2009 lúc 10:51 PM.

  5. #5
    Ngày gia nhập
    04 2009
    Bài viết
    19

    Bạn ơi xem lại júp mình với.Mình chạy bài của bạn nhưng mới chỉ thử 1 file 100kb đã đơ rồi.

  6. #6
    Ngày gia nhập
    11 2007
    Bài viết
    16

    Mặc định Đọc file text? Đọc file dung lượng lớn? Lỗi lưu kết quả khi đọc nhiều lần?

    Mình đọc với file gần 4M vẫn ko việc j .Bạn có thể nói rõ hơn về lỗi ko?

  7. #7
    Ngày gia nhập
    04 2009
    Bài viết
    19

    uh.mình đọc vào 1 file 100kb.sau khi ấn enter thì dấu nhắc nó cứ nhấp nháy mãi.ko thấy j.mình fải ấn ctrl + break để thoát.

Các đề tài tương tự

  1. Lập trình C++ Cách xóa toàn bộ nội dung trong file text
    Gửi bởi bachhaiduong trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 25-02-2013, 10:04 AM
  2. có lưu/chuyển nội dung trên console vào file text không?
    Gửi bởi Riku trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 27-02-2011, 11:36 PM
  3. So sánh nội dung 2 file text trong lập trình C#
    Gửi bởi okitakimura trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 26-02-2011, 05:50 PM
  4. lưu nội dung file .doc có text và image vào csdl?
    Gửi bởi nguyen my trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 06-12-2010, 12:29 AM
  5. Lấy nội dung file text đưa vào RichTextBox
    Gửi bởi conan_godman trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 19-12-2008, 10:06 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn