Попытка преобразовать элементы строки в числа на основе положения символа в алфавите - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь взять строку char theString[256] = "BreakfastLunchDinner"; и преобразовать каждый символ в число, основываясь на его позиции в алфавите, т.е. B = 2, f = 6, l = 12 и т. Д.

Вот мой код:

void main()
{
    char theString[256] = "BreakfastLunchDinner";
}

void firstLast(char theString[], char *first, char *last)
{
    int i = 0;
    int num[256];

    while(theString != '\0')
    {
            if(theString[i] >= 'A' && theString[i] <= 'Z')
            {
            num[i] = theString[i] - 'A';
            }
            else if(theString[i] >= 'a' && theString[i] <= 'z')
            {
            num[i] = theString[i] - 'a';
            }
            i++;
    }
}

Я включил объявление в основную функцию, чтобы попытаться быть максимально подробным, указатели предназначены для дальнейшего использования, и в настоящее время я сосредоточен нааспект преобразования объяснен выше.Когда я пытаюсь запустить функцию firstLast в отдельной программе, я получаю ядро ​​ошибки сегментации, сбрасываемое из компилятора.Спасибо за любую помощь, спасибо.

1 Ответ

5 голосов
/ 01 апреля 2019

Поскольку theString никогда не меняется, цикл никогда не прекратится, и theString[i], вероятно, отошел куда-то, куда не должен идти, что приведет к segfault.

Ваш тест должен быть theString[i] != '\0'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...