Trang công ty | KIẾN THỨC LẬP TRÌNH | C/C++ | Đọc ghi tệp tin trong C – Thao tác thao tác làm việc với file trong C bỏ ra tiết


Nội dung

1. Đặc tả tập tin trong lập trình C1.2 các loại tệp1.3 Các làm việc với file trong C1.3.4 Đọc ghi dữ liệu từ file văn phiên bản trong C1.3.5 Đọc với ghi dữ liệu vào tập tin nhị phân1.3.6 lấy dữ liệu bằng phương pháp sử dụng hàm fseek()2. Tin tức thêm về C2.1 phong cách liệt kê trong thiết kế C2.1.1 Khai báo loại liệt kê3. Cỗ tiền cách xử lý trong xây dựng C3.2 Macro sử dụng #define3.3 Hàm y như các Macro3.4 Biên dịch bao gồm điều kiện3.4.2 các Macro được khẳng định trước4. Tủ sách C chuẩn4.2 Những ưu thế khi sử dụng các hàm thư viện C

1. Đặc tả tập tin trong thiết kế C

Trong phần này, các bạn sẽ được mày mò về đặc tả tập tin trong ngôn ngữ xây dựng C. Bạn cũng sẽ học được phương pháp xử lý luồng vào ra tiêu chuẩn trong thiết kế C bằng cách sử dụng fprintf(), fscanf(), fread(), fwrite(), fseek(),… thông qua các ví dụ.

Bạn đang xem: Bài Tập Đọc Ghi File Trong Ngôn Ngữ Lập Trình C

Tệp (File) là 1 trong vùng chứa trong số thiết bị lưu trữ của sản phẩm tính được sử dụng để tàng trữ dữ liệu.

*
*
1.1 do sao những tệp lại quan tiền trọng?

 Khi một thiết kế kết thúc, tổng thể dữ liệu sẽ bị mất. Lưu trữ vào tệp để giúp đỡ bảo toàn dữ liệu của bạn ngay cả lúc lập trình kết thúc.Bạn sẽ mất không hề ít thời gian nhằm nhập một lượng dữ liệu lớn vào. Mặc dù nhiên, nếu khách hàng có một tệp chứa tất cả dữ liệu, các bạn sẽ dễ dàng truy vấn vào nội dung của tệp đó bằng phương pháp sử dụng một vài ba lệnh trong xây dựng C.Bạn hoàn toàn có thể dễ dàng dịch chuyển dữ liệu của bản thân mình từ máy tính xách tay này sang laptop khác mà lại không có bất kể sự chuyển đổi nào.

1.2 các loại tệp

Có 2 loại tệp sau đây:

Tệp văn bản
Tập tin nhị phân1.2.1 Tệp văn bản

Tệp văn phiên bản là tệp .txt bình thường. Chúng ta có thể dễ dàng tạo thành tệp văn phiên bản bằng phần đông trình biên soạn thảo văn bản như Notepad.

Khi mở hầu hết tệp này, các bạn sẽ thấy toàn bộ nội dung trong số ấy là các văn bạn dạng thuần túy. Bạn cũng có thể dễ dàng sửa đổi hoặc xóa những nội dung vào tệp.

Dù những tệp văn phiên bản không gồm tính bảo mật cao với chiếm không khí lưu trữ lớn, nhưng chúng lại dễ đọc.

1.2.2 Tập tin nhị phân

Các tập tin nhị phân đa số là những tệp bin. trong laptop của bạn.

Thay vì tàng trữ dữ liệu bên dưới dạng văn phiên bản thuần túy thì chúng tàng trữ dữ liệu dưới dạng nhị phân (0 với 1).

Các tập tin nhị phân hoàn toàn có thể chứa lượng lớn tài liệu nhưng chúng không dễ đọc và có tính bảo mật cao hơn các tệp văn bản.

1.3 Các làm việc với tệp tin trong C

Bạn hoàn toàn có thể thực hiện nay 4 thao tác với tệp tin trong C (kể cả tệp văn bản hay tập tin nhị phân) như sau:

Tạo tệp tin mới
Mở file đang cóĐóng fileĐọc ghi file trong C1.3.1 làm việc với file trong C

Khi thao tác làm việc với file trong C, bạn phải khai báo con trỏ của giao diện tệp. Khai báo giúp tạo kết nối giữa tệp cùng lập trình.

FILE *fptr;

1.3.2 Mở file – để chế tạo ra và chỉnh sửa

Để có thể đọc ghi tệp tin trong C, trước hết bạn phải mở tệp bằng phương pháp sử dụng hàm fopen vào C được khẳng định trong tệp tiêu đề stdio.h.

Cú pháp nhằm mở tệp vào luồng vào ra tiêu chuẩn như sau:

ptr = fopen(“fileopen”,”mode”);

