【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19119

文字列検索と表示
投稿者---FM(2005/01/11 13:06:08)


sample.c
-------------------------------------------------------------------
int main(int argc, char *argv[]){
FILE *fp;
char keyword[80];
char line_c[256];
char* sp;
int num=0;

if( argc<3 || (fp=fopen(argv[1],"r") ) == NULL){
printf("can not open file");
exit(1);
}
strcpy(keyword,argv[2]);

while(fgets(line_c,256,fp) !=NULL){
num++;
sp = strstr(line_c,keyword);
if(sp!=NULL){
printf("%s",line_c);
}
}

fclose(fp);
return 0;
}
-------------------------------------------------------------------
sample.txt
-------------------------------------------------------------------
1 10
2 20
3 30
4 40
.
.
.
.
22 220
-------------------------------------------------------------------
このプログラムはキーワードを指定して、テキストファイル内を検索し、そのキーワードを含む行を表示するプログラムです。
ですが、このプログラムだと、キーワードを「2」に設定すると、
12、21、22などを含む行まで表示してしまいます。
できれば、一番左のindex番号をキーワードにして、その行を表示するプログラムをつくりたいのですが、どうしたらよいでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列検索と表示 19121 nop 2005/01/11 13:12:26
<子記事> Re:文字列検索と表示 19122 REE 2005/01/11 13:14:12
<子記事> Re:文字列検索と表示 19123 FM 2005/01/11 13:19:21
<子記事> Re:文字列検索と表示 19126 FM 2005/01/11 13:42:58


No.19121

Re:文字列検索と表示
投稿者---nop(2005/01/11 13:12:26)


>できれば、一番左のindex番号をキーワードにして、その行を表示するプログラムをつくりたいのですが、どうしたらよいでしょうか?

一番左のindex番号とやらのみを検索対象とすればよいです。


この投稿にコメントする

削除パスワード

No.19122

Re:文字列検索と表示
投稿者---REE(2005/01/11 13:14:12)


>できれば、一番左のindex番号をキーワードにして、その行を表示するプログラムをつくりたいのですが、どうしたらよいでしょうか?

方法1
一行のデータから一番左のindex番号だけを取り出します。

方法2
strncmpなどで、一行の先頭だけを比較します。


この投稿にコメントする

削除パスワード

No.19123

Re:文字列検索と表示
投稿者---FM(2005/01/11 13:19:21)


わかりました、やってみます!
nopさん、REEさん、アドバイスありがとうございました。



この投稿にコメントする

削除パスワード

No.19126

Re:文字列検索と表示
投稿者---FM(2005/01/11 13:42:58)


すいません。strncmpを使ってやってみたんですが、
比較する文字の大きさを二桁にすると、キーワードを1桁の数字にすると、
スペースが含まれてしまって、検索できないんですが・・・


この投稿にコメントする

削除パスワード

No.19127

Re:文字列検索と表示
投稿者---nop(2005/01/11 14:03:54)


>比較する文字の大きさを二桁にすると、キーワードを1桁の数字にすると、
>スペースが含まれてしまって、検索できないんですが・・・

キーワードの文字数分だけ比較すればよいのでは?


この投稿にコメントする

削除パスワード

No.19128

Re:文字列検索と表示
投稿者---FM(2005/01/11 14:06:37)


>>比較する文字の大きさを二桁にすると、キーワードを1桁の数字にすると、
>>スペースが含まれてしまって、検索できないんですが・・・
>
>キーワードの文字数分だけ比較すればよいのでは?

あ、なるほど。ありがとうございました!


この投稿にコメントする

削除パスワード

No.19129

Re:文字列検索と表示
投稿者---REE(2005/01/11 14:09:37)


>すいません。strncmpを使ってやってみたんですが、
>比較する文字の大きさを二桁にすると、キーワードを1桁の数字にすると、
>スペースが含まれてしまって、検索できないんですが・・・

比較する文字の大きさを固定にせず、キーワードの桁数で比較すればいいでしょう。

但し、その場合はキーワードが2のときに20などにも一致します。
これは、キーワードの後ろに空白を追加して比較すると回避できます。



この投稿にコメントする

削除パスワード

No.19130

Re:文字列検索と表示
投稿者---FM(2005/01/11 15:28:00)


>>すいません。strncmpを使ってやってみたんですが、
>>比較する文字の大きさを二桁にすると、キーワードを1桁の数字にすると、
>>スペースが含まれてしまって、検索できないんですが・・・
>
>比較する文字の大きさを固定にせず、キーワードの桁数で比較すればいいでしょう。
>
>但し、その場合はキーワードが2のときに20などにも一致します。
>これは、キーワードの後ろに空白を追加して比較すると回避できます。


ありがとうございました。まさにそれで詰まってました。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