}if(line[i]=='3'){    func( "xxx" );  //←として展開される されないと完了しないためです。 //注)がインクルードされていることを前提とする chars[256]; 「セグメンテーション違反です (core dumped)」 上記マクロを使用して、関数 func にマクロ名が格納された文字列 str を ・そして、見つかったらば行単位で『fputs』関数で出力しています。 した文字列の中から改行文字を削除できないことです。文字変数のアド    }if(line[i]=='3'){ 特定文字が含まれている行を新に作ったファイルの中に     out[10]="a\0" string2: yyy perlでもおなじみの書式ですね。 上記のままではできませんが、何か特別な関数とかでできるのでしょうか?, こんにちは。 char *str; 「3」が格納されていたら「c」 } strstr 関数は, s1 が指す文字列の中で,s2 が指す文字列の文字の並びが最初に現れる位置を探します. ... C言語サンプルプログラム.     out[10]='a'; char *test(...) } 文字列の先頭から指定した文字を検索するには、strchr()関数を使用します。 以下は、strchr()関数についてです。 #include char *strchr(const char *s, int c); 引数.   fputs( buff, fo );  検索文字列の有無をチェックします。この有無は文字列から文字列を検索する関数   { }     out[10]='c'; if(str=='a' || str=='b' || str=='c')これまとめられませんか? ややこしくて答えづらい質問かと思いますが、有識者の知恵を拝借したいです。よろしくお願いします。    func( "xxx" );  //←として展開される 宜しくお願いします。, OSは何でしょうか。コンパイラは何を使用していますか? #include char line[100], out[100];     out[10]=0x62; /* bのASCIIコード */ 省略(fclose×2つ) A.2度呼び出した場合に前のデータを破壊してもよいケース(再入不可能)  これで見つかった行だけが、新たに作ったファイルに書き込まれていきます。→抽出です。 } 「1」が格納されていたら「a」 printf( "string1: %s\n", sArg ); B.2度呼び出した場合に前のデータを破壊しないケース(再入可能) string1: hoge 今回はC言語のstrstr関数について説明します。 strstr関数は文字列から文字列を検索してその場所のポインタを返してくれる関数です。 書式 #include char *strstr(const char *s1, const char *s2); 第一引数は検索対象の文字列 第二引数は検索文字列 を指定します。 こんなところですかね。, 再入可能にするかどうかで、回答は変わります。 #include printf("NG!その文字列は含まれていません。\n"); char *test(...) strchr 文字列中の文字の検索; strstr 文字列中の文字列の検索; 演習問題2. : { > if(*(str+i)=='/n') { #define STR2MAC(str) \ #define GETSTR(x) #x 2)上記の文字列 str を関数 func に渡す際に、マクロ名ではなくそのマクロで >    out[10]="b\0"; 変換用のマクロを定義してみては如何でしょうか? That is an apple.\n\n"); #define A "xxx" fgetsが最大文字数に達したり、ファイルの最後になったりで、strに改行文字が含まれない場合には、このループは止まりません(Segmentension Falutになって止まる) using namespace std; 書き込みたいんですが、テキストの中身の検索と stringstr; とout[100]に代入する関数を作りたいのですが }, 回答ありがとうございます! ・検索するのは1文字、文字群、文字列のどれですか? 結果: str = malloc(BUFSIZ); いろいろ本などで見ましたが、何が原因かわからず困っています。 else //引数をマクロ名としてそのマクロで定義された文字列を取得するマクロ …※2 と定義しておいて "^"より後ろが読込みを停止させたい文字の集まりです。上記の指定は復帰改行以外の文字が現れるまで読み込みます、という書式です。 !strcmp(str,GETSTR(A))? printf("This is a pen. !strcmp(str,GETSTR(A))? ・テキストの中身の検索は、行単位で文字列を取得(fgets)してから、この文字列内に 教えてください。    char str[] = "A";   //"A"はマクロ名 "; } どうしたらいいのでしょうか?. return str; if(str == "xxx") { >    out[10]="c\0" That is an apple. 以下は、上記の引数についてです。 B : str   定義された文字列を渡したい。    }if(line[i]=='2'){    if(line[i]=='1'){ stringstr; 参考URL:http://www9.plala.or.jp/sgwr-t/lib/strspn.html,http://www9.plala.or.jp/sgwr-t/c/sec17.html, ★文字列の検索関数を使えば良い。 上記の山文字"^"より前が読み込ませたい文字の集まりで、ハイフン指定が出来ます。 よろしくお願いします。, ★文字列の検索関数を使えば良い。    #define A "xxx"  //マクロ名=A #define GETSTR(x) #x 現在、C言語を学習しています。 文字列から文字列を検索する関数に「strstr]がありますが、自作関数として自分で作成する方法を考えております。 文字列から文字を検索する事は出来たのですが、文字列を検索するシーケンスがわかりません。 scanf( "%s", sArg ); string1: B 「ポインタ」「アドレス」と言われたら、 この例なら str, str+i が思い浮びます。 ...   { B-1.mallocを使ってもいいケース 通常、デバッグオプションをつけて実行すると、異常の発生したソースの箇所で止まりますので、それが手がかりになります。またNo1の方が言われてますように、ソースが公開できるのであれば、ソースを提示するのが良いかと思います。, コンソールプログラムで Fedora上でやっています。問題は、fgetsでテキストファイルから、取得 str.erase(0,str.find('=')+1);    }if(line[i]=='2'){ > if(*(str+i)=='/n') { } { です。このプログラムをいじって教えてほしいです。  『strchr』関数を使います。質問では、特定の文字が含まれている行となっていますが char *test(char *str, ...) no = 10; どこが悪いのかまったくわからなくて作業が完全に止まってしまいました。 if(str == NULL) str.erase(str.find_last_...続きを読む, #define A "xxx" "m文字からなる文字列 source" から "n文字からなる文字列 target" を探す---- #include    if(line[i]=='1'){ void change(int i) char buf[5]; ... 当方初心者なので少し疑問に思ったところがあるのですが、 char sArg[128]; using namespace std; static char str[BUFSIZ]; // static指定でメモリは静的に確保されます。 char *test(char *a, int b)  これによっていろいろと代わりますよ。処理が…。 } cout<<"後の削除"<のインクルードが必要になります。 抽出方法がいろいろ試してみましたがわかりません。 「文字変数のアドレス」だと sprintf(buf, "%d", no); いつもお世話になっております。 warning: assignment makes integer from pointer without a cast checker=0; int n = scanf("%[a-zA-Z0-9\\: \t^\r\n]",buf); ・strstr関数およびstring.hを利用しない このとき  例) と書きましょう。, >    out[10]="a\0"  検索文字列の有無をチェックします。この有無は文字列から文字列を検索する関数 } int no; 「2」が格納されていたら「b」   { { ↓↓↓問題文↓↓ キーボードから国語,数学,英語の点数を入力, C言語について質問お願いします まだ勉強中なのでご指導よろしくお願いします str1=big str. char s[256]に問題の文字列が入っているとします void funcHoge( const char *str ); C:\aabbcc\ この場合は、呼び出し元でちゃんとfreeしましょう。 FILE *fp; ←読み込み用 ≫実行その2≪ > for(i=0;;i++){ } 構造体に値をいれようとしたら、コンパイルは出来るのですが、実行時に C言語 文字列内の文字列を検索 - string.h - [ strstr ] ⇒ nanashi (04/16) C言語 整数と小数の分割結合 指数と仮数の分割 - math.h - [ modef, frexp, ldexp ] ⇒ べる (12/30) C言語 確保した動的メモリの解放 - stdlib.h - [ free ] ⇒ hiro_knigh (04/26)   定義された文字列を渡したい。 string2: hoge int n = scanf("%[^\r\n]",buf);     out[10]='b'; void change(int i)     out[10]="c\0" ポインターは使っていないのですが、ポインターに関する警告が出ているようで困っています。 文字列の先頭から指定した文字を検索するには、strchr()関数を使用します。 2)上記の文字列 str を関数 func に渡す際に、マクロ名ではなくそのマクロで ・以上。おわり。→上記のを参考にして下さい。 char *test(...) 「3」が格納されていたら「c」 この場合は、呼び...続きを読む, line[100]で そもそもscanfを使うというのはお勧めでは int main(void) 文字列から文字を検索する事は出来たのですが、文字列を検索するシーケンスがわかりません。 で読み込んだ文字列strが } ポインターは使っていないのですが、ポインターに関する警告が出ているようで困っています。    char str[] = "A";   //"A"はマクロ名 > break; : forの終了条件を記述する、for中で if(*(str+i)=='\0') { break;} 等としておく、等 が思い浮びます。  例) strstr関数は、文字列から指定された文字列と一致する部分を検索し、その位置を返します。 #include char *strstr(const char *haysta 文字列中の文字列を検索する – C言語入門講座    func( STR2MAC( str ) ); } 「1」が格納されていたら「a」 char *test(char *str, ...) 4. pos = t+1 として(2)に戻る。, タイトル通り、int型からchar型への変換の仕方がわかりません!><    }if(line[i]=='3'){ "xxx"だった場合、"yyy"だった場合のように分岐したいのですが checker=1; {char str[256]; strcpy(s,"AAA=C:\\aabbcc\\ddd");cout< } : cout<  C言語初心者のものです。今課題でC言語を用いたプログラミングを { /*関数*/     out[10]='c'; ...  『if ( strspn(buff,"+-*/") != 0 ){ … }』とすると『+-*/』の文字群が含まれる行のみを抽出します。 #define STR2MAC(str) \ やりたいことの解釈ですが、(※勘違いの場合はすみません。) return str; if(str[k]==s[i]) 配列なら「添字」、意味的には「x文字目」ですね。 jci.h(20) : warning C4172; ローカル変数またはテンポラリのアドレスを返します。 (注意:NULL以外の同じアドレスを指定して複数回呼び出すと、メモリ内容は当然破壊されます) サイトマップ / C言語講座>出入り口>総目次>目次:ポインタ>部分文字列の検索. if (s[i]) なおリンクの無償ボーランドC++5.5でやりました  例) string1: A これは最近のほとんどのC/C++コンパイラで使えます のような記述になります。 ≫実行その3≪ { B-1.mallocを使ってもいいケース { //引数を文字列として取得するマクロ C言語,strchr()関数で文字列中の文字を先頭から検索する.     out[10]=0x63; /* cのASCIIコード */ scanf("%s", str) A or B ?>B !strcmp(str,GETSTR(B))? サンプル: といった対策が必要です。   return str; 「ポインタ」「アドレス」と言われたら、 この例なら str, str+i が思い浮びます。    }if(line[i]=='2'){ または ==============================     out[10]="b\0"; return str; 解説: { ... を使用してユーザに入力された文字によって処理を行いたいのですが、このままではスペースを含む文字列がスペースの手前で切られてしまいます。 A or B ?>hoge     out[10]='b'; { void main(void) また、※1の文字列を定義するマクロの種類(パターン)を増やす場合、 ≫実行その1≪ c言語のプログラミングでキーボードから39文字以下の文字列を入力し、その文字列を逆順のスペルで表示す, c言語でキーボードから2点の座標p1(a,b),p2(c,d)の値はを入力して2点間の距離を計算を表, class Str { const char* str; int countS; if(countS, プログラミングの問題を教えてください! 解決法をおしえてください。お願いします。 が、それは良しとしましょう。 ■サンプルソース 上記のマクロを使用したサンプルソースを下記に掲載致します。 なお、戻り値は読み込んだ項目数ですので、 { 下記のような指定も出来ます。 または return 0;     ↓  検索する文字とは、1文字、文字群、文字列のどれですか? int main(void) 省略(fopen×2つ) }  } ントエラーになってしまいます。これは如何にして解決すべきでしょう warning: assignment makes integer from pointer without a cast printf( "A or B ?>" );     out[10]='a'; } 文字列 ... C言語関数辞典 サイト内検索. 1)マクロの名前(定義名)が文字列として格納された文字列 str があるとする。 有識者の方、御教授よろしく御願い致します。, やり方はいくつもありますが、オーソドックスなのは: 注)エラー処理は行っていません。 構造体と代入したい変数との型は、合っています。 if(checker==0) str = malloc(BUFSIZ); #define B "yyy" ・また『strstr()』関数の部分を  すいませんが、教えてください。, 今時string型を使わないでプログラムを組むのは時間の無駄です str.erase(0,str.find('=')+1); >    out[10]="c\0" という警告がでます。 FILE *fo; ←抽出用 } cout<<"前の削除"<