Ví dụ,

fopen(“E:\cprogram\newprogram.txt”,”w”);

fopen(“E:\cprogram\oldprogram.bin”,”rb”);

Giả sử tệp newprogram.txt ko tồn tại ở phần E:cprogram. Hàm đầu tiên sẽ tạo nên một tệp mới có tên là newprogram.txt và mở tệp này. Bạn cũng có thể thêm văn phiên bản vào tệp bởi chính sách của tệp này là ‘w’.

Thuộc tính writing mode cho phép bạn sản xuất hoặc chỉnh sửa nội dung của một tệp.

Xét mang đến tập tin nhị phân vật dụng 2. đưa sử tập tin nhị phân oldprogram.bin tồn tại ở trong phần E:cprogram. Hàm thứ hai sẽ mở tập tin đang có và chúng ta có thể đọc được được ngôn từ ở chế độ nhị phân ‘rb‘.

Tính năng đọc chỉ chất nhận được bạn đọc tệp nhưng bắt buộc ghi dữ liệu vào tệp được.

Bảng. Các chính sách mở trong luồng ra vào tiêu chuẩn trong thiết kế C

Chế độÝ nghĩa của chế độTrong thời hạn tệp không tồn tại
rMở để đọcNếu tệp ko tồn tại, fopen() trả về NULL.
rbMở nhằm đọc ở cơ chế nhị phân.Nếu tệp không tồn tại, fopen() trả về NULL.
wMở để ghi dữ liệuNếu tệp tồn tại, ngôn từ của nó sẽ tiến hành ghi đè lên

Nếu tệp ko tồn tại, sẽ tạo một tệp mới.

wbMở nhằm ghi dữ liệu trong chế độ nhị phânNếu tệp tồn tại, nội dung của nó sẽ được ghi đè lên

Nếu tệp không tồn tại, sẽ tạo một tệp mới.

aMở để bổ sung dữ liệu

Thêm tài liệu vào phần cuối tệp

Nếu tệp ko tồn tại, sẽ tạo nên một tệp mới.
abMở để bổ sung dữ liệu trong chính sách nhị phân

Thêm tài liệu vào phần cuối tệp

Nếu tệp không tồn tại, sẽ tạo một tệp mới.
r+Mở để đọc cùng ghi dữ liệu vàoNếu tệp ko tồn tại fopen() trả về NULL.
rb+Mở để đọc cùng ghi tài liệu trong chế độ nhị phânNếu tệp ko tồn tại fopen() trả về NULL
w+Mở nhằm đọc và ghi dữ liệu vàoNếu tệp tồn tại, ngôn từ của nó sẽ được ghi đè lên

Nếu tệp ko tồn tại, sẽ tạo nên một tệp mới.

wb+Mở nhằm đọc và ghi dữ liệu vào trong chế độ nhị phânNếu tệp tồn tại, nội dung của nó sẽ được ghi đè lên

Nếu tệp không tồn tại, sẽ tạo một tệp mới.

a+Mở nhằm đọc và bổ sung dữ liệuNếu tệp không tồn tại, sẽ khởi tạo một tệp mới.
ab+Mở để đọc và bổ sung cập nhật dữ liệu trong chính sách nhị phânNếu tệp không tồn tại, sẽ khởi tạo một tệp mới.
1.3.3 Đóng tệpBạn bắt buộc đóng tệp (cả tệp văn bạn dạng và tập tin nhị phân) sau khoản thời gian đọc ghi tệp tin trong C.

Sử dụng hàm fclose() để đóng tệp.

fclose(fptr);

fptr là 1 trong con trỏ tệp được link với tệp sẽ được đóng.

1.3.4 Đọc ghi tài liệu từ file văn bạn dạng trong C

Để đọc với ghi tài liệu vào tệp văn bản, bạn áp dụng hàm fprintf với fscanf vào C

2 hàm bên trên là gần như phiên bản khác của theo lần lượt 2 hàm printf() và scanf(). Mặc dù nhiên, gồm một sự không giống biệt: 2 hàm fprint() với fscanf() sẽ hướng dẫn con trỏ đến kết cấu FILE.

Ví dụ 1: ghi dữ liệu vào file văn bản

#include

#include

int main()

int num;

FILE *fptr;

// use appropriate location if you are using Mac
OS or Linux

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

if(fptr == NULL)

printf(“Error!”);

exit(1);

printf(“Enter num: “);

scanf(“%d”,&num);

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

fclose(fptr);

return 0;

Lập trình này sẽ lấy một trong những do người tiêu dùng nhập rồi lưu trữ nó trong tệp program.txt.

Sau khi tiến hành biên dịch cùng chạy lập trình, các bạn sẽ thấy tệp văn phiên bản program.txt sẽ được tạo nên trong ổ C của dòng sản phẩm tính. Khi mở tệp này, bạn sẽ thấy số nguyên mà chúng ta đã nhập vào.

