Mình đoán là thầy của bạn cũng là thầy của mình. Vậy mình xin có ý kiến nhé:
- Thầy muốn ta ôn lại hàm Rtrim(char *str) (cắt khoảng trống thừa bên phải chuỗi) và hàm Ltrim(char *str) (cắt khoảng trống thừa bên trái chuỗi) (2 hàm này đã có trong giáo trình học tại lớp), từ đó phát triển lên thành hàm Mtrim(char *str) (xóa khoảng trống thừa giữa các từ, nghĩa là giữa các từ chỉ có 1 khoảng trắng.
- Sau khi đã chuẫn hóa xong chuỗi đó thì việc viết hoa đầu dòng trở nên quá dễ dàng, đầu tiên ta cho thằng str[0] thành ký tự hoa, sau đó dùng vòng lặp xét xem thằng nào không-phải-là-ký-tự-khoảng-trắng và đứng trước nó là ký-tự-khoảng-trắng, thì ta viết hoa thằng đó lên. Mình DEMO một đoạn nhé:
Code:
#include <ctype.h>
.....
str[0]= toupper(str[0])
for(int i=1; i < strlen(str); i++)
if( str[i] != ' ' && str[i-1] == ' ')
str[i] = toupper(str[i]);
Hàm toupper dùng để chuyển một ký tự từ a đến z thành ký tự hoa, nếu dùng hàm này cho ký tự khác thì sẽ ko có tác dụng.

Nguyên bản được gửi bởi
kidkid
lấy chứ cái đầu tiên xem thử nó đã là chứ hoa chưa ? Nếu chưa thì chuyển sang chữ hoa bằng cách cộng thêm mã ASCII vào ? Kid nhớ là 32 thì phải ?
Nếu có nhã hứng làm theo kiểu của sư huynh kidkid thì nhớ xét xem ký tự đó đã viết hoa hay chưa, và có thuộc từ a đến z hay không, rồi sau đó giảm đi 32 đơn vị. Xem DEMO sau:
Code:
if( str[i]>= 'a' && str[i]<= 'z')
str[i] = str[i] - 32;
Vì sao phải lấy str[i] trừ đi 32 ??? Bởi vì trong bảng mã ASCII (bạn cứ tạm hiểu là bảng chữ cái trong máy tính) thì ký tự chữ thường đứng trước ký tự chữ hoa 32 đơn vị. Ví dụ chữ a đứng ở vị trí thứ 97 thì chữ A đứng ở vị trí thứ 65 và 97-65=32. Tương tự với các ký tự khác.
Nếu đi theo hướng chuẩn hóa chuỗi (xóa khoảng trắng thừa) rồi sau đó viết hoa ký tự đầu từ. Như thế sẽ ôn được rất nhiều hàm liên quan đến chuỗi.
Còn nếu không thì bạn có thể theo phương pháp sau cũng của sư huynh kidkid

Nguyên bản được gửi bởi
kidkid
1> Phương pháp thì như thế này, đơn giản là U trích chuỗi nguồn ra chuỗi con thứ nhất là "le" (Trích thế nào thì có bài hướng dẫn rồi nhé ),
Hàm trích chuỗi mà thầy dạy là strtok và đã cho ví dụ cụ thể, bạn có thể dựa vào đó mà phát triển thêm.
Chúc bạn ôn thi tốt, làm bài được điểm cao.