2011-10-31 7 views
1

私はこれを(C言語で)しばらく取り組んできましたが、それは分かりません。私は文字の配列を含むバッファを持っています。私はqsortを使って配列をソートしましたが、今はすべて順調です。私は今重複を削除する必要があります(または重複なしでリストを印刷するだけです)。 警告があります。文字はN個の文字のグループ(ユーザーが指定したN個)にグループ化されています。だから、他の文字の隣にある文字を単に比較するだけではありません。彼らのグループをお互いに比較しています。memcmpを使って配列のセグメントを比較する(重複を除去する)

たとえば、入力がAADDBBEECCEEであり、ユーザーが指定したNが2の場合、結果はAABBCCDDEE(EEが削除されたもの)になります。

私はmemcmpを使用する必要があると知っていますが、構文については混乱しています。私がしようとしている:バッファが配列である

i=0; 
int result; 
int k; 
while(i<bufferSize-nValue){ 
    result = memcmp(buffer[i], buffer[i+nValue], nValue); 
    if(result==0){ 
     i=i+nValue; 
    } 
    else{ 
     for(k=0; k<nValue; k++){ 
      printf("%c",buffer[i]); 
      i++; 
     } 
    } 
} 

は、nValueがNである、bufferSizeのは、配列内の要素の合計数です。 コードを実行してもセグメント化エラーが発生しています。

皆さん、お世話になりました!

答えて

5

あなたは書きました:

memcmp(buffer[i], buffer[i+nValue], nValue); 

memcmp()は、ポインタを取ります。あなたはおそらく、引数としてbuffer+ibuffer+i+nValueを意味します。それが答えであれば、私はあなたのコンパイラがそれについて警告しなかったことに驚いています。警告を有効にしましたか?

+0

'&buffer [i]'と '&buffer [i + nValue]'も動作します。 –

+0

ITは働いていました。どうもありがとうございます!!いいえ、私のコンパイラ(gcc)はそれについて私に警告しなかった – pauliwago

関連する問題