2014-04-20 136 views
0
#include <iostream> 
#include <string> 
#include <cstring> 
using namespace std; 

string reverseString(char* str, int sizeArray) 
{ 
char* first = &str[0]; 
char* last = &str[sizeArray - 1]; 
while(first < last) 
{ 
    char temp = *first; 
    *first = *last; 
    *last = temp; 
    first++; 
    last--; 
} 
return str; 

} 

int main() 
{ 
int size_of_array; 
cout << "Max size of input string: "; 
cin >> size_of_array; 

char* someArray = new char[size_of_array]; 

cout << "Enter in string: "; 
cin >> someArray; 

while(strlen(someArray)!=size_of_array); 
{ 
    cout << "Length of string doesn't equal size of array" << endl; 
    cout << "Enter in string: "; 
    cin >> someArray; 
} 


cout << reverseString(someArray, size_of_array); 

} 

當我COUT的strlen(的someArray)和size_of_array他們都是相同的號碼,但是當我運行它,我得到了while循環的錯誤,說他們不彼此不相等。爲什麼沒有這兩個變量彼此相等

示例:我將輸入5作爲size_of_array,然後輸入字符串Kevin。它會給我錯誤。

+1

'「Kevin」'是6個字符,而不是5個。 – chris

+4

如果您使用的是C++,則應該使用'std :: string'而不是原始C風格的字符串... –

+1

您在分號while語句結束。 – cactus1

回答

1

在while語句結束之後,您還有一個額外的分號。接下來的代碼塊將無條件運行。

+0

哇...那是因爲我早些時候使用了while while循環,並決定懶惰並複製粘貼while循環。感謝您發現錯誤!它現在有效。 –

0

實際char陣列使用\0空字符到PLACEHOLD的char *字符串的末尾,strlen()不包括在它的長度計數這個空字符。