字符未保存到数组

Character not saving to array

我要求用户输入一个字符串。我想以大写形式输出每个单词的第一个字母。

示例: 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");
}

当输出returns时,我只收到B。输出似乎没有保存每个单词的第一个字母。我是否错误地声明了输出?

strcmp(&user_name[i - 1], " ") 不只是按预期比较 1 个字符(就像原来的 strncmp(&user_name[i], " ", 1) 那样)。

为什么要使用 str[n]cmp(),为什么不直接 if (name[i] == ' ') { ...