Đọc xâu từ file và xử lý xâu ký tự lập trình C/C++ - Đọc ghi file - Con trỏ
Cụ thể đề bài như sau:
Viết chương trình thực hiện các công việc sau(Yêu cầu sử dụng con trỏ)
1. Đọc từ file input.txt vào 1 xâu ký tự
2. Viết hàm đếm số từ xuất hiện trong xâu rồi ghi ra tệp văn bản output.txt số từ có trong xâu.
3. Đổi các chữ cái đầu tiên trong mỗi từ thành chữ in hoa rồi in ra cuối tệp văn bản output.txt.
Code mẫu:
Để chạy chương trước tiên bạn cần tạo một file input.txt chứa 1 xâu và đặt cùng thư mục với mã nguồn.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include<ctype.h> #define MAX 100 //hàm đọc xâu từ file void docfile(char *str){ FILE *f = fopen("input1.txt", "rt"); while(!feof(f)) { fgets(str,100,f); //Lệnh đọc xâu } } //Hàm đếm từ trong xâu int demTu(char *str){ int dem=0; if(str[0]!=' ') dem++; int str1[100]; int len = strlen(str); for(int i=1;i<len-1;i++) { //Nếu có dấu cách và đằng sau là 1 ký tự thì sẽ cộng thêm 1 từ if(str[i]==' ' && str[i+1]!=' ') dem++; } return dem; } //Hàm viết hoa chữ cái đầu tiên void vietHoaChuCaiDauTien(char *str){ //hàm toupper có tác dụng chuyển ký tự thường thành ký tự hoa nếu ký tự đó là thường if(str[0]!=' ') str[0] = toupper(str[0]);//Viết hoa chữ cái đầu tiên int len = strlen(str);//Lấy độ dài xâu for(int i=1;i<len-1;i++) { //Nếu có dấu cách và đằng sau là 1 ký tự thì ta đổi ký tự đó thành hoa if(str[i]==' ' && str[i+1]!=' ') str[i+1] = toupper(str[i+1]); } } //Xuất ra màn hình void xuat(char *str){ printf("xau ky doc tu file la:\n\n"); puts(str); printf("\n\nSo tu trong xau la: %d \n=>Da duoc ghi vao file output.txt\n", demTu(str)); printf("\n\nXau sau khi viet hoa cac chu cai dau tien:\n\n"); vietHoaChuCaiDauTien(str); puts(str); printf("\n =>Xau viet hoa chu cai dau tien da ghi vao cuoi file output1.txt\n"); } //Ghi vào file void ghiFile(char *str){ FILE *f = fopen("output1.txt", "wt"); fprintf(f, "%d\n\n\n", demTu(str)); vietHoaChuCaiDauTien(str); fputs(str,f); fclose(f); } int main() { char *str = (char*)malloc(sizeof(char) * MAX); docfile(str); xuat(str); ghiFile(str); return 0; }