2012-02-29 15 views
1

ユーザーから文字列を受け取り、それが回文かどうかを調べる小さなプログラムで作業します。 ( "Never odd or even"のように後ろに同じように綴られたフレーズ)私はすでにスペースとアルファベット以外の文字を文字列から削除して文字列のコピーを作成する関数を構築しています。 (これら3つの関数のすべてが完全にテストされていますが問題はありません)今は、両方の文字列を比較して文字列の前後が同じかどうかを調べる関数を作成しています。bool関数は配列を適切に比較しません

関数は、主文字列を順方向にループし、逆方向にコピーして各要素を比較することによって、パリンドロームかどうかを判断する必要があります。しかし、私は間違った答えを得続けています。私は間違って何をしていますか?

_Bool isPalindrome(char str[], char copy[]) 
{ 
    int i = 0; 
    int count = 0, j = 0; 

    // loop through the main string to find the number of elements 
    while(str[j] != '\0') 
    { 
    count++; 
    j++; 
    } 

    //loop through the main string until the null character. 
    while(str[i] != '\0') 
    { 
    // to loop through the copy backwards, 
    // use the size of the first and subtract i 
    size = count - i; 
    if(str[i] != copy[size]) 
     return FALSE; 
    i++; 
    } 

    return TRUE; 
} 
+0

は、デバッガを試してみてください?また、最初のループは 'strlen'に相当します。 – cnicutar

+0

ペンと紙と1文字長い2つの入力文字列でコードを実行します。何が起こるか見る。 – Mat

答えて

0

それは次のようになります。

size = count - i - 1; 
+0

ねえ、それは働いた、ありがとう! – Ryan

関連する問題