Подсчет символов в массиве символов?

В настоящее время я пытаюсь сортировать абзац на основе первого символа каждого слова. Я инициализирую два алфавитных (верхний и нижний) массивы символов, чтобы сравнить с первым символом слова с индексом массива.

Мой план проблемы;

  • Инициализируйте два массива с помощью алфавита, чтобы узнать, какой алфавит идет до него.
  • Имейте функцию, которая фактически сравнивает первый символ с двумя массивами.
  • верните слова отсортированные :)

Моя проблема заключается в том, что я пытаюсь проверить, имеет ли два массива 26 символов, чтобы убедиться, что каждый алфавит подсчитан, но он печатает 1, и я понятия не имею, почему.

Код:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    char _alphabetUpperCase[100] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R,","S","T","U","V","W","X","Y","Z"};
    char _alpabetLowerCase[100] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};

    int i = 0;
    int n = 0;
    while(_alpabetLowerCase[i] != NULL)
    {
        n = n+1;
        i++;
    }

    printf("%d\n",n);
    return 0;
}
0
источник поделиться
3 ответа

Этот "A" не такой же, как "A". Вместо этого вам следует назначить символ "A". Замените все "" строки соответствующими символами. например

char _alpabetLowerCase[100] = {'a','b','c' ... };
+3
источник

Вам нужны символы или строки? "a" - это строка, а 'a' - символ. Из вашего определения массива кажется, что вам нужны символы. Так измените свой код на это как

char _alpabetLowerCase[100] = {"a", ...

Вместо этого используйте

char _alpabetLowerCase[100] = {'a', 'b', ....
+1
источник

Попробуй это:

#include <stdio.h>

int main(int argc, const char * argv[]) {
    char _alphabetUpperCase[27] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R,','S','T','U','V','W','X','Y','Z', '\0'};
    char _alphabetLowerCase[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', '\0'};

    int i = 0;
    int n = 0;
    while(_alphabetLowerCase[i] != '\0')
    {
        n = n+1;
        i++;
    }

    printf("%d\n",n);
    return 0;
}

Объяснение: 'a' - это символ, но "a" - строка. Также я добавил 27-й символ, чтобы убедиться, что этот цикл остановится после 'z' (поэтому я изменил размер массива на 27 (100 тоже было правильно, но неправильно писать произвольные числа, когда вы можете поставить правильное значение)),

+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос