2013-11-21 38 views
0

我有用於顯示char*字符串的語句。但當我嘗試cout a char*字符串時,屏幕上沒有看到任何內容。下面是我的代碼:無法在我的代碼中輸入char *字符串

char* reverseString(char *inputString) 
{ 
    int i=0, length=0; 
    char *reversedString = (char*)malloc(100); 
    strcpy(reversedString,inputString); 
    while(inputString[i]!='\0') 
    { 
     i+=1; 
     length+=1; 
    } 

    for(int i=0;i<length;i++) 
    { 
     reversedString[i]= inputString[length-i]; 
    } 
    cout<<endl<<"In Function, Reversed String: "<<*reversedString<<endl; 
    return reversedString; 
} 
int main() 
{ 
    char string[100],*reversedString; 
    cout<<"Enter string: "; 
    scanf("%s",string); 
    cout<<"\nString is: "<<string; 
    reversedString = reverseString(string); 
    cout<<endl<<"In Main, Reversed String: "<<*reversedString<<endl; 
    return 0; 
} 
+7

當我看到有人剛剛開始使用'cout'和'malloc',這真的讓我懷疑_where_這些例子嗎?爲什麼要混合'C'和'C++'的這些部分? 'cout'和'scanf()'甚至是一個更大的頭部劃痕。 – Chad

+2

您是否嘗試了而不取消'reversedString'? –

+0

爲什麼使用'scanf'而不是'std :: cin'? –

回答

1

開始您的for循環reverse函數與i = 1。然後再添加一條語句reversedString[i] = '\0'來追加字符串\0

5

這是因爲你扭轉整個字符串包括終止'\0'字符。因此,在反轉字符串中,第一個字符是字符串終止符(最後一個是原始字符串的第一個字符,因此如果跳過「反轉」終止符,則字符串未終止)。