Con trăn fscanf

Như các bạn đã biết print nghĩa là in, scan là quét hay ta gọi trong này là để nhập. Vì sao chúng lại có chữ fđằng sau để thành printf và scanf ?

Chữ f này có nghĩa là định dạng (định dạng). Như các bạn thấy chúng ta nhập hoặc xuất giá trị của các biến đều có định dạng % gì đó ví dụ %d là số nguyên, %f là số thực,… và chữ f đây chính là có nghĩa như thế nào

Có rất nhiều hàm phục vụ cho công việc đọc file trong C. Trong bài hướng dẫn này, Lập trình không khó sẽ hướng dẫn bạn cách làm việc với tệp sử dụng ngôn ngữ lập trình C. Một số tệp ghi hàm đọc trong C có thể được kể đến như là. fprintf(), fscanf(), fread(), fwrite(), fseek … và một số hàm khác nữa

Con trăn fscanf
Con trăn fscanf

Nếu bạn đang tìm cách đọc ghi file trong C++ thì hãy đọc bài viết này nhé

NỘI DUNG BÀI VIẾT

  • Tại sao chúng ta cần đến tệp?
  • File type
    • 1. File văn bản – file văn bản
    • 2. File nhị phân – Tệp nhị phân
  • Thao tác với tập tin
  • Thao tác với tệp trên ngôn ngữ C
    • Thao tác mở tệp
    • Tham số của “mode”
    • Thao tác đóng file
  • Đọc/Ghi file văn bản trong C
      • VD1. Ghi tệp sử dụng fprintf()
      • VD2. Read file using fscanf()
  • Đọc/Ghi file nhị phân trong C
      • Ghi file nhị phân
      • VD3. Ghi file nhị phân sử dụng fwrite()
      • Read file nhị phân
      • Ví dụ đọc file nhị phân sử dụng fread()
  • Một số ví dụ về đọc tệp ghi trong C
      • Ghi vào file một câu văn bản
      • Read data text from file
  • Tham khảo

Tại sao chúng ta cần đến tệp?

  • Dữ liệu được lưu tại biến của chương trình và nó sẽ biến mất khi chương trình kết thúc. Sử dụng tệp để lưu trữ dữ liệu cần thiết để đảm bảo dữ liệu của chúng ta không bị mất ngay cả khi chương trình của chúng ta tiếp tục chạy
  • Nếu chương trình của bạn có đầu vào (đầu vào) lớn, bạn sẽ rất khó khăn nếu phải nhập mỗi khi chạy. Thay vào đó, hãy lưu vào file và chương trình của bạn sẽ tự đọc mỗi lần khởi động
  • Dễ dàng sao chép, di chuyển dữ liệu giữa các thiết bị với nhau

File type

Trước khi làm việc với file, bạn nên biết về 2 loại file khác nhau sau đây

  1. File văn bản - file văn bản
  2. File nhị phân - file nhị phân

1. File văn bản – file văn bản

File văn bản là file normal có đuôi là. txt. Những tập tin này bạn có thể dễ dàng tạo ra bằng cách sử dụng các trình soạn thảo văn bản thông dụng như Notepad, Notepad++, Sublime Text,…

Khi bạn mở tệp này bằng trình soạn thảo văn bản nói trên, bạn sẽ thấy văn bản ngay lập tức và có thể dễ dàng thao tác chỉnh sửa, xóa, thêm nội dung của tệp này

Kiểu tệp này thuận tiện cho chúng tôi trong việc sử dụng hàng ngày, nhưng nó sẽ mất bảo mật và cần nhiều bộ nhớ để lưu trữ hơn

2. File nhị phân – Tệp nhị phân

File nhị phân thường có đuôi mở rộng là. thùng rác

Thay vì lưu trữ dưới dạng văn bản thuần thúy, các tệp này được lưu dưới dạng nhị phân, chỉ bao gồm các số 0 và 1. Bạn cũng sẽ thấy các con số này nếu cố mở nó bằng 1 trình soạn thảo văn bản kể trên

