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

Đề tài: Hàm đưa con trỏ về đầu file trong lập trình C

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    48

    Arrow Hàm đưa con trỏ về đầu file trong lập trình C

    Cho em hỏi hàm đưa con trỏ trở về đầu file sau khi đã đọc file xong 1 lần.
    "what you don't use you don't pay for" (Bjarne Stroustrup).

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

    rewind(f) với f là con trỏ tệp nhé
    ttecak ?

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    78

    - Theo mình còn 1 cách tổng quát hơn là dùng hàm fseek, hàm này là trong C...nhưng mà các compiler C++ chạy được hết chứ nhỉ..
    Cú pháp
    C Code:
    1. fseek(<FILE *>,<độ dời>,<mốc>);

    - các mốc là:
    + SEEK_SET (dời về đầu tập tin) (giá trị 0);
    + SEEK_END (dời về cuối tâp tin) (giá trị 2);
    + SEEK_CUR (dời về vị trí hiện hành) (giá trị 1);

    Ex:
    C Code:
    1. fseek(file,0,SEEK_SET); //dời về đầu tập tin, tương đương rewind(f);
    2.               fseek(file,+5,SEEK_CUR); //dời về sau vị trí hiện hành 5 bytes;
    3.               fseek(file,-5,SEEK_CUR); //dời về trước vị trí hiện hành 5 bytes;
    4.               fseek(file,0,SEEK_END); //dời về cuối tập tin;
    Đã được chỉnh sửa lần cuối bởi hacker_mubaohiem : 21-03-2008 lúc 10:18 PM.
    No way, No success..

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

    anh comeonbaby có thể nói rõ hơn về hàm rewind(f) dc ko?
    em ko biết f là gì hết.
    "what you don't use you don't pay for" (Bjarne Stroustrup).

  5. #5
    Ngày gia nhập
    12 2006
    Bài viết
    5

    thì bạn đó nói rõ rùi mà. rewind() sẽ đưa con trỏ FILE về đầu của file đó. bạn dùng fseek cũng okie mà

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

    Mặc định Hàm đưa con trỏ về đầu file trong lập trình C

    Syntax của rewind là: void rewind(FILE *stream); hàm này thuộc thư viện stdio.h. stream ở đây là một con trỏ kiểu FILE.

    Tác dụng: Đưa con trỏ file về điểm bắt đầu của một stream

    rewind tương đương với fseek(stream, 0L, SEEK_SET), chỉ khác là rewind sẽ xóa bỏ(clears) chỉ thị lỗi và kết thúc file, trong khi đó fseek chỉ có xóa bỏ(clears) chỉ thị kết thúc file.

    Thế này đã rõ chưa?
    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!

  7. #7
    Ngày gia nhập
    12 2008
    Bài viết
    0

    Vậy các bác giải thích hộ em đoạn chương trình này với
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    void main()
    {
      FILE *fp;
      char* fn = "team1.txt";
      char team[10];
      char group;
      int  players;
      float age;
    
      clrscr();
      if((fp = fopen(fn, "a+t")) == NULL)
      {
    	 printf("\nLoi, khong mo tep de doc duoc");
    	 getch();
    	 exit(1);
      }
      fscanf(fp,"%s\n",team);
      fflush(fp);
      fscanf(fp,"%c %d %f",&group, &players, &age);
      printf("\n Ten doi tuyen: %s",team);
      printf("\n Bang thi dau: %c", group);
      printf("\n So cau thu tham du: %d", players);
      printf("\n Do tuoi trung binh: %4.1f",age);
      fseek(fp, 0, 0);
      //***********************************************//
      //rewind(fp); //thay fseek = rewind khong ra ket qua khac
      fputs("nguyen du la 1 nha tho.\n",fp);
      fputs("ong da sang tac ra truyen kieu",fp);
      fscanf(fp,"%s\n",team);
      fflush(fp);
      fscanf(fp,"%c %d %f",&group, &players, &age);
      printf("\n Ten doi tuyen: %s",team);
      printf("\n Bang thi dau: %c", group);
      printf("\n So cau thu tham du: %d", players);
      printf("\n Do tuoi trung binh: %4.1f",age);
      fseek(fp, 0, 0);
      //***********************************************//
      //rewind(fp); //thay fseek = rewind ra ket qua khac
      fputs("hello",fp);
      getch();
    }
    file team1.txt có nội dung như sau
    Code:
    Germany 
    A 
    23 
    27.5
    Chương trình có 2 hàm fseek,nếu thay fseek đầu = rewind thì kết quả ko đổi,nhưng khi thay fseek sau = rewind thì kết quả lại thay đổi
    Trước khi thay fseek sau tệp chương trình tạo ra tệp team1.txt như sau
    Code:
    Germany 
    A 
    23 
    27.5nguyen du la 1 nha tho.
    ong da sang tac ra truyen kieu
    Sau khi thay fseek sau = rewind,chương trình tạo ra tệp team1.txt như sau
    Code:
    Germany 
    A 
    23 
    27.5nguyen du la 1 nha tho.
    ong da sang tac ra truyen kieuhello
    Các bác giải thích hộ em với!

  8. #8
    Ngày gia nhập
    12 2011
    Bài viết
    23

    cho mình hỏi nếu vào file bằng cách này thì đưa fi lên đầu file như thế nào?
    Code:
    fstream fi;
         fi.open("data.txt",ios::in);

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

  1. Trả lời: 3
    Bài viết cuối: 10-04-2013, 08:06 AM
  2. Giới thiệu cách chuyển File Ảnh thành file Video trong download proshow gold
    Gửi bởi thuhu0900x trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 3
    Bài viết cuối: 03-07-2012, 03:54 AM
  3. Đọc dữ liệu file midi dạng số HEX và lấy lời nhạc trong file ra file text
    Gửi bởi kimngockhtn_2007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 29-06-2011, 04:40 PM
  4. File server để dùng ajax trong visual2010 là file gì, xử lý kết nối với SQLserver như thế nào?
    Gửi bởi lenamshenlong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 9
    Bài viết cuối: 26-05-2011, 05:14 PM
  5. Làm sao để open file bằng cách double click vào file trong windows explorer?
    Gửi bởi Batchuoc_09 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 18-07-2010, 01:12 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