2017-03-01 4 views
0

Ich erstelle eine Swap (mit couts, um es zu testen, bevor Sie es in meinem eigentlichen Programm implementieren) -Funktion mit Zeigern und ich bin mir nicht ganz sicher, warum ich diese Segmentierung Fehler wann bekomme Ich renne es. Irgendwelche Ideen?Getting einen Segmentierungsfehler 11 für Swap-Funktion

#include <iostream> 
#include <stdio.h> 
#include <stdlib.h> 
using namespace std; 

char * initializeWord(int length); 
void swap(char *a, char *b); 
//void scrambleWord(char *word, int size); 

int main() 
{ 
    int length; 
    char *word, *x, *y; 
    cout << endl << "Welcome to Word Scrambler!" << endl << endl; 
    cout << "How many letters will your word have?" << endl << endl; 
    cin >> length; 
    getchar(); 
    cout << endl << "Please input a word that contains " << length << " many characters." << endl << endl; 
    word = initializeWord(length); 
    cout << endl; 
    cout << "The word you entered was: " << word << endl << endl; 
    swap(x,y); 

    delete[] word; 
    return 0; 
} 

char * initializeWord(int length) 
{ 
    //initialization of char array 
    char *cArray = new char[length]; 
    //user's word 
    cin >> cArray; 
    getchar(); 

    return cArray; 
    delete[] cArray; 
} 

void swap(char *a, char *b) 
{ 
    cout << "First values:" << endl << a << endl << b << endl; 
    char *temp = a; 
    a = b; 
    b = temp; 
    cout << "Second values:" << endl << a << endl << b << endl; 
} 
+0

Sie setzen 'x' und' y' niemals auf irgendwas ... – GigaRohan

+3

Schreiben Sie keinen C-Code in C++. Verwenden Sie Referenzen und 'std :: vector'. – Alexander

+1

Sie können nach dem 'return' nicht' löschen'; Sie können nichts tun, nachdem Sie zurückgeben – pinkfloydx33

Antwort

2

cin >> cArray; Diese Zeile legt die Benutzereingabe als die Adresse Ihres Arrays fest.

Sie wollen wahrscheinlich:

char* initializeWord(int length) 
{ 
    char* cArray = new char[length]; 

    for(int i = 0; i < length; ++i) 
    { 
     cin >> cArray[i] 
    } 
    ... 
} 

Oder nur Zeichenfolgen verwenden.

+0

Dies ist, was ich will, dass es für jetzt tut, wenn es Probleme später verursacht, werde ich es ändern. Aber alles, was ich gerade versuche, ist der Test, ob meine Swap-Funktion korrekt funktioniert (was nicht der Fall ist). Ich habe versucht, * x und * y zu chars 'x' und 'y' und dies funktioniert auch nicht ... Kinda stecken – Parker

+0

@Parker Sie wollen mir sagen, dass Sie erwarten, dass Ihr Benutzer eine gültige Adresse eingeben? Ich denke, Sie möchten, dass sie stattdessen ein Wort eingeben. Sie schreiben in die Variable, die die Adresse des Arrays enthält, nicht auf das Array selbst. – JGroven

+0

Hmm, du hast Recht, dass ich das nicht machen will, aber dieser Teil hat funktioniert, als ich ihn ausgeführt habe. Das Ziel ist, das Wort inputed zu nehmen und jedes Zeichen von diesem Wort im Array zu haben. – Parker

Verwandte Themen