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 C1. Đặ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ảnTậ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ânCá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ớiMở 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 |
r | Mở để đọc | Nếu tệp ko tồn tại, fopen() trả về NULL. |
rb | Mở nhằm đọc ở cơ chế nhị phân. | Nếu tệp không tồn tại, fopen() trả về NULL. |
w | Mở để ghi dữ liệu | Nế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. |
wb | Mở nhằm ghi dữ liệu trong chế độ nhị phân | Nế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ở để 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. |
ab | Mở để 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ào | Nế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ân | Nếu tệp ko tồn tại fopen() trả về NULL |
w+ | Mở nhằm đọc và ghi dữ liệu vào | Nế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ân | Nế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ệu | Nế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ân | Nếu tệp không tồn tại, sẽ khởi tạo một tệp mới. |
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ânKhi 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);
#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_SET | Bắt đầu từ vị trí đầu tệp |
SEEK_END | Bắt đầu từ vị trí cuối tệp |
SEEK_CUR | Bắt đầu từ vị trí hiện tại của con trỏ vào tệp |
#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)
#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ướcDưới đây là một số macro được xác minh trước trong lập trình sẵn C.
Macro | Giá 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 |
#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ác4. 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 địnhMộ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ấtVì 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 gianCá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 độngMọ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 2Giả 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 filesBinary 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.
r | Mở nhằm đọc. |
rb | Mở hiểu theo chế độ binary. |
w | Mở để ghi. |
wb | Mở ghi theo chế độ binary. |
a | Mở nhằm ghi thêm dữ liệu vào cuối file. |
ab | Mở ở 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 ghiKí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:
SEEK_SET | Bắt đầu tự vị trí đầu tiên của file. |
SEEK_END | Bắt đầu tự vị trí sau cùng của file. |
SEEK_CUR | Bắ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.