c ++:strcpy不能使用char数组

时间:2016-04-06 04:02:01

标签: c++ string sorting strcpy names

我正在对一系列名称进行排序,而我的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>

2 个答案:

答案 0 :(得分:4)

char Temp; // size 15?

Tempcharstrcpy需要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';