Я прошу пользователя ввести строку. Я хотел бы вывести первую букву каждого слова в верхнем регистре.Символ, не сохраняющий массив
Пример: barack hussein obama
=>BHO
В настоящее время это моя попытка:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(void){
string user_name = GetString();
int word_counter = 0;
int counter = 0;
// Get length of string.
for(int i = 0; i < strlen(user_name); i++){
if(strncmp(&user_name[i], " ", 1) == 0){
word_counter += 1;
}
}
word_counter += 1;
// Declare empty array and size.
char output[word_counter];
// Iterate through array to assign first characters to new array.
for(int i = 0; i < strlen(user_name); i++){
if(i == 0){
output[counter] = toupper(user_name[i]);
counter += 1;
}
else if(strcmp(&user_name[i - 1], " ") == 0){
output[counter] = toupper(user_name[i]);
counter += 1;
}
}
// Output result.
for(int i = 0; i < word_counter; i++){
printf("%c\n", output[i]);
}
printf("\n");
}
Когда выход возвращается, я только получить B
. Кажется, что вывод не сохраняет первые буквы каждого слова. Я объявляю вывод неправильно?
'strncmp (& user_name [i]," ", 1) == 0' более просто записывается как' username [i] == '' '. – Barmar