Loại tệp này giúp lưu trữ được dữ liệu với kích thước lớn hơn, không thể đọc bằng các trình soạn thảo văn bản thông thường và thông tin lưu trữ ở loại tệp được bảo mật hơn so với tệp văn bản

Thao tác với tập tin

Trong ngôn ngữ lập trình C, có một số thao tác chính khi làm việc với tệp, bao gồm cả tệp văn bản và tệp nhị phân

  1. Create new a file
  2. Open an known file
  3. Đóng tệp đang mở
  4. Read information from file/ Ghi thông tin ra file

Thao tác với tệp trên ngôn ngữ C

Khi làm việc với tệp, bạn cần khai báo 1 con trỏ kiểu FILE. Lệnh khai báo này là cần thiết để có sự kết nối giữa chương trình của bạn và tệp tin mà bạn cần thao tác

0

1

2

 

FILE *fptr;

 

Thao tác mở tệp

Để đọc tệp ghi trong C cũng như trong mọi ngôn ngữ lập trình, công việc đầu tiên bạn cần làm là mở tệp mà bạn muốn làm việc. Trong ngôn ngữ lập trình C, chúng ta có thể mở tệp bằng cách sử dụng hàm fopen() trong thư viện stdio.h như sau

0

1

2

 

fptr = fopen("fileopen","mode")

 

Trong đó mode là một tham số chúng ta cần chỉ định

Ví dụ

0

1

2

3

4

5

6

 

fptr = fopen("E. \\c chương trình\\chương trình mới. txt","w");

 

// or

 

fptr = fopen("E. \\c chương trình\\chương trình cũ. bin","rb");

 

  • Giả sử tập tin newprogram.txt chưa có trong thư mục E:\cprogram. Ví dụ đầu tiên với mode = "w" sẽ cho phép chương trình tự động tạo ra tệp newprogram.txt nếu nó chưa có. Và sau đó mở tệp này lên nhưng chương trình chỉ có thể ghi dữ liệu vào mà không thể đọc
  • Chế độ là w chỉ cho phép ghi chương trình (nếu đã có dữ liệu thì ghi đè) nội dung của tệp
  • Với ví dụ thứ 2, chế độ là rb cho phép chương trình mở 1 tệp nhị phân đã có sẵn fopen()0. Với trường hợp này, chương trình của bạn chỉ có thể đọc tệp và không thể ghi nội dung vào tệp

Tham số của “mode”

Dưới đây là các giá trị có thể có của tham số mode  nói trên

ModeÝ nghĩa If file does not survival atrMở file only allow readIf file does not survival, fopen() return NULL. rbMở tệp chỉ cho phép đọc dưới định dạng nhị phân. Nếu tệp không tồn tại, fopen() trả về NULL. wMở tệp chỉ cho phép ghi. Nếu tệp đã tồn tại, nội dung sẽ bị ghi đè. Nếu tệp không tồn tại, nó sẽ được tạo tự động. wbOpen để viết ở chế độ nhị phân. Nếu tệp đã tồn tại, nội dung sẽ bị ghi đè. Nếu tệp không tồn tại, nó sẽ được tạo tự động. Open file at write mode append. IT is will write on the end of the content has been. Nếu tệp không tồn tại, nó sẽ được tạo tự động. abMở tệp ở chế độ ghi nhị phân nối thêm. IT is will write on the end of the content has been. Nếu tệp không tồn tại, nó sẽ được tạo tự động. r+Mở tệp cho phép cả đọc và ghi. Nếu tệp không tồn tại, fopen() trả về NULL. rb+Mở tệp cho phép cả đọc và ghi ở định dạng nhị phân. Nếu tệp không tồn tại, fopen() trả về NULL. w+Mở tệp cho phép cả đọc và ghi. Nếu tệp đã tồn tại, nội dung sẽ bị ghi đè. Nếu tệp không tồn tại, nó sẽ được tạo tự động. wb+Mở tệp cho phép cả đọc và ghi ở định dạng nhị phân. Nếu tệp đã tồn tại, nội dung sẽ bị ghi đè. Nếu tệp không tồn tại, nó sẽ được tạo tự động. a+Mở tệp cho phép đọc và ghi thêm. Nếu tệp không tồn tại, nó sẽ được tạo tự động. ab+Mở tệp cho phép đọc và ghi thêm ở định dạng nhị phân. Nếu tệp không tồn tại, nó sẽ được tạo tự động

