Editorial for Định dạng tên
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
void xoa_ktdb(char s[]){
char c[100];
int id = 0;
for(int i = 0; i < strlen(s); i++){
if(isalpha(s[i]) || s[i] == ' '){
c[id] = s[i];
id++;
}
}
c[id] = '\0';
strcpy(s, c);
}
void gom_khoang_trang(char s[]){
char newstring[100];
int id = 0, check = 1;
/*
Biến check dùng để kiểm tra kí tự có phải là chữ đầu
Nếu phải thì là 1 ngược lại là 0
*/
for(int i = 0; i < strlen(s); i++){
/*
Sau khi loại bỏ kí tự đặt biệt thì chúng ta chỉ cần xử
lý các khoảng trắng và viết hoa
3 cái if
+ đầu tiên là kiểm tra nếu là chữ và check = 1 là kí tự đầu tiên
+ Kiểm tra khoảng trắng đó có phải là khoảng trắng đầu tiên không
+ Kiểm tra chữ chữ cái bình thường
+ Khi nó không thuộc cả 3 trường hợp trên thì suy ra
kí tự của chúng ta đang là khoảng trắng -> chữ xuất hiện tiếp theo là chữ đầu của 1 từ nên check = 1
*/
if(isalpha(s[i]) && check == 1){
newstring[id] = toupper(s[i]);
id++;
check = 0;
}else if(id > 0 && s[i] == ' ' && isalpha(newstring[id - 1])){
newstring[id] = ' ';
id++;
check = 1;
}else if(isalpha(s[i])) {
newstring[id] = s[i];
id++;
}else check = 1;
}
newstring[id] = '\0';
strcpy(s, newstring);
}
void solve()
{
char s[100];
fgets(s, sizeof(s), stdin);
xoa_ktdb(s);
gom_khoang_trang(s);
puts(s);
// printf("%c", s[strlen(s) - 1]);
}
Comments