Функция gets_s не работает

1212
17 февраля 2019, 00:30
// 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". Как с этим бороться?

Answer 1

Во-первых, в функции 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);
}
READ ALSO
Задача с покупкой продуктов

Задача с покупкой продуктов

Падает задача выдавая Runtime errorПри этом на тестовом примере работает правильно

171
Ошибка Index out of range в QVector

Ошибка Index out of range в QVector

pointsOfGrid заполняются нормально, не мусором, maxRadius - аналогичноОшибка возникает при попытке установить QCPCurveData ума не приложу что делать

232
копирование двумерного массива

копирование двумерного массива

Код нижеОн делит строку на маленькие подстрочки меньшего размера (чанки фиксированной величины, для примера 10), получается двумерный массив,...

299