Thao tác đóng file

Khi công việc hoàn tất với tệp tin, kể cả tệp nhị phân hay tệp văn bản. You must close file after doing work with it done

Việc đóng tập tin đang mở có thể được thực hiện bằng cách sử dụng hàm fopen()2

0

1

2

 

fclose(fptr); //Con trỏ FILE trỏ tới file cần được đóng.

 

Đọc/Ghi file văn bản trong C

Chúng ta sẽ học cách đọc file trong C với file văn bản trước. Với tệp nhị phân, bạn kéo xuống bên dưới để xem tiếp

Để làm việc với tệp văn bản, chúng ta sẽ sử dụng fopen()3 và fopen()4

VD1. Ghi tệp sử dụng fprintf()

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

 

#bao gồm

#bao gồm

 

int chính()

{

   int num;

   FILE *fptr;

   fptr = fopen("C:\\program.txt","w");

 

   if(fptr == NULL)

   {

      printf("Lỗi. ");  

      thoát(1);            

   }

 

   printf("Nhập số. ");

   scanf("%d",&num);

 

   fprintf(fptr,"%d",num);

   fclose(fptr);

 

   return 0;

}

 

Chương trình nhận số fopen()5 từ bàn phím và ghi vào tệp văn bản fopen()6

Sau khi chạy chương trình này, bạn sẽ thấy tệp văn bản fopen()6 được tạo mới trong ổ C trên máy tính của bạn. Khi mở tệp này lên, bạn sẽ thấy số mà bạn vừa nhập cho biến fopen()5 kia

VD2. Read file using fscanf()

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

 

#bao gồm

#bao gồm

 

int chính()

{

   int num;

   FILE *fptr;

 

   nếu ((fptr = fopen("C:\\program.txt","r")) == NULL){

       printf("Lỗi. đang mở tệp");

 

       // Chương trình thoát nếu con trỏ tệp trả về NULL.

       thoát(1);

   }

 

   fscanf(fptr,"%d", &num);

 

   printf("Giá trị của n=%d", num);

   fclose(fptr);

  

   return 0;

}

 

Chương trình này sẽ đọc giá trị số được lưu trong tệp fopen()6 mà chương trình ở VD1 vừa tạo ra và trong màn hình lên

Đọc/Ghi file nhị phân trong C

Các hàm stdio.h0 và stdio.h1 trong C được sử dụng để đọc và ghi tệp trong C ở định dạng nhị phân

Ghi file nhị phân

Để ghi tệp nhị phân, bạn cần sử dụng hàm stdio.h1. This hams need 4 tham số. địa chỉ của biến lưu dữ liệu cần ghi, kích thước của biến lưu dữ liệu đó, số lượng kiểu dữ liệu của biến đó và con trỏ FILE con trỏ tới tệp bạn muốn ghi

0

1

2

 

fwrite(address_data,size_data,numbers_data,pointer_to_file);

 

VD3. Ghi file nhị phân sử dụng fwrite()

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

 

#bao gồm

#bao gồm

 

struct threeNum

{

   int n1, n2, n3;

};

 

int chính()

{

   int n;

   struct threeNum num;

   FILE *fptr;

 

   nếu ((fptr = fopen("C:\\program.bin","wb")) == NULL){

       printf("Lỗi. đang mở tệp");

 

       // Chương trình thoát nếu con trỏ tệp trả về NULL.

       thoát(1);

   }

 

   cho(n = 1; n < 5; ++n)

   {

      num. n1 = n;

      num. n2 = 5 * n;

      num. n3 = 5 * n + 1;

      fwrite(&num, sizeof(struct threeNum), 1, fptr);

   }

   fclose(fptr);

  

   return 0;

}

 

Trong VD3 này, chương trình sẽ tạo ra một tệp stdio.h3 trên ổ đĩa C của bạn. Chương trình này đã khai báo 1 kiểu dữ liệu cấu trúc lưu 3 giá trị số stdio.h4 Và nó được sử dụng trong hàm main có tên biến là fopen()5

