Посчитать число букв в слове - C (СИ)
Формулировка задачи:
Пытаюсь посчитать число букв в слове. Компилируется, но выводит неправильный ответ.
Выводит на экран следующее:
#include<stdio.h>
int main(){
char *word[]= {"yes"};
char *letter;
int i = 0;
letter = word[0];
while(letter!=" "){
printf("%c\n",*letter);
letter++;
i++;
}
printf("%d\n",i);
return 0;
}→ ./letters y e s % c 8
Вроде абсолютно легкая программа, но все же...???Решение задачи: «Посчитать число букв в слове»
textual
Листинг программы
#include <stdio.h>
int main() {
char* word[] = {"yes"};
char* letter;
int i = 0;
letter = word[0];
while (*letter != '\0' && *letter != ' ') {
printf("%c\n", *letter);
letter++;
i++;
}
printf("%d\n", i);
return 0;
}
Объяснение кода листинга программы
В этом коде используется язык C. Он объявлен в директиве #include <stdio.h>, которая подключает к программе функции файла стандартного ввода/вывода, нужные для отправки сообщений в консоль.
Список переменных в этом коде:
word[]— массив указателей на строки. В данном случае он содержит всего один указатель на строкуyes.letter— указатель на отдельную букву в строке.i— счётчик количества букв. В первой строке кода инициализируется переменнаяword[]как массив указателей на строки. В качестве строки используетсяyes. Затем объявляется переменнаяletterи инициализируется первым указателем из массиваword[](то есть,word[0]). Далее, в циклеwhileпроисходит следующее:- Переменная
letterувеличивается на единицу. - В консоль выводится текущая буква.
- Переменная
iувеличивается на единицу. Цикл выполняется до тех пор, пока не будет достигнута конечная буква строки (то есть, пока не будет встречен нулевой символ) или пробел. После завершения цикла выводится количество букв в строке. В конце программы возвращается ноль, что означает успешный конец работы программы.