2011年4月18日月曜日

テキストファイルを区切り文字ごとに分割し、禁句が含まれる文章を除外

テキストファイルを区切り文字ごとに分割し、禁句が含まれる文章を除外する例題です。

本記事末にある文章を区切り文字毎に分割し文字配列として記憶した後、その配列ごとに禁句が含まれるかチェックし、表示する、しないを選択しています。

処理の流れとしては、
1. テキストファイルの内容を文字列として読み込み
2. 文字列から区切りの数を数える
3. 区切り分の2次元文字配列を準備
4. 区切り文字ごとに文字列を配列に記憶
5. それぞれの文字配列ごとにタブーワードが含まれるかチェックし表示
という形になります。


実行結果
% ./list_xxx
0: 多倍長演算を利用した四則演算
Posted: 2011-04-18 01:40:39 UTC+09:00
多倍長演算を利用した四則演算の例題です。 20 桁ほどの計算を行っていますが、関数電卓等で計算できる範囲になりますので、結果を確かめてみてください。 #include #define ORDER 20 #define N ((ORDER-1)/4+1) void addLDV(short* a, short* b, short* c); void subLDV(short* a, short* b, short* c); void mulLDV(short* a, short b, short* c); void divLDV(short* a, short b, short* c); void printLDV(short* c); int main(int argc, int argv) { short a[N+2] = {


1: ファイル中から文字列を検索し、文字列を追加/置換
Posted: 2011-04-18 01:33:05 UTC+09:00
ファイル中から文字列を検索し、文字列を追加/置換する例題です。 1行毎に処理を行っていますが、複数マッチする場合にも対応しています。 #include #include #include void chop_crlf(char* buf); char* FindAndReplaceString(char* buf, char* find, char* repstr); char* FindAndInsertString(char* buf, char* find, char* insert); int main(int argc, char* argv[]) { FILE *fp; const char* ifile = "reidai.txt"; const char* schstr = "pen"; const char* insstr


2: ファイル中から文字列を検索し、文字列を追加
Posted: 2011-04-18 01:35:01 UTC+09:00
ファイル中から文字列を検索し、文字列を追加する例題です。 1行毎に処理を行っていますが、複数マッチする場合にも対応しています。 #include #include #include void chop_crlf(char* buf); char* FindAndInsertString(char* buf, char* find, char* insert); int main(int argc, char* argv[]) { FILE *fp; char *p; const char* ifile = "reidai.txt"; const char* schstr = "pen"; const char* insstr = "desu"; char buf[512]; printf("search


3: 指定した文字列の後ろに文字列を追加
Posted: 2011-04-17 23:34:31 UTC+09:00
指定した文字列の後ろに文字列を追加し、新しい文字列として取得する例題です。 #include #include #include #define STRING "Hello World!!" char* FindAndInsertString(char* buf, char* find, char* insert) { char* newstring; char* sp = strstr(buf,find); if ( sp == NULL ) return buf; sp += strlen(find); newstring = (char*)calloc(sizeof(char),(strlen(buf)+strlen(insert)+1)); strncpy(newstring,buf,strlen(buf)-


5: ビットマップファイルの読み込み/編集/保存
Posted: 2011-04-17 02:27:06 UTC+09:00
ビットマップファイルフォーマット(8bit:256パレットカラー/16bit:RGB565/24bit:RGB888/32bit:RGBA8888)の画像の読取/編集/保存例です。 ビットマップはそれぞれの色毎に表示、編集することが可能となっています。例題では、引数に -r や -g を与えると、色反転、ガンマ補正を行うことができます。また、-o/-b により編集を行った画像を指定のビット数で保存します(16bit:RGB565/24bit:RGB888/32bit:RGBA8888 BMP)。 ビットマップは1ライン当たりのデータ数が4Byte(long)の倍数に限られているため##データの読取には注意が必要です。1ラインが4で割り切れない場合、足りないバイト数(足りない部分はパディングビット=0が詰め込まれている)を加えて計算する必要が##ります。具体的には、

%