Ví dụ 2: Đọc tệp tin trong C

#include

#include

int main()

int num;

FILE *fptr;

if ((fptr = fopen(“C:\program.txt”,”r”)) == NULL)

printf(“Error! opening file”);

// Program exits if the tệp tin pointer returns NULL.

exit(1);

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

printf(“Value of n=%d”, num);

fclose(fptr);

return 0;

Lập trình này đang đọc số nguyên đang sẵn có trong tệp tin program.txt cùng in nó lên màn hình.

Chẳng hạn, lúc lập trình ở ví dụ 1 chạy, nó sẽ nhận được số nguyên mà bạn đã nhập vào.

Các hàm fgetchar(), fputc(),… cũng rất được sử dụng giống như như trên.

1.3.5 Đọc và ghi tài liệu vào tập tin nhị phân

Khi mong mỏi đọc hoặc ghi dữ liệu vào tập tin nhị phân, bạn sử dụng tệp fread và fwrite vào C.

Ghi tài liệu vào tập tin nhị phân.

Sử dụng hàm fwrite() nhằm ghi dữ liệu vào tập tin nhị phân. Hàm này còn có 4 đối số như sau:

địa chỉ của tài liệu được ghi vào đĩakích thước của dữ liệu được ghi vào đĩasố lượng các loại tài liệu nàyđưa con trỏ mang đến tệp mà bạn muốn ghi dữ liệu.

fwrite(address
Data, size
Data, numbers
Data, pointer
ToFile);

Ví dụ 3: Ghi dữ liệu vào tệp nhị phân bởi hàm fwrite vào C

#include

#include

struct three
Num

int n1, n2, n3;

;

int main()

