我正在对一系列名称进行排序,而我的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>
答案 0 :(得分:4)
char Temp; // size 15?
Temp
是char
,strcpy
需要char *
(并且编译器会在您的情况下提供编译错误)。
使用char
数组代替 -
char Temp[MaxCharsPerName + 1]; // any desired size but reserve place for '\0'
然后将其传递给strcpy
。
答案 1 :(得分:3)
可以更轻松地对名称数组进行排序:
vector<string> names;
// ...
sort(begin(names), end(names), less<string>());
for (const auto& name : names) cout << name << '\n';