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;
}