Имеется кода с пастебина, который выводит все слова из строки, разделенные пробелом, и которые не имеют цифр в слове.
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
// строка
char s[50];
char *ptr;
int i,k,w = 0;
puts("Enter a string:" );
gets(s);
ptr=strtok(s," ");
while(ptr)
{
w=strlen(ptr);
for(i=0; i<w; i++)
{
if(ptr[i] >= 'a' && ptr[i] <= 'z')
{
k++;
// значение k = 60+ (61, 61, 62.. etc)
// но почему, если мы его занулили в самом начале программы?
printf("Debug: k = %i\n", k);
}
else
break;
}
// каким образом i учавствует в коде, если мы с ней
// ничего не делали?? если убрать это условие, код не работает
if(i == w )
{
puts(ptr);
printf("\n var i = %i\n", i);
}
ptr=strtok(NULL," ");
}
return 0;
}
Вопрос 1: зачем в этом коде нужна переменная
k, если мы с ней в итоге ничего не делаем? Зачем она инкрементируется? Я понимаю, что она нужна для сравнения в условии и считает количество букв в слове, но в условии используется переменная
i
Вопрос 2 каким образом учавствует в этом коде переменная
i, если в начале мы её занулили и ей ничего не приравнивали? Получается, что переменная
w в условии сравнивается с
нулем? Если принтить эту переменную для того, чтобы узнать её истинное значение, получается, что переменная имеет значение, отличное от нуля (Почему? Мы ведь ей ничего не присваивали)
Результат кода прикреплен на скриншоте. Как это код работает?