{

int n;

struct three
Num num;

FILE *fptr;

if ((fptr = fopen(“C:\program.bin”,”wb”)) == NULL)

printf(“Error! opening file”);

// Program exits if the tệp tin pointer returns NULL.

exit(1);

for(n = 1; n Ví dụ 4: Đọc dữ liệu từ tệp nhị phân bởi hàm fread trong C

#include

#include

struct three
Num

int n1, n2, n3;

;

int main()

{

int n;

struct three
Num num;

FILE *fptr;

if ((fptr = fopen(“C:\program.bin”,”rb”)) == NULL)

printf(“Error! opening file”);

// Program exits if the tệp tin pointer returns NULL.

exit(1);

for(n = 1; n 1.3.6 lấy dữ liệu bằng cách sử dụng hàm fseek()

Nếu vào một tệp gồm nhiều phiên bản ghi và chúng ta chỉ muốn truy vấn vào một bạn dạng ghi ở một vị trí cầm cố thể, bạn phải lướt qua tất các phiên bản ghi trước khi lấy được bản ghi nhưng mình mong muốn muốn.

Sẽ mất tương đối nhiều thời gian và công sức của con người để hoàn thành nhiệm vụ này. Mặc dù nhiên, chỉ cần sử dụng hàm fseek() là bạn sẽ dễ dàng truy vấn vào dữ liệu đang cần.

Hàm fseek() đang đưa bé trỏ đến bạn dạng ghi mà bạn muốn tìm trong tệp.

Cú pháp của fseek ()

fseek(FILE * stream, long int offset, int whence);

Luồng tham số thứ nhất là bé trỏ chỉ đến tệp. Tham số thiết bị 2 chính là vị trí địa điểm mà phiên bản ghi được tìm thấy và tham số sản phẩm 3 chính là vị trí mà bé trỏ bắt đầu

Bảng: những vị trí ban đầu khác nhau trong hàm fseek()

WhenceÝ nghĩa
SEEK_SETBắt đầu từ vị trí đầu tệp
SEEK_ENDBắt đầu từ vị trí cuối tệp
SEEK_CURBắt đầu từ vị trí hiện tại của con trỏ vào tệp
Ví dụ 5: fseek()

#include

#include

struct three
Num

int n1, n2, n3;

;

int main()

{

int n;

struct three
Num num;

FILE *fptr;

if ((fptr = fopen(“C:\program.bin”,”rb”)) == NULL)

printf(“Error! opening file”);

// Program exits if the file pointer returns NULL.

exit(1);

// Moves the cursor lớn the kết thúc of the file

fseek(fptr, -sizeof(struct three
Num), SEEK_END);

for(n = 1; n 2. Tin tức thêm về C

2.1 kiểu liệt kê trong lập trình C

Trong phần này, các bạn sẽ được khám phá về liệt kê trong ngữ điệu lập trình C trải qua các ví dụ.

Trong thiết kế C, mẫu mã liệt kê (hay còn được gọi là enum) là kiểu dáng dữ liệu bao hàm các hằng số tích phân. áp dụng từ khóa enum để xác minh kiểu liệt kê.

enum flag const1, const2, …, const
N;

Theo mặc định, const1 là 0, const2 là 1,…) bạn có thể thay đổi cực hiếm mặc định của các phần tử enum trong quy trình khai báo (nếu thực thụ cần).

// Changing default values of enum constants

enum suit

club = 0,

diamonds = 10,

hearts = 20,

spades = 3,

;

2.1.1 Khai báo kiểu dáng liệt kê

Ngay khi bạn xác định được dạng hình liệt kê thì bạn dạng thiết kế mang đến biến sẽ tiến hành tạo ra. Dưới đây là cách tạo những biến của những kiểu liệt kê

enum boolean false, true;

enum boolean check; // declaring an enum variable

Ở đây, biến kiểm tra của các loại enum boolean được chế tác ra.

Bạn cũng rất có thể khai báo phát triển thành enum như sau:

enum boolean false, true check;

Giá trị của false bằng 0 và giá trị của true bởi 1.

Ví dụ: loại liệt kê

#include

enum week Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;

int main()

// creating today variable of enum week type

enum week today;

today = Wednesday;

printf(“Day %d”,today+1);

return 0;

Output

Day 4

2.1.2 vị sao nên áp dụng enums?

Biến enum chỉ rất có thể nhận một giá chỉ trị. Dưới đấy là ví dụ chứng minh:

#include

enum suit

club = 0,

diamonds = 10,

hearts = 20,

spades = 3

card;

int main()

card = club;

printf(“Size of enum variable = %d bytes”, sizeof(card));

return 0;

Đầu ra

Size of enum variable = 4 bytes

Kết quả in trên màn hình hiển thị là 4 cũng chính vì kích thước của int là 4 byte

Do đó, enum đó là sự lựa chọn phù hợp với các cờ.

2.1.3 Làm vắt nào để thực hiện enum làm cho cờ?

Hãy xem ví dụ bên dưới đây

enum design
Flags

ITALICS = 1,

BOLD = 2,

UNDERLINE = 4

button;

Giả sử bạn đang xây dựng một nút cho vận dụng trên Windows. Chúng ta có thể đặt cờ ITALICS, BOLD với UNDERLINE tương xứng với văn bản.

Đây là tại sao vì sao tất cả các hằng số tích phân là lũy thừa của 2 trong mã giá trên.

// In binary

ITALICS = 00000001

BOLD = 00000010

UNDERLINE = 00000100

Vì những hằng số tích phân là lũy thừa của 2 nên bạn cũng có thể kết đúng theo 2 hoặc các cờ và một lúc nhưng không trùng lặp bằng phương pháp sử dụng toán tử bitwise OR. Điều này chất nhận được bạn gạn lọc 2 hoặc nhiều cờ và một lúc. Ví dụ,

#include

enum design
Flags

BOLD = 1,

ITALICS = 2,

UNDERLINE = 4

;

int main() UNDERLINE;

// 00000001

//

Đầu ra

5

Đầu ra là 5 có nghĩa là cờ bold với cờ underline được sử dụng.

Ngoài ra, bạn có thể thêm các cờ tùy thuộc vào yêu cầu của mình.

if (my
Design và ITALICS)

// code for italics

Tôi đang thêm cờ italics vào thiết kế của mình. Lưu lại ý, chỉ viết code for italics bên trong câu lệnh if.

Bạn có thể thực hiện các lập trình C mà không cần áp dụng đến phép liệt kê. Tuy nhiên, chúng cũng với lại ích lợi trong một vài ngôi trường hợp độc nhất vô nhị định.

3. Cỗ tiền cách xử trí trong thiết kế C

Trong phần này, các bạn sẽ được tìm hiểu về cỗ tiền giải pháp xử lý trong lập trình sẵn C. Bên cạnh đó, bạn cũng khá được học về kiểu cách sử dụng #include, #define cùng biên dịch gồm điều kiện thông qua các ví dụ.

Bộ tiền cách xử lý trong thiết kế C là cỗ tiền giải pháp xử lý macro (cho phép bạn xác định các macro) giúp thay đổi lập trình của công ty trước lúc nó được biên dịch. Các biến đổi này rất có thể là tệp tiêu đề, không ngừng mở rộng macro,…

Tất cả những chỉ thị tiền cách xử lý đều bắt đầu bằng ký hiệu #. Ví dụ,

#define PI 3.14

Một số giải pháp sử dụng phổ biến của cỗ tiền cách xử trí trong lập trình sẵn C:

3.1 Tệp title including (bao gồm): #include

Bộ tiền cách xử trí của #include được sử dụng để đưa các tệp title vào xây dựng C. Ví dụ:

#include

stdio.h chính là một tệp tiêu đề. Chỉ thị tiền xử trí #include thay thế dòng phía trên bằng phương pháp sử dụng văn bản của tệp title stdio.h.

Đó là lý do vì sao bạn phải sử dụng #include trước khi dùng các hàm như scanf() với printf().

Bạn cũng rất có thể tạo những tệp tiêu đề đựng khai báo hàm và gửi nó vào thiết kế của bạn bằng cách sử dụng thông tư tiền xử lý dưới đây

#include “my_header.h”

Truy cập vào trang này để hiểu thêm thông tin về phong thái sử dụng tệp tiêu đề.

Xem thêm: Cách tạo tài khoản đột kích, cf trên điện thoại android, iphone

3.2 Macro sử dụng #define

Marco là 1 trong những đoạn code được để tên. Bạn có thể xác định marco trong lập trình C bằng phương pháp sử dụng thông tư tiền giải pháp xử lý #define.

Hãy coi ví dụ bên dưới đây

#define c 299792458 // tốc độ of light

Khi được áp dụng trong lập trình, c sẽ được sửa chữa bằng 299792458.

Ví dụ 1: bộ tiền giải pháp xử lý #define

#include

#define PI 3.1415

int main()

float radius, area;

printf(“Enter the radius: “);

scanf(“%f”, &radius);

// Notice, the use of PI

area = PI*radius*radius;

printf(“Area=%.2f”,area);

return 0;

3.3 Hàm y hệt như các Macro

Bạn cũng rất có thể xem các macro vận động tương từ như lời gọi hàm. Bọn chúng được điện thoại tư vấn là function-like macro. Ví dụ

#define circle
Area(r) (3.1415*(r)*(r))

Mỗi lúc lập trình này gặp gỡ đối số circle
Area(argument), nó vẫn được sửa chữa bằng (3.1415*(argument)*(argument).

Giả sử, tôi nhập 5 có tác dụng đối số và sau đó, nó đang được mở rộng như bên dưới:

circle
Area(5) expands to (3.1415*5*5)

Ví dụ 2: áp dụng bộ tiền cách xử lý #define

#include

#define PI 3.1415

#define circle
Area(r) (PI*r*r)

int main()

float radius, area;

printf(“Enter the radius: “);

scanf(“%f”, &radius);

area = circle
Area(radius);

printf(“Area = %.2f”, area);

return 0;

Truy cập vào trang này để hiểu biết thêm thông tin cụ thể về macro và bộ tiền giải pháp xử lý #define.

3.4 Biên dịch bao gồm điều kiện

Trong xây dựng C, chúng ta cũng có thể thông báo với cỗ tiền cách xử lý rằng bao gồm cần thêm một khối mã nhất mực vào tuyệt không. Sử dụng những chỉ thị có đk để giải quyết và xử lý vấn đề trên.

Nó tựa như như câu lệnh if nhưng vẫn đang còn một vài ba điểm khác biệt.

Câu lệnh if được kiểm tra trong quá trình thực hiện bình chọn một khối mã bắt buộc được thực hiện hay không. Còn những chỉ thị có đk được thực hiện để thêm (hoặc quăng quật qua) một khối mã vào lập trình trước lúc thực thi.

Cách sử dụng chỉ thị có điều kiện

sử dụng phần đông mã khác biệt tùy thuộc vào máy và hệ điều hànhbiên dịch và một tệp mối cung cấp trong 2 lập trình khác nhaucó thể vứt bỏ một mã tuyệt nhất định thoát ra khỏi lập trình tuy thế vẫn tàng trữ lại cho đầy đủ lần sử dụng tiếp theo.3.4.1 Làm cầm cố nào để sử dụng các chỉ thị bao gồm điều kiện?

Để sử dụng những chỉ thị có điều kiện, chúng ta dùng các chỉ thị #ifdef, #if, #defined, #else cùng #elseif.

#ifdef Directive

#ifdef MACRO

// conditional codes

#endif

Các mã có đk chỉ được cấp dưỡng lập trình lúc MACRO được xác định

#if, #elif and #else Directive

#if expression

// conditional codes

#endif

expression là 1 biểu thức mẫu mã số nguyên (có thể là số nguyên, ký tự, biểu thức số học, macro,…)

Các mã đk chỉ được cung ứng lập trình lúc expression được đánh giá là có giá trị không giống 0.

Chỉ thị #else mang tính tùy chọn hoàn toàn có thể được áp dụng với thông tư #if.

#if expression

conditional codes if expression is non-zero

#else

conditional if expression is 0

#endif

Bạn cũng rất có thể thêm đk lồng vào #if…#else bằng phương pháp sử dụng #elif

#if expression

// conditional codes if expression is non-zero

#elif expression1

// conditional codes if expression is non-zero

#elif expression2

// conditional codes if expression is non-zero

#else

// conditional if all expressions are 0

#endif

#defined

Toán tử đặc biệt quan trọng #defined được thực hiện để đánh giá xem một macro nhất định gồm được khẳng định hay không. Nó thường xuyên được thực hiện với chỉ thị #if.

#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048

// codes

3.4.2 các Macro được xác định trước

Dưới đây là một số macro được xác minh trước trong lập trình sẵn C.

MacroGiá trị
__DATE__Chuỗi đựng ngày hiện tại
__FILE__Chuỗi đựng tên tệp
__LINE__Một số nguyên đại diện cho số cái hiện tại
__STDC__If follows ANSI standard C, then the value is a nonzero integer

Nếu theo đúng tiêu chuẩn ANSI trong lập trình sẵn C, thì quý giá là một số trong những nguyên không giống 0

__TIME__Chuỗi cất ngày hiện tại tại
Ví dụ 3: thực hiện __TIME__ để xác định thời gian hiện tạiLập trình sau đang xuất áp sạc ra là thời gian hiện tại bằng phương pháp sử dụng marco __TIME__.

#include

int main()

printf(“Current time: %s”,__TIME__);

Đầu ra

Current time: 19:54:39

Điều khiển dòng bộ tiền xử lý Pragmas Đầu ra của cục tiền xử lý những chỉ thị khác

4. Tủ sách C chuẩn

4.1 những hàm thư viện tiêu chuẩn trong thiết kế C

Trong phần này, bạn sẽ được tò mò về những hàm thư viện tiêu chuẩn trong xây dựng C. Cụ thể là khái niệm và những loại hàm thư viện khác nhau cũng giống như cách sử dụng chúng trong lập trình của bạn.

Các hàm thư viện chuẩn đó là những hàm vẫn sẵn có trong thiết kế C.

Nguyên chủng loại hàm và khái niệm dữ liệu của không ít hàm này có trong các tệp tiêu đề tương ứng. Để áp dụng những hàm này, bạn cần thêm các tệp title vào lập trình. Ví dụ,

Nếu ao ước sử dụng hàm printf() thì chúng ta phải thêm tệp title vào.

#include

int main()

printf(“Catch me if you can.”);

Nếu bạn cố gắng sử dụng hàm printf() cơ mà không thêm tệp tiêu để stdio.h vào thì lập trình đã báo lỗi.

4.2 Những điểm mạnh khi sử dụng những hàm thư viện C

Các hàm chạy ổn định

Một trong những lý do quan trọng mà bạn nên sử dụng những hàm thư viện đó là chúng chạy hết sức ổn định. Những hàm này đang trải qua nhiều cuộc demo nghiệm nghiêm ngặt và rất đơn giản sử dụng.

Các hàm này đang được về tối ưu hóa hiệu suất

Vì chúng là các hàm thư viện chuẩn, vày đó, một nhóm các developer sẽ liên tục cải tiến chúng để có được phiên phiên bản tốt nhất. Trong quá trình cải tiến, họ có thể tạo ra những mã tác dụng nhất để về tối ưu hóa hiệu suất.

Giúp tiết kiệm thời gian

Các hàm tổng quát như in ra màn hình, tính căn bậc 2,… mọi đã được viết sẵn. Bởi đó, bạn không nên phải lo lắng về việc viết lại bọn chúng một lần nữa.

Các hàm rất linh thiêng động

Mọi sản phẩm công nghệ luôn chuyển đổi từng ngày với ứng dụng của công ty cũng phải hoạt động mọi lúc các nơi. Bởi vì đó, các hàm thư viện vẫn giúp chúng ta cũng có thể thực hiện một trọng trách ở nhiều máy tính xách tay khác nhau.

Ví dụ: sử dụng hàm sqrt () nhằm tính căn bậc 2

Giả sử bạn có nhu cầu tìm căn bậc 2 của một số.

Để có thể tính được căn bậc 2 của một số, chúng ta có thể sử dụng hàm thư viện sqrt(). Hàm này được xác minh trong tệp tiêu đề math.h

#include

#include

int main()

float num, root;

printf(“Enter a number: “);

scanf(“%f”, &num);

// Computes the square root of num và stores in root.

root = sqrt(num);

printf(“Square root of %.2f = %.2f”, num, root);

return 0;

Khi chúng ta chạy xây dựng này, áp sạc ra sẽ là

Enter a number: 12

Square root of 12.00 = 3.46

Các hàm thư viện trong các tệp tiêu đề khác

Các tệp tiêu đề trong lập trình sẵn C
Các hàm chứng thực lập trình
Các hàm kiểu cam kết tự
Các hàm bao gồm chức năng bạn dạng địa hóa
Các hàm toán học
Các hàm cất lệnh nhảy
Các hàm cách xử lý tín hiệu
Các hàm cách xử lý đối số của biến
Các hàm luồng vào ra tiêu chuẩn
Các hàm số hiệu dụng tiêu chuẩn
Các hàm cách xử lý chuỗi
Các hàm ngày giờ

Trong bài xích này họ sẽ tò mò cách gọi ghi tệp tin trong C bằng cách sử dụng các hàm cách xử lý file: fprintf(), fscanf(), fread(), fwrite(), fseek().

*


*

Đa số sinh viên nước ta học lập trình C là nhằm luyện tứ duy logic, cũng đều có một số người dùng để làm xây dựng ứng dụng thực tiễn nên việc thao tác làm việc với tệp tin là rất quan trọng khi cần tàng trữ dữ liệu nhưng mà không đề nghị hệ quản lí trị CSDL.

1. Tại sao cần lưu trữ dữ liệu lên file?

Khi chương trình kết thúc thì tổng thể dữ liệu sẽ ảnh hưởng mất, vị vậy nếu như bạn lưu vào file thì đang xem lại được thông tin.

Hoặc nếu như bạn cần nhập tài liệu lớn thì đang mấ không ít thời gian. Nhưng nếu như bạn lưu nó vào trong 1 file có cấu trúc nhất quán, và sử dụng lệnh phát âm ghi tệp tin trong C thì vấn đề xử lý sẽ nhanh gọn hơn khôn xiết nhiều.

Bài viết này được đăng tại


Bạn cũng rất có thể dễ dàng copy dữ liệu từ sản phẩm công nghệ này sang lắp thêm khác.

Tuy nhiên việc tàng trữ này là ko an toàn, bởi fan dùng có thể mở tệp tin ra đọc một biện pháp dễ dàng, chứ không giống như lưu trữ vào những hệ quản trị csdl như SQL hệ thống / My
SQL / Oracle.

2. Bao hàm loại file phổ biến nào?

Khi xử lý file vào C thì chúng ta cần xem xét hai loại file như sau:

Text files
Binary files

Text file

Là một file có phần mở rộng là txt, nó là file thông thường nên rất có thể mở nó bằng những điều khoản đọc tệp tin text dễ dàng và đơn giản như notepad.

Khi bạn mở những file đó, các bạn sẽ thấy toàn bộ nội dung trong tệp bên dưới dạng văn phiên bản thuần túy. Bạn có thể dễ dàng sửa đổi hoặc xóa nội dung.

Chúng rất cần được tối ưu sẽ giúp đỡ dễ đọc, bảo mật, cũng như chiếm ít dung lượng lưu trữ.

Binary files

Là đa số file có phần đuôi không ngừng mở rộng là .bin và nó có không ít trong sản phẩm công nghệ tính của chúng ta đấy.

Thay vì lưu trữ ở dạng văn bạn dạng thuần túy thì họ tàng trữ ở dạng nhị phân (0 với 1), do vậy size file sẽ khá dài, tuy thế bù lại dữ liệu sẽ không thể đọc bởi mắt hay được nên an toàn hơn.

3. Các thao tác làm việc cơ bản với tệp tin trong C

Bây giờ đồng hồ ta sẽ thực hành thực tế một vài làm việc với file thông dụng duy nhất nhé.

Khai báo con trỏ dạng hình FILE

Khi làm việc với tệp tin thì các bạn phải khai báo bé trỏ phong cách FILE, nó đang trỏ đến file nên đọc trên máy vi tính và giúp trình biên dịch hiểu ghi tài liệu với file.


FILE *fptr;

Mở một file

Để mở tệp tin thì ta thực hiện hàm fopen() phía bên trong thư viện stdio.h. Cú pháp của chính nó như sau:


ptr = fopen("fileopen","mode");
Ví dụ:


fopen("E:\cprogram\newprogram.txt","w");fopen("E:\cprogram\oldprogram.bin","rb");
Đường dẫn mở file rất rõ ràng. Nhưng chính sách đọc file mode thì các bạn hãy xem bảng dưới đây.

Mode
Meaning of Mode
rMở nhằm đọc.
rbMở hiểu theo chế độ binary.
wMở để ghi.
wbMở ghi theo chế độ binary.
aMở nhằm ghi thêm dữ liệu vào cuối file.
abMở ở cơ chế binary,Dữ liệu sẽ được ghi vào cuối file.
r+Mở nhằm đọc với ghi
rb+Mở nhằm đọc cùng ghi ở chế độ binary.
w+Mở để đọc với ghi
wb+Mở để đọc với ghi ở chính sách binary..
a+Mở để đọc và bổ sung dữ liệu.
ab+Mở nhằm đọc và bổ sung dữ liệu. Cơ chế binary.

Đóng kết nối

Sau lúc mở file và thực hiện ngừng thì chúng ta nên đóng file lại bằng phương pháp sau:


fclose(fptr);
Trong kia fptr là con trỏ của file sẽ xử lý.

4. Đọc và ghi vào tệp tin text

Để đọc cùng ghi tài liệu vào tệp tin text thì ta sử dụng hai hàm fprintf() cùng fscanf().

Ví dụ: Ghi dữ liệu vào tệp tin text


#include #include int main() int num; tệp tin *fptr; fptr = fopen("C:\program.txt","w"); if(fptr == NULL) printf("Error!"); exit(1); printf("Enter num: "); scanf("%d",&num); fprintf(fptr,"%d",num); fclose(fptr); return 0;
Chương trình này lấy một vài từ người tiêu dùng và lưu trữ trong file program.txt.

Sau lúc biên dịch với chạy lịch trình này, bạn cũng có thể thấy file program.txt được chế tạo ra trong ổ C của sản phẩm tính. Khi chúng ta mở file chúng ta có thể thấy số nguyên chúng ta đã nhập.

Ví dụ 2: Đọc dữ liệu từ file text


#include #include int main() int num; file *fptr; if ((fptr = fopen("C:\program.txt","r")) == NULL) printf("Error! opening file"); exit(1); fscanf(fptr,"%d", &num); printf("Value of n=%d", num); fclose(fptr); return 0;
Chương trình này hiểu số nguyên tất cả trong tệp tin program.txt với in ra màn hình.

Nếu các bạn đã tạo thành công file từ lấy một ví dụ 1 thì khi chạy chương trình này sẽ nhận được số nguyên bạn đã nhập.

Các hàm khác như fgetchar (), fputc (), v.v. Sử dụng tựa như theo phương pháp này.

4. Đọc với ghi tài liệu vào file binary

Hai hàm fread() cùng fwrite() được dùng để làm đọc cùng ghi vào file ở định dạng nhị phân binary.

Ghi tệp tin nhị phân

Để ghi vào tệp tin nhị phân, bạn phải sử dụng hàm fwrite (). Hàm này còn có bốn tham số:

Đường dẫn đến file yêu cầu ghi
Kích thước của dữ liệu
Số loại tài liệu như vậy
Con trỏ mang lại file mà bạn có nhu cầu ghi

fwrite(address
Data, size
Data, numbers
Data, pointer
ToFile);
Ví dụ: Ghi dữ liệu vào file nhị phân thực hiện ham ffwrite()


#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num num; tệp tin *fptr; if ((fptr = fopen("C:\program.bin","wb")) == NULL) printf("Error! opening file"); // Dừng công tác nếu bé trỏ gọi file trả về NULL. Exit(1); for(n = 1; n

Đọc dữ liệu file nhị phân

Để phát âm file nhị phân thì ta áp dụng hàm fread(), hàm này cũng có bốn tham số như hàm fwrite.


fread(address
Data, size
Data, numbers
Data, pointer
ToFile);
#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num num; tệp tin *fptr; if ((fptr = fopen("C:\program.bin","rb")) == NULL) printf("Error! opening file"); // Dừng lịch trình nếu nhỏ trỏ gọi file trả về NULL. Exit(1); for(n = 1; n

5. Lấy dữ liệu bằng hàm fseek()

Nếu bạn có tương đối nhiều dòng ghi phía bên trong file và cần truy cập đến vị trí cụ thể thì chỉ cần lặp qua toàn bộ các loại và rước dòng ước ao lấy, điều đó sẽ tiêu tốn lãng phí rất nhiều bộ nhớ và thời hạn hoạt động.

Ta hoàn toàn có thể sử dụng hàm fseek () nhằm trỏ đến dòng mong ước một cách sớm nhất có thể mà không hẳn duyệt toàn bộ nội dung của file.

Cú pháp:


fseek(FILE * stream, long int offset, int whence);
Tham số trước tiên là bé trỏ cho file. Tham số trang bị hai là form size dữ liệu đề nghị ghi vào. Thông số thứ cha chỉ xác định trí bước đầu tìm.

Tham số whence chính là một trong cha hằng số sau:

WhenceÝ nghĩa
SEEK_SETBắt đầu tự vị trí đầu tiên của file.
SEEK_ENDBắt đầu tự vị trí sau cùng của file.
SEEK_CURBắt đầu tự vị trí lúc này của nhỏ trỏ

#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num num; tệp tin *fptr; if ((fptr = fopen("C:\program.bin","rb")) == NULL) printf("Error! opening file"); // Dừng lịch trình nếu nhỏ trỏ phát âm file trả về NULL. Exit(1); // dịch rời con trỏ về cuối tệp tin fseek(fptr, -sizeof(struct three
Num), SEEK_END); for(n = 1; n
Chương trình này sẽ bắt đầu đọc các bạn dạng ghi từ tệp tin program.bin theo sản phẩm tự trái lại (từ cuối mang đến trước) với in ra màn hình.