да, Вы правы.
Упустил из виду что первый символ может быть сразу в диапазоне значений
спасет ли ситуацию, если я сразу инициализирую z нулем? Не спасает, не печатает первое слово целиком.
Код
if ((str[i] >= 97) && (str[i] <= 122) || (str[i] >= 65) && (str[i] <= 90))
мне нужен диапазон латинских букв.
так корректно && писать? Вообще, думал, что надо все же одну &, т.к. это обязательное условие, что диапазон от 97 до 122.
зато если инициализировать z = -1;
то тогда все нормально, первое слово печатает. если что- дальше значение переинициализируется и программа нормально отработает.
Код
void main (void)
{
setlocale(LC_ALL, "Russian");
int z1 =-1;
char str[] = "прh,алf,б,авпле,gkпрб,alfer,онLфу,qwert.";
for (int i = 0; i < sizeof(str); i++)
{
if (str[i] == ',') {
z1 = i; // запомнили где запятая (начало слова)
}
if ((str[i] >= 97) && (str[i] <= 122) || (str[i] >= 65) && (str[i] <= 90))
{
for (int f = 0; f < 6; f++)
{
if ( ((str[(z1 + 1 + f)]) == ',') || ((str[(z1 + 1 + f)]) == '.') ) // дошли до второй запятой или точки
{
i = z1 + f;
printf("\n");
break;
}
char c = str[(z1 + 1 + f)]; // печатает символы по одному, пока не встретит запятую
printf("%c", c);
}
}
}
system("pause>nul");
}
давайте тогда сразу уже по критике. Что еще глаз режет? Данный код полностью рабочий.
Задача- даны слова через запятую. После последнего слова- точка. слова до 5 букв. Вывести только те слова, где есть латинские буквы.