• ベストアンサー

文字列から特定の文字を取り出したいです。

文字列から特定の文字を取り出したいのですが、 char i="spacetestspace"; このように代入した場合 "space"の部分を無視して"test"だけを取り出す関数、又はやり方があれば教えてください。 よろしくお願いします。

  • BPG
  • お礼率60% (82/135)

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

  • ベストアンサー
  • galoon
  • ベストアンサー率28% (38/133)
回答No.2

簡単なサンプルです。 #include <stdio.h> #include <string.h> void main(void) { char* test = "test"; char* aaa = "spacetestspace"; char* bbb = NULL; char ccc[5]; bbb = strstr(aaa, test); strncpy(ccc, bbb, strlen(test)); printf("ccc = %s \n", ccc); } 肝心なのは、string.h の include と strstr(), strncpy() を利用することです。環境によって同関数が用意されていないかもしれませんが最近の物なら大丈夫でしょう。 試してみてください。

BPG
質問者

お礼

非常に参考になりました。 ありがとうございます。 助かりました。

その他の回答 (1)

  • rentahero
  • ベストアンサー率53% (182/342)
回答No.1

無視したい文字列("space")を指定したいのか取り出したい文字列("test")を指定したいのかで回答はまったく変わります。 補足してください。

BPG
質問者

補足

testを指定する方法を探しています。

関連するQ&A

  • 文字列の扱い方

    初歩的な質問ですみません… str文字列からcという文字を見つけたら添字を返すという関数を作ったのですが、 iにこの関数を代入して、if文の制御式にiを使って比較するまでは正常なのですが、 真文にiを使うと何故か偽文(という言い方でいいのでしょうか…この場合("そんな値はありません。"というところです)が実行されてしまいます。 よろしければご教授お願い致します。 #include <stdio.h> int str_char(const char str[],int c) { int len = strlen(str); int i; for (i = 0;i < len;i++) { if (str[i] == c) return i; } return -1; } int main() { char str[64] = "Fucking Brutal Death Metal"; int ch,i; printf("どの文字を調べますか?"); scanf("%c",&ch); i = str_char(str,ch); if (i >= 0) printf("その文字は%d番目にあります。",str_char(str,ch) + 1); //何故かiだと動かない else printf("そんな値はありません。"); return 0; }

  • 数字を文字列に

    int i = 10; char *ch; とするとiを文字列としてchに代入し結果が ch[0] = 1 ch[1] = 0 となるようにするにはどう組めば良いのでしょうか? よろしくお願いいたします。

  • 文字列と整数型について

    はじめまして。 どうしても困っているのでヒントでも良いのでおねがいします。 関数内(func1)で確保した文字列変数のポインタを 別の関数(func2)にポインタ渡しします。 func2内で整数型で計算した結果を引数で示された文字列変数に 代入するというようなことをしたいと思ってます。 ここで、intは4byteとします。 メモリ長だけで見ると、bit[4] = tmp です。 void func1(){ char bit[4]; func2(bit); return; } void func2(char* p){ int tmp = 0x10101100; p = tmp; <---- ??? return; } そこでどのようにすれば、 代入することができるのか分かりません。 以下のような結果になるように代入したいと思っています。 bit[0] = 0x10; bit[1] = 0x10; bit[2] = 0x11; bit[3] = 0x00; 小さな文字列型に整数型をどのように渡せばよいのかが 一番疑問に思っているところです。 整数型に文字列型を代入する場合には 文字列のバイト指定とシフト演算で実現できています。 ヒントでもよいのでお願いします。

  • 文字列をint型に変換したいのですが

    文字列をint型に変換して、計算に使用したいのですが うまくいきません。 char moji[0] = '1' moji[1] = '2' moji[2] = '3' この文字列をひとつずつint型の変数に代入したいのですが atoi関数を使用した場合、文字列全ての値が変換されてしまいます。 どうしたらいいのでしょうか? お答えいただけるとありがたいです。

  • C言語の文字列について

    C言語で文字列のヌルについて、理解があいまいな点があり、教えて欲しいのですが、以下のようにsprintfで書式し代入した際に最後は0(ヌル文字)をセットしてくれるのでしょうか?4バイト目の文字が何か知りたいです。 char temp[100];時では0で初期化されていることは保障されていませんが、大抵は0で埋まっていますが、sprintfの仕様が知りたいです。 char temp[100]; sprintf(temp, "test");とした時に 01234バイト目 test?????????????.... 話は変わりますが、以下のようにするとエラーになりましたが、 特定の位置の値をセットする方法はどのようなものがあるのでしょうか? temp[10] = (temp[10] == '0') ? (char)'1' : (char)'0';

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • エクセルで特定の範囲の文字列を抜き出したいのですが関数がわかりません。

    エクセルで特定の範囲の文字列を抜き出したいのですが関数がわかりません。 抽出の条件は「セルの中の【 】でくくられた部分」(【】も含む)です。 各セル内の文字列はすべてこの【】から始まる文章で構成されているのですが、 【】内の文字数はそれぞれ違うという状態です。 文字数が固定の場合の関数は思いつくのですが、異なる場合がよくわかりません。 よろしくお願いします。

  • 文字列を格納する配列を、動的なメモリ確保で処理したい

    文字数が一定でない文字列の一覧を、配列に格納したいと思っています。 "AAA" "BBBBB" "CC" このような文字列を配列に格納するのに普通にやるなら char test[3][24]; for(i=0;i<3;i++){ strcpy(test[i],file[i]); } (便宜上、file[0]には、"AAA",file[1]には"BBBBB"が格納されてるとします) こうやると、test[3][24]の24バイトとか余計に確保した分が無駄になるので、 必要な文字列の長さだけ配列を確保したいと考えています。 で、 char *test[3]; for(i=0;i<3;i++){ //sizeには、各文字列のサイズが格納してあります。ここではその部分省略しますが test[i]= (char*)malloc(size); strcpy(test[i],file[i]); } とやれば (イメージで) test[0]= "AAA" test[1]= "BBBBB" test[2]= "CC" となると思ったのですが、うまく処理されませんでした。 このような処理をさせたい場合根本的に違うのでしょうか。 わかりにくい説明ですが、どなたかご存知の方よろしくお願いします

  • 文字列の検索&排除をするプログラム

    「a=i;」とするとご存知の通り、aにiという変数を代入します。 しかし、変数としてではなく「文字(char型)」として処理したいと考えております。 例えば、「1,2,3,a,4,5,6」という文字列を1文字ずつ読み込み、 「a」という文字であれば表示しない、 という感じのプログラムを作成したいと思います。 つまり、「1,2,3,a,4,5,6」が「1,2,3,4,5,6」となります。 moji[]に「1,2,3,a,4,5,6」をchar型で代入したときの プログラムの例を書きます。 for (i = 0; i <= 6; i++){ if(moji[i]==a){//何もしない、ちなみに間違えています。 } else{//a以外が表示される printf("%c", moji[i]); } } 質問は「moji[i]==a」この部分を文字(char型)の「a」とし、 「1,2,3,a,4,5,6」を「1,2,3,4,5,6」の様に処理したいのですが、 どうしたらよろしいでしょうか?

  • 文字列検索で

    よろしくお願いします。 文字列検索instr関数で、特定文字(スペース)でない文字を検索したいのですが、どのようにしたらいいですか? instr関数では、できないのでしょうか? たとえば、 文字列" osietegoo "  →  3 文字列"    situmon"  →  7 スペースでない文字が出現する位置を知りたいです。 instr(文字列,"o")ではなく、" "ではない、、、としたいのですが、できますか?

専門家に質問してみよう