// Study65.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cctype>
using namespace std;
void UP(char str[])
{
for (int i = 0; i < strlen(str); i++)
{
toupper(str[i]);
}
cout << "Строка в верхнем регистре: " << endl;
cout << str << endl;
}
void DOWN(char str[])
{
for (int i = 0; i < strlen(str); i++)
{
tolower(str[i]);
}
cout << "Строка в нижнем регистре: " << endl;
cout << str << endl;
}
void INPUT(char str[])
{
char str[256];
cout << "Введите строку: ";
gets_s(str);
}
int main()
{
setlocale(LC_CTYPE, "rus");
return 0;
}
Перемещение функции gets_s из тела функции main в тело функции INPUT приводит к ошибке. "Отсутствуют экземпляры перегруженная функция 'gets_s' соответствующие списку аргументов типы аргументов char". Как с этим бороться?
Во-первых, в функции INPUT переопределение переменной (str), что уже даст ошибку компиляции. Во-вторых, одна из перегрузок gets_s принимает массив символов и автоматически выводит размер, но аргументы функции такие как type name[] являются не массивами, а указателем на type (в вашем случает char *). Поэтому перегрузка не работает и нужно явно указывать размер буфера. Плюс вместо gets_s(), лучше использовать cin.getline();
void INPUT(char str[], size_t n)
{
cout << "Введите строку: ";
//gets_s(str, n);
cin.getline(str, n);
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости