2016-04-05 4 views
0

Моя задача - подсчитать количество символов в строке C. Вход предоставляется тестовым драйвером, к которому у меня нет доступа, но моя функция должна получить доступ к данным и определить, сколько символов варьируется от az и AZ, но моя программа продолжает сбой, и я не уверен, что я делать неправильно.Поиск количества символов в строке C

int countLetters(char * const line) 
{ 
    char index = *line; 
    int count; 

    while(!index) 
    { 
     if (index >= 'a' && index <= 'z') 
      count++; 

     if (index >= 'A' && index <= 'Z') 
      count++; 
    } 
    return count; 

} 

ответ

0

Попробуйте

int countLetters(char * const line) 
{ 
    int index = 0; 
    int count = 0; 

    while(line[index]) 
    { 
     if (line[index] >= 'a' && line[index] <= 'z') 
      count++; 

     if (line[index] >= 'A' && line[index] <= 'Z') 
      count++; 

     index++; 
    } 
    return count; 
} 

Вот что вы сделали неправильно
Первая: Присвоение индекса обугленного = * линии; сделать свой индекс первого символа в строке, которая является неправильным, так как индекс предположим, чтобы представлять позицию, а не персонаж
Второе:, которого не предусматривает никакого механизма для увеличения индекса в другой в цикле строки
Третий : Вы вратаря инициализировать счетчик переменной

Примечание: line[index] такая же, как *(line + index)
ваш line указатель, который указывает на первый символ в строке
Так line + index указатель, который указывает на указательном-энный символа в строке
префиксом указатель с * Вы хотите сказать, что я хочу знать содержание, что этот указатель указывает на

+0

> Попробуйте инициализировать count = 0, прежде чем вы увеличиваете его Пробовал это, и разница была вместо тысяч ударов. Я получил 0. Я не уверен, что проблема исходит из программы, пропускающей символ NULL, или если параметры в моих операциях if неверны. В большинстве случаев мое возвращаемое значение находится в тысячах, когда должно быть ~ 50 – RyeMan

+0

Вам нужно как-то увеличить индекс каждый цикл – rocketspacer

+0

ОК, так что отлично, он работает, но по какой-то причине он отключается каждый раз. Я изменил 'code'while (строка (index ++) + 1])' code', который исправил его, но я не совсем понимаю, почему это происходит. – RyeMan

Смежные вопросы