2016-04-06 33 views
-1

我整理名称的数组和我的IDE是给我“为号召‘的strcpy’不匹配函数的工作 下面是我设置的值:C++: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

如果您使用的是C++,而移动到使用'的std :: string'的字符串,而不是'的char []','字符[]'是C做事的方式。然后参考下面的@ andreas-dm的答案。 –

+0

好的,谢谢! –

回答

4
char Temp; // size 15? 

Tempcharstrcpy期望一个char *(和编译器会给你的情况下,编译错误)。

使用char阵列instead-

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

然后将它传递给strcpy

+0

噢。那么,我设置它,我得到同样的错误。 –

+0

@CalebLawrence进行更改后会出现同样的错误吗? – ameyCU

+0

我愿意。它看起来像第一行strcpy(Temp,Names [i]);作品,但其他人没有。也许这是数组的问题。 –

3

分类名称的数组可以做容易得多:

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