• 締切済み

バッファとテキストファイル比較方法

よろしくお願いいたします。 C言語勉強中のものです。 質問内容は下記です。 英単語ソートプログラムの制作中です。 仕様: テキストファイルから文読み込み アルバベット降順ソート 1ページを32として、indexのようなものを生成する。 英単語登録済みのバッファとテキストファイルの比較を行い テキストファイルの英単語に該当するなら、出力に渡さないというプログラムを書きたいのですが テキストファイルとバッファの比較の仕方がわからず困っています。 テキストファイルは下記の様な単純な形式です。 例)block.txt a an the 私が今書いてるソースの登録部だけですが提示させて頂きます。 int regist(char *wordp,int npage ) { wlist_t *p; wlist_t *treep; plist_t *plp; int cmp; /* 文字列比較 */ if( wtop == (wlist_t *)NULL ) { p = alloc_wlist( wordp, npage ); if( !p ) { return( -1 ); } wtop = p; return( 0 ); }else{ treep = wtop; while( 1 ) { cmp = strcmp( wordp, treep->wordp ); if( compare < 0) { if( treep->leftp != NULL ) { treep = treep->leftp; }else { p = alloc_wlist( wordp, npage ); if( !p ) { return( -1 ); } treep->leftp = p; p->up = treep; return( 0 ); } }else if( cmp > 0) { /* wordp is greater than regist word */ if( treep->rightp != NULL ) { treep = treep->rightp; }else { p = alloc_wlist( wordp, npage ); if( !p ) { return( -1 ); } treep->rightp = p; p->up = treep; return( 0 ); } }else{ if( treep->lastp->pnum == npage ) { }else { plp = alloc_plist( npage ); if( !plp ) { return( -1 ); } treep->lastp->nextp = plp; treep->lastp = plp; } free( wordp ); return( 0 ); } } return(0); } } おかしい所が多々あると思いますが、とりあえず完成を目指したいので 質問部分のコードの改変、サンプル提示などありましたらよろしくお願いいたします。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

構造体の内容が不明だったり、動作が不明な関数があったり…とかありますが……。 まあ、気になったところを。 >if( compare < 0) { compareとはなにものです? まぁ、直前でstrcmp()の結果を受けているcmpのコトかと思われますが……。 >free( wordp ); このルート以外ではfree()されませんが、問題ない…んでしょうか? alloc_wlist()内でfree()されているんですかね?

関連するQ&A

専門家に質問してみよう