2016-04-06 34 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'; 
相關問題