2017-03-01 48 views
0

我創建交換(使用couts來測試它,然後在我的實際程序中實現它)函數與指針,我不完全確定爲什麼我得到此分段錯誤時我運行它。有任何想法嗎?獲取交換功能的分段錯誤11

#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

您從未將'x'和'y'設置爲任何東西... – GigaRohan

+3

不要在C++中編寫C代碼。使用引用和'std :: vector'。 – Alexander

+1

「return」後不能'刪除';你返回後不能做任何事 – pinkfloydx33

回答

2

cin >> cArray; 此行將用戶輸入設置爲陣列的地址。

你可能想:

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

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

或者只是使用字符串。

+0

這就是我現在要做的事,如果以後出現問題,我會改變它。但是,我現在想要做的就是測試我的交換功能是否正常工作(它沒有)。我試過將* x和* y設置爲字符'x'和'y',這也不起作用...有點卡住 – Parker

+0

@Parker你的意思是告訴我你期望你的用戶輸入一個有效的地址?相反,我想你希望他們輸入一個單詞。您正在寫入保存數組地址的變量,而不是數組本身。 – JGroven

+0

嗯,你是對的,我不想那麼做,但是那個部分在我運行的時候正在工作。我們的目標是接受輸入的單詞,並讓數組中的每個字符都來自該單詞。 – Parker