строка — c ++: strcpy не работает с массивом char

Я сортирую массив имен, и моя среда IDE не дает мне «никакой подходящей функции для вызова ‘strcpy’.
Вот значения, которые я установил:

char Names [MaxNames] [MaxCharsPerName + 1];
const int MaxNames          (20);
const int MaxCharsPerName   (15);

Вот моя функция

void SortNames (const char Names[][MaxCharsPerName + 1], int NumNames)
{
int     i;
int     NumElements;
bool    Sorted;
char    Temp; // size 15?

NumElements = NumNames;
do  {
Sorted = true;
NumElements--;
for (i = 0; i < NumNames; i++)
{

if(Names[i-1] > Names[i]){
strcpy(Temp, Names[i]);
strcpy(Names[i], Names[i+1]);
strcpy(Names[i+1], Temp);

}
}

} while (!Sorted);

Должен ли я использовать ссылку или что-то?

Ох, и это наверху:

 using namespace std;
#include "Constants.h"#include "Functions.h"#include <string.h>
#include <stdio.h>

-1

Решение

char Temp; // size 15?

Temp это char а также strcpy ожидает char *(и компилятор даст ошибка компиляции в твоем случае).

Использовать char вместо массива

char Temp[MaxCharsPerName + 1]; // any desired size but reserve place for '\0'

А затем передать его strcpy,

4

Другие решения

Сортировать массив имен можно гораздо проще:

vector<string> names;
// ...
sort(begin(names), end(names), less<string>());
for (const auto& name : names) cout << name << '\n';
3

По вопросам рекламы [email protected]