- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "locale.h"
int gl(char ch);
int main()
{ char a;
setlocale(LC_ALL, "rus");
printf("Введите букву\n");
scanf_s("%c", &a);
if (gl(a)==1)
printf("Гласная", a);
else
printf("Не гласная", a);
printf("%c", gl(a));
system("pause");
}
int gl(char ch)
{ char m[18]={'У', 'Е', 'А', 'О', 'Э',
'Я', 'И', 'Ю', 'Ё',
'у', 'е', 'а', 'о', 'э', 'я', 'и', 'ю', 'ё'};
int N=0;
setlocale(LC_ALL, "rus");
for (int i=0; i<18; i++)
if (m[i]==ch) N++;
if (N==1)
return 1;
else return 0;
}
Вопрос блондинки, на одном из прогерских форумов. Для информативности добавлю её вопрос:
Написать функцию, которая возвращает произведение элементов одномерного массива.
Ошибок нет. Всё время возвращает значение "не гласная" при вводе любых и согласных, и гласных букв. В чём ошибка? Вроде правильно функция значение возвращает...?
Дожились... детей с детства к виндоблядству приучают...
С чем я согласен - то, что эти функции deprecated, и лучше их не юзать.
С чем я не согласен - то, что их надо заменить на подобные костыли от мс.
Поясняю.
Судя по тому количеству сырцов с которыми я имел дело, и по этому коду в частности, множество погроммистов считают, что использование замены от мс сделает их код "безопастным".
Ко подсказывает мне функции не кидают исключения, потому что это сишка. привет Тарасу.
Они возвращают некий код ошибки. Или вызывают некий обработчик.
Так вот 90% никогда не задают ни обработчик, ни проверяют код возврата функции.
То есть от лишнего ifa, который проверяет валидность данных или этот самый код возврата никуда не деться.
В итоге мы подменяем переполнение буфера тихим пропуском комманды и херингом данных.
И называем это "безопастным" аналогом.
triple shame on me
По дефолту этот обработчик как раз делает аборт, поэтому все-таки по-тихому баг не пройдет. Но это отличный вектор для DoS атаки на "безопастный" код.
где тут c++?
привет, cp-866
Ну как же, #include "stdafx.h".
А вот тут с++, т.к. msvc не умеет в С99.