document.txt
●多倍長演算を利用した四則演算
Posted: 2011-04-18 01:40:39 UTC+09:00
多倍長演算を利用した四則演算の例題です。 20 桁ほどの計算を行っていますが、関数電卓等で計算できる範囲になりますので、結果を確かめてみてください。 #include #define ORDER 20 #define N ((ORDER-1)/4+1) void addLDV(short* a, short* b, short* c); void subLDV(short* a, short* b, short* c); void mulLDV(short* a, short b, short* c); void divLDV(short* a, short b, short* c); void printLDV(short* c); int main(int argc, int argv) { short a[N+2] = {

●ファイル中から文字列を検索し、文字列を追加/置換
Posted: 2011-04-18 01:33:05 UTC+09:00
ファイル中から文字列を検索し、文字列を追加/置換する例題です。 1行毎に処理を行っていますが、複数マッチする場合にも対応しています。 #include #include #include void chop_crlf(char* buf); char* FindAndReplaceString(char* buf, char* find, char* repstr); char* FindAndInsertString(char* buf, char* find, char* insert); int main(int argc, char* argv[]) { FILE *fp; const char* ifile = "reidai.txt"; const char* schstr = "pen"; const char* insstr

●ファイル中から文字列を検索し、文字列を追加
Posted: 2011-04-18 01:35:01 UTC+09:00
ファイル中から文字列を検索し、文字列を追加する例題です。 1行毎に処理を行っていますが、複数マッチする場合にも対応しています。 #include #include #include void chop_crlf(char* buf); char* FindAndInsertString(char* buf, char* find, char* insert); int main(int argc, char* argv[]) { FILE *fp; char *p; const char* ifile = "reidai.txt"; const char* schstr = "pen"; const char* insstr = "desu"; char buf[512]; printf("search

●指定した文字列の後ろに文字列を追加
Posted: 2011-04-17 23:34:31 UTC+09:00
指定した文字列の後ろに文字列を追加し、新しい文字列として取得する例題です。 #include #include #include #define STRING "Hello World!!" char* FindAndInsertString(char* buf, char* find, char* insert) { char* newstring; char* sp = strstr(buf,find); if ( sp == NULL ) return buf; sp += strlen(find); newstring = (char*)calloc(sizeof(char),(strlen(buf)+strlen(insert)+1)); strncpy(newstring,buf,strlen(buf)-

●PNM(Portable anymap ファイルフォーマット)の読み取り/編集/保存、BMPへの変換
Posted: 2011-04-17 02:23:39 UTC+09:00
PNM 画像の読取/編集/保存例です。 PNM(portable anymap ファイルフォーマット)は、pbm(portable bitmap)、pgm(portable graymap)、ppm(portable pixmap)の各画像フォーマットを総称した名前です。 PNM のファイル形式はテキスト/バイナリ形式を選択することにより、メモ帳等でも簡単に編集することが可能です。 その形式には以下の6種類があります。 P1 (PBM) 2値画像 テキスト形式 P2 (PGM) 濃淡画像 テキスト形式 P3 (PPM) カラー画像 テキスト形式 P4 (PBM) 2値画像 バイナリ形式 P5 (PGM) 濃淡画像 バイナリ形式 P6 (PPM) カラー画像 バイナリ形式 P4〜P6 の形式では画像のヘッダ部分を除いた画像データ部を

●ビットマップファイルの読み込み/編集/保存
Posted: 2011-04-17 02:27:06 UTC+09:00
ビットマップファイルフォーマット(8bit:256パレットカラー/16bit:RGB565/24bit:RGB888/32bit:RGBA8888)の画像の読取/編集/保存例です。 ビットマップはそれぞれの色毎に表示、編集することが可能となっています。例題では、引数に -r や -g を与えると、色反転、ガンマ補正を行うことができます。また、-o/-b により編集を行った画像を指定のビット数で保存します(16bit:RGB565/24bit:RGB888/32bit:RGBA8888 BMP)。 ビットマップは1ライン当たりのデータ数が4Byte(long)の倍数に限られているため、データの読取には注意が必要です。1ラインが4で割り切れない場合、足りないバイト数(足りない部分はパディングビット=0が詰め込まれている)を加えて計算する必要があります。具体的には、

0 件のコメント:

コメントを投稿