Trong vòng lặp, các số được ghi vào tệp sử dụng hàm stdio.h1. Các tham số bao gồm

  • Tham số đầu tiên là địa chỉ của biến fopen()5
  • Tham số thứ 2 là kích thước của biến fopen()5
  • Tham số thứ 3 là kiểu dữ liệu số lượng - ở đây là 1
  • Tham số thứ 4 là con trỏ FILE con trỏ tới tệp tin stdio.h3

Cuối cùng, chúng ta đóng file sử dụng fopen()2

Read file nhị phân

Hàm stdio.h0 cũng có 4 tham số tương tự như hàm stdio.h1 phía trên

0

1

2

 

sợ(address_data,size_data,numbers_data,pointer_to_file);

 

Ví dụ đọc file nhị phân sử dụng fread()

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

#bao gồm

#bao gồm

 

struct threeNum

{

   int n1, n2, n3;

};

 

int chính()

{

   int n;

   struct threeNum num;

   FILE *fptr;

 

   nếu ((fptr = fopen("C:\\program.bin","rb")) == NULL){

       printf("Lỗi. đang mở tệp");

 

       // Chương trình thoát nếu con trỏ tệp trả về NULL.

       thoát(1);

   }

 

   cho(n = 1; n < 5; ++n)

   {

      fread(&num, sizeof(struct threeNum), 1, fptr);

      printf("n1. %d\tn2. %d\tn3. %d", num. n1, num. n2, num. n3);

   }

   fclose(fptr);

  

   return 0;

}

 

Trong ví dụ này, bạn đọc tệp stdio.h3 và lặp qua từng dòng. Bạn sẽ nhận được các giá trị tương ứng khi bạn ghi vào trong VD3

Một số ví dụ về đọc tệp ghi trong C

Trong phần này, mình sẽ trình bày 2 ví dụ về đọc ghi file trong C, bao gồm các bài đọc ghi file sau

  • Ghi text vào file trong C
  • Read data text from file in C

Ghi vào file một câu văn bản

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

 

#bao gồm

#include  /* Đối với hàm exit() */

int chính()

{

   ký tự câu[1000];

   FILE *fptr;

 

   fptr = fopen("program.txt", "w");

   if(fptr == NULL)

   {

      printf("Lỗi. ");

      thoát(1);

   }

  

   printf("Nhập câu. \n");

   được(câu);

 

   fprintf(fptr,"%s", sentence);

   fclose(fptr);

 

   return 0;

}

 

Run try

0

1

2

3

 

nhập câu

Tôi tuyệt vời và các tập tin cũng vậy

 

Read data text from file

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

 

#bao gồm

#include // Đối với hàm exit()

int chính()

{

    char c[1000];

    FILE *fptr;

 

    nếu ((fptr = fopen("program.txt", "r")) == NULL)

    {

        printf("Lỗi. đang mở tệp");

        // Chương trình thoát nếu con trỏ tệp trả về NULL.

        thoát(1);        

    }

 

    // đọc văn bản cho đến dòng mới

    fscanf(fptr,"%[^\n]", c);

 

    printf("Dữ liệu từ tệp. \n%s", c);

    fclose(fptr);

    

    return 0;

}

 

Giả sử tập tin văn bản fopen()6 có nội dung như sau

0

1

2

3

4

 

Lập trình C thật tuyệt vời

Tôi yêu lập trình C

Bạn khỏe không?

 

Run try

0

1

2

 

Dữ liệu từ tệp file. C lập trình thật tuyệt vời.

 

Tham khảo

  1. https. //www. lập trình. com/c-lập trình/c-file-input-output

  • THẺ
  • đọc ghi tập tin
  • fprintf trong c
  • fscanf trong c
  • học c báo đạo
  • key learning C
  • thao tác với tập tin

Facebook

Twitter

Pinterest

WhatsApp

Con trăn fscanf

Nguyễn Văn Hiếu

Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là cơ sở thích ghi lại các kiến ​​thức mà tôi tích lũy được