Dùng strlen()
Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 15 trên 63.
Bạn đã học cách đọc chuỗi từ đầu vào của người dùng, nhưng giờ bạn cần một cách để xác định độ dài của những chuỗi đó. C cung cấp hàm strlen() từ thư viện <string.h> dành riêng cho mục đích này.
Hàm (function) strlen() đếm số ký tự trong một chuỗi và dừng khi gặp ký tự kết thúc null \0. Điều quan trọng là hàm không tính ký tự kết thúc null vào số lượng, mà chỉ đếm các ký tự hiển thị thực tế.
#include <stdio.h>
#include <string.h>
char word[] = "Hello";
int length = strlen(word);
printf("Length: %d\n", length); // In ra: Length: 5Để dùng strlen(), bạn cần thêm tiêu đề <string.h> ở đầu chương trình. Hàm (function) này nhận một chuỗi làm đối số và trả về một số nguyên biểu thị số ký tự trước ký tự kết thúc null.
Hàm (function) này đặc biệt hữu ích khi bạn cần biết một chuỗi chiếm bao nhiêu chỗ, kiểm tra độ dài đầu vào hoặc thực hiện các thao tác phụ thuộc vào kích thước chuỗi. Đây là một trong những hàm chuỗi được dùng phổ biến nhất trong lập trình C.
Thử thách
DễViết một chương trình C đọc nhiều từ từ đầu vào và phân tích độ dài của chúng bằng hàm strlen(). Chương trình của bạn cần:
- Đọc một số nguyên
nbiểu thị số từ cần xử lý - Với mỗi từ trong số
ntừ:- Khai báo một mảng ký tự có 50 phần tử để lưu từ đó
- Đọc từ bằng
scanf - Dùng
strlen()để tính độ dài của từ - In từ và độ dài của từ theo định dạng đã chỉ định
- Sau khi xử lý tất cả các từ, tính và in tổng số ký tự trong tất cả các từ
- Tìm và in độ dài của từ dài nhất đã gặp
Nhớ thêm tiêu đề <string.h> để sử dụng hàm strlen().
Đầu ra cần hiển thị kết quả theo định dạng sau:
Word: [word] - Length: [length]
Word: [word] - Length: [length]
...
Total characters: [total]
Longest word length: [max_length]Ví dụ, nếu đầu vào là:
3
hello
programming
CĐầu ra sẽ là:
Word: hello - Length: 5
Word: programming - Length: 11
Word: C - Length: 1
Total characters: 17
Longest word length: 11Thử thách này kiểm tra mức độ hiểu biết của bạn về cách dùng strlen() để đo độ dài chuỗi, xử lý nhiều chuỗi bằng vòng lặp và thực hiện các phép tính dựa trên dữ liệu độ dài chuỗi.
Tự làm thử
// TODO: Viết code của bạn tại đây
// Xử lý từng từ bằng vòng lặp (loop)
// Với mỗi từ:
// - Khai báo mảng (array) ký tự (character) gồm 50 phần tử (element)
// - Đọc từ bằng scanf
// - Tính độ dài bằng strlen()
// - In ra từ và độ dài của từ
// - Cập nhật total_characters và max_length
// In ra kết quả cuối cùng
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Nền tảng về con trỏ
Con trỏ là gì?Khai báo con trỏToán tử lấy địa chỉ (&)Toán tử giải tham chiếu (*)Con trỏ NULLÔn tập: kiến thức cơ bản về con trỏ4Dự án: Công cụ xử lý văn bản đơn giản
Tổng quan dự ánĐếm ký tự2Con trỏ và mảng
Tên mảng dưới dạng con trỏPhần tử mảng và con trỏPhép toán con trỏSo sánh con trỏÔn tập: duyệt mảng bằng con trỏ5Con trỏ và hàm
Truyền theo giá trịTruyền con trỏ vào hàmSửa đổi biến qua con trỏVí dụ kinh điển: hoán đổiTruyền mảng vào hàmÔn tập: đối số con trỏ hàm3Mảng ký tự và chuỗi
Chuỗi dưới dạng mảng charKý tự kết thúc nullNhập chuỗi bằng scanfDùng strlen()Dùng strcpy()Dùng strcat()Dùng strcmp()Ôn tập: các hàm xử lý chuỗi cơ bản6Quản lý bộ nhớ
Bộ nhớ ngăn xếp và bộ nhớ heapCấp phát động với malloc()Dùng sizeof() để cấp phátKiểm tra lỗi cấp phátGiải phóng bộ nhớ với free()Cấp phát với calloc()Ôn tập: Mảng động9Dự án: Nhập thông tin liên hệ đơn giản
Định nghĩa struct ContactHàm tạo liên hệTự luyện tập: Trình biên dịch C online