Để có được một bản tóm tắt nhanh về một tệp như tổng số ký tự, từ và số lượng, Linux đã có một công cụ, wc. Ở đây chúng ta sẽ xem cách viết chương trình C để lấy thông tin tương tự
Chiến lược đếm ký tự, từ, dòng trong tệp
- Nhập tên tệp và mở tệp đó ở chế độ chỉ đọc. Không tiếp tục nếu tệp không mở được
- Duyệt từng ký tự tệp cho đến khi bạn nhận được ký tự EOF. Mỗi tệp kết thúc bằng ký tự EOF
- Tăng số ký tự
- Nếu ký tự không phải là ký tự khoảng trắng, hãy đặt cờ in_word thành 1
- Nếu ký tự là khoảng trắng và cờ in_word là 1, hãy tăng số lượng từ và đặt cờ in_word thành 0
- Nếu ký tự là ‘\n’ hoặc ‘\0’, hãy tăng số lượng dòng
Chương trình
/*test.c*/
#include
#define MAX_LEN 1024
int main[] {
/*Read the file.*/
char ch;
int char_count = 0, word_count = 0, line_count = 0;
int in_word = 0;
char file_name[MAX_LEN];
FILE *fp;
printf["Enter a file name: "];
scanf["%s", file_name];
fp = fopen[file_name, "r"];
if[fp == NULL] {
printf["Could not open the file %s\n", file_name];
return 1;
}
while [[ch = fgetc[fp]] != EOF] {
char_count++;
if[ch == ' ' || ch == '\t' || ch == '\0' || ch == '\n'] {
if [in_word] {
in_word = 0;
word_count++;
}
if[ch = '\0' || ch == '\n'] line_count++;
} else {
in_word = 1;
}
}
printf["In the file %s:\n", file_name];
printf["Number of characters: %d.\n", char_count];
printf["Number of words: %d.\n", word_count];
printf["Number of lines: %d.\n", line_count];
return 0;
}
Đây là nội dung của file văn bản mẫu [test. txt]
Thông tin liên lạc điện tử sẽ không bao giờ
có thể thay thế cho khuôn mặt của
một người hết lòng động viên
người khác
Và đây là kết quả của chương trình
Ở đây số ký tự bao gồm tất cả các ký tự kể cả khoảng trắng. Word là các ký tự không phải khoảng trắng liên tiếp. Và dòng kết thúc bằng ký tự ‘\0’ hoặc ‘\n’
Tác giả. Srikanta
Tôi viết ở đây để giúp người đọc tìm hiểu và hiểu về lập trình máy tính, thuật toán, mạng, khái niệm hệ điều hành, v.v. một cách đơn giản. Tôi có 20 năm kinh nghiệm làm việc trong lĩnh vực mạng máy tính và tự động hóa công nghiệp. Xem tất cả các bài viết bằng Srikanta
Viết chương trình C đếm số ký tự, số từ và số dòng trong một tệp văn bản. Logic đếm ký tự, từ và dòng trong một tệp trong chương trình C. Cách đếm tổng ký tự, từ và dòng trong một tệp văn bản trong lập trình C
Một tệp là một vị trí lưu trữ vật lý trên đĩa và một thư mục là một đường dẫn logic được sử dụng để sắp xếp các tệp. Một tập tin tồn tại trong một thư mục
Ba thao tác mà chúng ta có thể thực hiện trên tệp như sau -
- Mở tệp tin
- Xử lý tệp [đọc, viết, sửa đổi]
- Lưu và đóng tệp
Thí dụ
Hãy xem xét một ví dụ được đưa ra dưới đây -
- Mở tệp ở chế độ ghi
- Nhập câu lệnh vào tệp
Tệp đầu vào như sau -
Hi welcome to my world This is C programming tutorial From tutorials Point
Đầu ra như sau -
Number of characters = 72
Total words = 13
Total lines = 3
Chương trình
Sau đây là chương trình C để đếm các ký tự, dòng và số từ trong một tệp –
Bản thử trực tiếp
#include #include int main[]{ FILE * file; char path[100]; char ch; int characters, words, lines; file=fopen["counting.txt","w"]; printf["enter the text.press cntrl Z:
"]; while[[ch = getchar[]]!=EOF]{ putc[ch,file]; } fclose[file]; printf["Enter source file path: "]; scanf["%s", path]; file = fopen[path, "r"]; if [file == NULL]{ printf["
Unable to open file.
"]; exit[EXIT_FAILURE]; } characters = words = lines = 0; while [[ch = fgetc[file]] != EOF]{ characters++; if [ch == '
' || ch == '\0'] lines++; if [ch == ' ' || ch == '\t' || ch == '
' || ch == '\0'] words++; } if [characters > 0]{ words++; lines++; } printf["
"]; printf["Total characters = %d
", characters]; printf["Total words = %d
", words]; printf["Total lines = %d
", lines]; fclose[file]; return 0; }
đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
enter the text.press cntrl Z: Hi welcome to Tutorials Point C programming Articles Best tutorial In the world Try to have look on it All The Best ^Z Enter source file path: counting.txt Total characters = 116 Total words = 23 Total lines = 6