Xin chào, và chào mừng trở lại.
Tôi muốn tiếp tục cuộc thảo luận của chúng ta trên một số hàm trong
thư viện chuẩn c.
Đây là rất nhiều chức năng chúng tôi đã trải qua trong lớp rồi, nhưng
tôi muốn nhắc bạn về.
Vì vậy, có rất nhiều các chức năng khác nhau từ thư viện tiêu chuẩn
c mà chúng tôi đã có được giải quyết trong suốt khóa học với tất cả
các ví dụ của chúng tôi và tất cả những thứ mà chúng tôi đã học được.
Chúng tôi đã nói rất nhiều về các hàm chuỗi.
Và một số trong số chúng rất dễ sử dụng và một số chúng tôi sẽ sử dụng rất nhiều,
vì vậy bạn nên làm quen với những điều này.
Để sử dụng bất kỳ chức năng nào trong số này, bạn cần bao gồm
chuỗi tệp tiêu đề. h, mọi thứ được định nghĩa trong chuỗi. h.
Chúng tôi đã nói về con mèo str.
Str mèo nối hai chuỗi, hai tham số cần, hai
con trỏ ký tự.
Và nó sẽ trả về một ký tự con trỏ được nối với con trỏ khác.
Vì vậy, đặt một ký tự rỗng cuối chuỗi cuối cùng,
hàm trả về s1.
Str char này tìm kiếm một chuỗi có chứa một ký tự.
Điều này sẽ trả về một nhân vật ngôi sao là tốt.
Đó là một cách tốt để tìm kiếm.
Chúng tôi đã nói về điều này khá một chút với con mèo chuỗi.
Str so sánh đang diễn ra để so sánh hai chuỗi.
Đây là cách tiêu chuẩn mà bạn làm.
Nó có hai con trỏ và nó trả về một số nguyên.
Chúng tôi đã có một số ví dụ về điều này về cơ bản nếu bạn trả
về 0 thì hai chuỗi bằng nhau.
Nếu chúng tôi trả về lớn hơn hoặc ít hơn hơn, nếu
bạn chuyển lớn hơn 0, điều đó có nghĩa là s1 thường là lớn hơn trong kích thước theo thứ tự bảng chữ cái.
Vì vậy, nếu bạn chuyển vào một chuỗi chứa a và sau đó chuỗi thứ
hai là b, nó sẽ trả về lớn hơn 0 bởi vì hoặc nó sẽ nhỏ hơn 0 vì
a nhỏ hơn b.
Nếu bạn đậu ở b là người đầu tiên tham số và c là tham số thứ
hai một số loại chuỗi bắt đầu bằng b hoặc c, nó sẽ
trả về lớn hơn 0.
Vì vậy, bạn phải hiểu các giá trị trả về đó.
Đó là những gì quan trọng so sánh str.
Sao chép str.
Đây là cách bạn có thể chỉ định một chuỗi sang chuỗi khác.
Hãy nhớ rằng, chuỗi, con trỏ và mảng ký tự, bạn không
thể chỉ định chuỗi trực tiếp bằng cách sử dụng toán tử gán.
Đối với số nguyên và số thực, bạn có thể chỉ cần sử dụng các toán tử bằng.
Không thể làm điều đó với chuỗi.
Vì vậy, bạn phải sử dụng bản sao str khi bạn muốn gán một chuỗi cho một con trỏ, con
trỏ ký tự hoặc mảng ký tự.
Bạn có thể khởi tạo một ký tự mảng chuỗi ký tự hằng số bên
trong dấu ngoặc kép.
Nhưng sau đó, sau khi khởi tạo nếu bạn
muốn thay đổi nó, bạn sẽ phải sử dụng str copy.
Chiều dài str.
Một chức năng quan trọng khác để lấy độ dài của một chuỗi.
Điều này trả về kích thước t là số nguyên đại diện cho độ dài.
Tất cả các hàm chuỗi này lấy con trỏ hoặc mảng ký
tự làm tham số.
Vì vậy, chúng ta cần hiểu làm thế nào mà hoạt động tốt.
Hàm chuỗi khác strncat.
Ghi nhớ tất cả các chức năng thay vào đó, thêm phần cuối sẽ an toàn
hơn một chút vì bạn không bị tràn bộ đệm.
Vì vậy, trong strncat, tham số thứ ba được thêm vào và điều này sẽ cho biết sao chép
hoặc nối rất nhiều tham số.
Thông thường, tham số thứ ba là sẽ là kích thước của tham số
đầu tiên vì bạn không muốn để sao chép bất cứ thứ gì lớn hơn thế.
Các chức năng này nên được sử
dụng hơn các hàm chuỗi khác vì chúng an toàn khi tràn bộ đệm.
Strn so sánh.
Một lần nữa, bạn sẽ so sánh một số số ký tự cho s1 và s2.
Strn copy, đây là tham số thứ ba kết thúc có thể là chiều dài str
của hoặc kích thước của s1.
Bởi vì bạn sẽ sao chép s2 và s1, nhưng bạn không muốn sao chép
nhiều byte hơn s1 có thể giữ hoặc lưu trữ.
Biểu đồ str.
Đây là nơi bạn có thể tìm kiếm chuỗi cho lần xuất hiện cuối cùng
của một ký tự.
Vì vậy, bạn nhận thấy điều này trông rất quen thuộc hoặc tương tự với str char, có
thêm một r ở đây.
Vì vậy, thay vì trả lại đầu tiên lần xuất hiện, điều này sẽ trả
về lần xuất hiện cuối cùng, nhưng bạn đã sử dụng cùng một cách với cái kia.
Str str.
Điều này sẽ tìm kiếm một chuỗi.
Vì vậy, đây là một chức năng tìm kiếm trong đó về cơ bản bạn đang
cố gắng tìm một chuỗi con bên trong một chuỗi.
Một lần nữa, lấy hai con trỏ ký tự.
Strtok.
Đây là chức năng quan trọng trong đó bạn có thể giúp bạn phân tích cú pháp dữ liệu.
Strtok lấy dấu phân cách là tham số thứ hai và nó
sẽ tìm ký tự phân tách đó bất kỳ đâu bên trong chuỗi.
Vì vậy, bạn thường sử dụng một cái gì đó như một dấu cách hoặc một nguồn cấp dữ liệu dòng cho s2.
Nó sẽ phá vỡ chuỗi thành một số mã thông báo khác nhau.
Một lần nữa, hãy sử dụng khi bạn muốn để phân tích cú pháp dữ liệu thường.
Mỗi khi bạn phải gọi strtok nhiều lần cho đến khi bạn
với null nếu bạn vẫn tìm kiếm hành động tiếp theo mà bạn muốn tìm trong
một chuỗi đã cho.
Chúng tôi cũng có một số quan trọng các hàm ký tự.
Tất cả các chức năng của nhân vật được định nghĩa trong ctype. h.
Nhân vật có chức năng mà chúng ta được sử dụng là các hàm kiểm tra xem
một ký tự có phải là một chữ và số hoặc nó trống hay nó
là một điều khiển ký tự một chữ số, có một số
chức năng khác nhau ở đó.
Vì vậy, hãy nhớ rằng ctype. bảo bối chúng tôi để kiểm tra xem chúng thực
sự là những ký tự khác nhau nào.
Chúng tôi cũng có một số chức năng chuyển đổi trong ctype. h, chủ yếu là hai trên của chúng tôi.
Hai thấp hơn có một ký tự và nó sẽ
cho chữ thường tương đương với c.
Hãy nhớ rằng chúng tôi đã có một thử thách ở đó chúng tôi đã chuyển đổi chữ thường thành chữ hoa.
Trong thử thách đó, chúng tôi thực sự đã thêm vào bảng ASCII của chúng tôi, nhưng
chúng tôi có thể gọi hai ký tự trên.
Chúng tôi có thể đã thiết lập hai xung quanh ký tự miễn
là chúng tôi đã bao gồm ctype. h và điều đó sẽ được chuyển đổi một chữ thường thành chữ hoa.
Chúng tôi đã có rất nhiều IO chức năng, đầu vào và đầu ra.
Chúng tôi tập trung vào việc đọc và viết tệp, nhưng chúng
tôi cũng đọc đầu vào từ bàn phím và chúng tôi xuất dữ liệu vào bảng điều khiển hoặc màn hình.
Vì vậy, để sử dụng IO phổ biến nhất , đó là tất cả
trong tiêu chuẩn. tệp tiêu đề h.
Tệp này có các khai báo cho các hàm IO khác nhau
cũng như các định nghĩa cho hằng số, như cuối tệp, tiêu chuẩn rỗng trong đầu ra tiêu
chuẩn và lỗi tiêu chuẩn.
Đó là tất cả các giá trị không đổi.
Ngoài ra còn có một hằng số cho tệp cấu trúc tệp.
Fclose là một chức năng mà chúng tôi được sử dụng để đóng luồng của chúng tôi.
Nó đóng tệp được xác định bởi con trỏ tệp.
Và nó trả về 0 nếu nó đóng một thành công, nếu không thì eof.
Feof, đó là một chức năng mà chúng tôi đã không sử dụng rõ ràng nhưng điều đó sẽ kiểm tra xem bạn có đang
ở cuối hay không của tệp thay vì so sánh với một hằng số, bạn có thể
thực hiện một thao tác giả mạo.
Fflush.
Đây là một chức năng sẽ tuôn ra tất cả dữ liệu của bộ đệm bên trong.
Đôi khi bạn cần phải làm điều này khi bạn muốn bắt đầu lại, nhưng về cơ bản bạn
chỉ đang thoát khỏi của bất kỳ thứ gì bên trong bộ đệm.
Chúng tôi cũng có fgetc.
Đây là đọc riêng lẻ ký tự, lấy một con trỏ tệp.
Chúng tôi có vị trí fget.
Đây là một số chức năng vị trí.
Nó có được vị trí tệp hiện tại cho tệp được
liên kết với con trỏ tệp và lưu trữ nó trong một loại vị trí f, được xác định
trong io tiêu chuẩn. h nữa.
Chúng tôi đã có đồ dùng của chúng tôi.
Điều này đã được đọc trong chuỗi.
Rất hay, nó đọc các ký tự từ tệp được chỉ định,
nhưng số ký tự.
Fopen sẽ mở một tệp trong một chế độ cụ thể: đọc, ghi hoặc
nối thêm bằng con trỏ tệp.
Fprintf sẽ ghi dữ liệu và được định dạng đầu ra, và nó tương tự như hàm printf, nó sẽ sử
dụng các đối số do con trỏ chỉ định và sau đó sử dụng
dữ liệu được định dạng để ghi.
Vì vậy, bạn có thể viết số nguyên, nhân đôi bằng cách sử dụng các chỉ định định dạng và sau đó
là các biến mà bạn muốn viết.
Chúng tôi cũng đã có fputc, sẽ ghi các ký tự vào một tệp.
Fputs sẽ ghi một chuỗi vào một tệp.
Nó cần một bộ đệm và một tệp trỏ đến nội dung bạn muốn
ghi và tệp bạn muốn ghi vào.
Fscanf sẽ đọc dữ liệu từ một tệp.
Nó sẽ lấy đầu vào và nó sẽ sử dụng cùng một loại định
dạng như scanf sẽ sử dụng định dạng chỉ định và biến.
Nhưng điều này thật tuyệt bạn muốn đọc trong dữ liệu được phân tách bằng dấu cách.
Bạn có thể sử dụng fscanf và bạn có thể chỉ định kiểu để đọc nó trực
tiếp thành ints, double, các kiểu dữ liệu cụ thể.
Fseek sẽ chuyển vị trí về nơi bạn đang trỏ đến trong một tệp.
Vì vậy, bạn không cần phải bắt đầu từ đầu hoặc cuối tệp.
Bạn có thể đến trực tiếp giữa tệp.
Khi bạn nhìn thấy vị trí đó, lần đọc hoặc ghi tiếp theo sẽ sử dụng vị
trí đó để ghi vào hoặc đọc tới.
Vị trí Fset tương tự như fseek.
Nó đặt vị trí tệp hiện tại
trong tệp được liên kết với con trỏ tệp đến giá trị được trỏ tới bởi vị trí f, fpos.
Chúng tôi cũng đã có ftell.
Ftell sẽ trở lại như thế nào nhiều byte ngay từ
đầu bạn dựa trên con trỏ tệp.
Vì vậy, nó là ngoại vi tương đối trong byte từ vị trí hiện tại, không
phải lúc nào cũng bắt đầu, nhưng vị trí hiện tại.
Chúng tôi sử dụng ftell trong một trong những thách thức để đọc ngược lại một tệp.
Printf.
Chúng tôi sử dụng cái này có lẽ nhiều hơn hơn bất kỳ chức năng nào khác.
Điều này đã được hiển thị xuất ra màn hình.
Nó sử dụng các chỉ định định dạng và một số biến đối
số được phân tách bằng dấu phẩy.
Printf rất hữu ích để gỡ lỗi và hiển thị đầu ra, mà bạn thực
hiện khá nhiều bên trong chương trình c.
Loại bỏ.
Loại bỏ là một chức năng mà bạn có thể xóa một tập tin.
Nó có một tên tệp.
Con trỏ tệp phải được đóng.
Bạn không thể mở nó.
Đổi tên sẽ đổi tên một tệp thành tệp khác, cũng phải đóng
tệp không thể mở được.
Scanf sẽ đọc đầu vào từ thường mặc định từ bàn phím.
Bạn có thể thay đổi nó để đọc đầu vào từ các luồng khác nếu bạn muốn.
Chúng tôi cũng có các chức năng chuyển đổi chúng tôi đã thảo luận trong suốt khóa học.
Hầu hết các chức năng này nằm trong lib tiêu chuẩn. tệp h, tệp tiêu đề.
Chúng tôi đã có chức năng atof.
Đây là chuyển đổi một chuỗi thành một float, và bạn chuyển nó trong một chuỗi.
Chúng tôi có các chức năng atoi.
Điều này chuyển đổi một chuỗi thành một số nguyên.
Atol đang chuyển đổi một chuỗi thành một dài, và bạn chuyển vào
chuỗi và nó trả về mà bạn đang chuyển đổi sang.
Những điều này rất hữu ích.
Bạn thường sử dụng chúng để chuyển đổi chuỗi thành một số loại kiểu số.
Atoll chuyển đổi nó thành một int dài.
Nhưng hãy chắc chắn rằng bạn nhìn vào tệp tiêu đề lib tiêu chuẩn cho
nhiều chức năng chuyển đổi hơn.
Chúng tôi có các chức năng bộ nhớ của chúng tôi, các chức năng cấp phát bộ nhớ động.
Những điều này thực sự quan trọng.
Phân bổ bộ nhớ động rất quan trọng bởi vì nó hiệu quả hơn nhiều.
Bạn chỉ sử dụng bộ nhớ mà bạn cần.
Bạn không tạo dữ liệu tĩnh.
Nó cho phép chương trình của bạn linh hoạt hơn nhiều.
Tất cả các chức năng này là bao gồm bên trong lib tiêu chuẩn. h.
Chúng tôi đã nói về calloc.
Calloc là một chức năng tuyệt vời trong đó bạn có thể phân bổ một kích thước nhất
định và kích thước đó sẽ được nhân với n.
Vì vậy, bạn có thể chỉ định kiểu dữ liệu và nó sẽ nhân lên.
Điều tốt đẹp về calloc, nó khởi tạo dữ liệu của bạn.
Vì vậy, nó thực sự được ưa thích hơn malloc.
Chúng tôi có chức năng miễn phí của chúng tôi sẽ xóa bộ nhớ.
Tất cả những ký ức này đang diễn ra được tạo trên heap.
Vì vậy, chúng tôi sẽ xung quanh rất nhiều lâu hơn, nhưng bạn là một lập trình
viên để quản lý bộ nhớ này.
Bạn luôn muốn giải phóng bộ nhớ sau khi bạn sử dụng xong
vì bộ nhớ khan hiếm tài nguyên trong các chương trình khác và chúng tôi muốn sử
dụng bộ nhớ đó.
Vì vậy, luôn luôn gọi miễn phí sau khi bạn làm một calloc hoặc malloc.
Malloc đơn giản hơn phiên bản tạo bộ nhớ.
Nó không thực sự khởi tạo bất kỳ dữ liệu nào.
Nó chỉ lấy kích thước làm tham số.
Nó trả về một ngôi sao trống.
Vì vậy, bạn luôn cần truyền nó giống như với calloc cho bất kỳ loại bộ
nhớ nào bạn đang trỏ tới.
Nếu bạn đang trỏ tới int hoặc float, bạn phải cast cái đó.
Chúng tôi cũng có phân bổ lại.
Realloc thật tuyệt vời vì bạn có thể thực sự thêm vào bộ nhớ hiện có.
Và vì vậy theo cách này của bạn bộ nhớ có thể động.
Bạn có thể làm cho nó lớn hơn nếu bạn muốn lưu trữ nhiều dữ liệu hơn.
Realloc nhận một con trỏ có kích thước.
Nó sẽ giữ tất cả dữ liệu bộ nhớ trước đó đã được trỏ tới.
Nó sẽ cấp phát bộ nhớ mới nhưng nó sẽ giữ nó, vì vậy bạn có thể
thêm vào một số bộ nhớ hiện có.
Rất, rất hữu ích.
Trong việc tạo bộ nhớ động là sẽ thực sự hữu ích trong tất cả các chương trình của bạn, đặc
biệt là vì con trỏ rất, rất quan trọng là chúng
hiệu quả hơn nhiều.
Nhưng hãy chắc chắn rằng bạn hiểu tất cả các tệp tiêu đề này mà chúng tôi sử
dụng trong suốt khóa học.
Đây là những cái chính mà rất, rất quan trọng.
Chúng ta sẽ nói về một số cái mới trong vài bài giảng tiếp theo mà chúng tôi
không được thảo luận nhiều như tôi thích.
Nhưng đây là một số những cái quan trọng nữa.
Cảm ơn bạn.