• ベストアンサー

特定の文字列が出てくるまでの文字数を数えるには

最近頭に空冷ファンを取り付けたくなるほどオーバーヒート状態になってます。 ご回答よろしくお願いします。 *str_A={"ABCDEFG"}; *str_B={"D"}; このような二つの文字列があったとします。 そして、str_Aの中にstr_Bが含まれていたら、 そのstr_Bまでの文字数を数える方法はありませんでしょうか? 上記の例でいうと、答えは「3」ということになります。 予想ではgetcを使うのかな~という気はするのですが、 もしとても簡単にその答えを出してくれるような関数があったら なんか悔しいので、こちらに投稿してみました。 ポイントは確実にお付けいたしますので、 ご回答よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

strcspn が適当かと思いますが。 一度自分で関数を書いてみるのも勉強には良いかと。

参考URL:
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/vccore/_crt_string_manipulatio
Wingard
質問者

お礼

ありがとうございました。 strcspnでなんとかできるようになりました^^

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

strstr()でできます。 ちょっとした計算が必要ですが・・・ 自力で作るのなら、whileの2重ループで簡単にできますけど・・・

Wingard
質問者

補足

さっそくのご回答ありがとうございます。 strstrを使った場合、ポインタのアドレスが返ってきますよね? その場合、どうやってその読み込んだ文字列の頭からそのポインタまでの 文字数を数えればいいのでしょうか・・・? その方法がわかりません。 すみません、ポインタについていまいち理解できていないもので・・・。 あと、もしどうしても無理でないかぎり、 できるだけ2重ループなどは使わないようにプログラムを作りたいので、 2重ループ以外の方法でお願いします。 わがままいっぱいで申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • < と > に囲まれた文字列の削除

    初めて質問します。 例えば、$str = "abcdefg<hijklmn>" というような文字列を $str = "abcdefg" というような文字列に変更するにはどのような 正規表現を書けばよいでしょうか? お知恵をおかしください。お願いします。

    • ベストアンサー
    • Perl
  • 入力した文字列の文字コードを16進数で出力

    入力した文字列の文字コードを16進数で出力するプログラムを作っているのですが 下のように記述してもどうしても最後にaが表示されてしまいます。 打開策、または何故aが表示されるのかを教えてください。 #include <stdio.h> main() { int str; while(1){ str=getc(stdin); if(str==EOF) break; printf("%x ",str); } return 0; }

  • 特定の文字列が含まれているかどうか確認したい

    文字列 $a に、文字列 $b が含まれているかどう確認したいと思っています。 $a = "abcdefg"; $b = "cde" なら「真」としたいです。 (要するに、シェルの case や fgrep に似たことをしたい) ただし、文字列には記号が含まれている可能性もあるため、 正規表現も使いづらい(?)です。 具体的にやりたいことは、$a にはコンマ区切りのメールアドレスのリストが入っていて、 $b のメールアドレスが $a のリストに含まれていない場合のみ、$b を $a似追加すると いうことがやりたいです。 何か良い方法はないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 16進数の文字列

    16進数の文字列をそれと同値な整数値へ変換する関数をかけという問題なのですが、 この場合文字列を読み込んで、例えば読み込んだ値がABだとした場合、 A*16の1乗+B*16の0乗 を計算する関数を作ればよいのだと思うんですが、 それぞれの値をべき乗する関数も必要になってくると考えています。 そこで問題なのですが、べき乗の関数を作ったとして、それぞれの値(こんかいはAとB)にそれぞれのべき乗した値をかけてやるには、どういった方法があるのでしょうか? 回答よろしくお願いします。

  • VLOOKUP 関数で表示された文字列が検索できま

    環境:Excel 2007, Windows 7 Excel で2つのファイルを用意します。ファイルA はデータベースの構造です。ファイルB は、ファイルA を VLOOKUP 関数で検索して、その中の文字列を表示します。 まず、ファイルB だけを開いた状態にします。ファイルB には、ファイルA に記述されている文字列が VLOOKUP 関数により表示されています。文字列「ABCDEFG」は、ファイルB には直接 記述されていません。しかし、ファイルA に記述されているため、ファイルB でも表示されています。つまり、VLOOKUP 関数のセルに表示されています。ここで、ファイルB 内で「ABCDEFG」を検索します。すると検索文字列としてヒットしません。ファイルA で「ABCDEFG」を検索するとヒットします。つまり、VLOOKUP 関数で表示されている文字列は検索対象から除外されています。 質問です。VLOOKUP 関数で表示された文字列を検索する方法を教えていただけないでしょうか。私なりに調査しましたが、理解できませんでした。おそらく ネット検索が へたなせいです。よろしくお願いいたします。

  • 文字列のコピー

    C言語で、文字列をコピーする関数で、処理が止まってしまいます。 以下が実行したプログラムです。 #include<stdio.h> #include<string.h> void copy(char *str2 ,char *str3){ strcpy(str2,str3); } void input(char* str){ scanf("%s",str); } int main (void){ char *a; char *b="TEST"; printf("%s\n",b); input(a); copy(b,a); printf("%s",b); return(0);} copy(b,a);で処理が止まってしまいます。入力した文字列を表示できるように、御指摘お願いします。

  • エクセル 特定の文字列を抽出・挿入

    例えば A列にあるセルの中から特定の文字列を検索・抽出して、その特定の文字列だけB列に挿入していく関数はありますか? またはA列にあるセルの中から特定の文字列に挟まれた文字列を検索・抽出してその特定の文字列だけB列に挿入していく関数はありますか? マクロを組まないと難しいのでしょうか?

  • 文字列をうまく返してくれない

    数値を文字列として呼び出し元に渡し、呼び出し元で文字列を数値に変えようとしたのですがatoi関数(strtolを使うと最初の文字のみ帰ってくるため2桁以上の数値に対応できない)を使うとうまく行きませんでした。 どのように変更したらatoiが使える文字列になりますか? #include <stdio.h> #include <stdlib.h> static struct{   char *name; }kuda[5]={   { "もも" , "りんご" , "みかん" , "バナナ" , "パイナップル" } } char *re_3( void ){   int a = 3;   char str_h[100];   char *str;   sprintf_s( str_h , 100 , "%d" , a );   *str = *str_h; //原因はおそらくここ   return str; } void main( void ){   printf( "%s" , kuda[ atoi( re_3() ) ].name ); }

  • < と > で囲まれた文字の取り出し

    例えば、$str = "abcdefg<hijklmn>" というような文字列を $str = "hijklmn" というような文字列に変更するにはどのような 正規表現を書けばよいでしょうか? お知恵をおかしください。お願いします。

    • ベストアンサー
    • Perl
  • Elispで文字列がある文字列を含むかどうか判定

    Emacs lispで、ある文字列Aと文字列BがあってBがAを含むときにt, そうでないときにnilを返す関数はどのように書けますか?