2016-04-06 11 views
-1

ich eine Reihe von Namen bin Sortier- und meine IDE gibt mir „keine passende Funktion für Aufruf von‚strcpy‘ Hier sind die Werte, die ich ein:C++. Strcpy nicht mit char-Array arbeitet

char Names [MaxNames] [MaxCharsPerName + 1]; 
const int MaxNames   (20); 
const int MaxCharsPerName (15); 

Hier ist meine Funktion

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); 

muss ich einen Verweis oder etwas verwenden

Oh, und diese sind an der Spitze:

umfassen

using namespace std; 
#include "Constants.h" 
#include "Functions.h" 
#include <string.h> 
#include <stdio.h> 
+0

Wenn Sie C++ verwenden, eher bewegen über mit 'std :: string' für Streicher statt' char [] ',' char [] 'ist der C-Weg, Dinge zu tun. Beziehen Sie sich dann auf die Antwort von @ andreas-dm unten. –

+0

Ok danke !!! –

Antwort

4
char Temp; // size 15? 

Temp ein char und strcpy erwartet ein char * (und Compiler wird eine Kompilierungsfehler in Ihrem Fall geben).

eine char Array verwenden instead-

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

Und es dann zu strcpy passieren.

+0

Oh ja. Nun, ich stelle es so auf und ich bekomme den gleichen Fehler. –

+0

@CalebLawrence Sie erhalten denselben Fehler, nachdem Sie Änderungen vorgenommen haben? – ameyCU

+0

tue ich, ja. Es sieht aus wie die erste Zeile strcpy (Temp, Names [i]); funktioniert, aber die anderen nicht. Vielleicht ist es ein Problem mit den Arrays. –

3

eine Reihe von Namen Sorting könnte viel einfacher gemacht werden:

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