Я сортирую массив имен, и моя среда 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>
char Temp; // size 15?
Temp
это char
а также strcpy
ожидает char *
(и компилятор даст ошибка компиляции в твоем случае).
Использовать char
вместо массива
char Temp[MaxCharsPerName + 1]; // any desired size but reserve place for '\0'
А затем передать его strcpy
,
Сортировать массив имен можно гораздо проще:
vector<string> names;
// ...
sort(begin(names), end(names), less<string>());
for (const auto& name : names) cout << name << '\n';