文字列の中の1文字比較方法とエラーの解決方法について

このQ&Aのポイント
  • XP,Studio.NETでC++を書いている場合、文字列の中の1文字を比較する方法がわからず困っています。
  • 具体的には、string[300]に入っている文字列から1文字ずつ取り出して比較したいのですが、処理中にエラーが発生してしまいます。
  • エラーメッセージは「定数が多すぎる」と表示され、2行目にもエラーが続いている状況です。解決方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

文字列の中の1文字を比較するには?

XP,Studio.NETでC++を書いています。 文字列の中の1文字を比較したいのですがどのようにしたらいいのかわかりません。 今以下のような文字列がstring[300]に入っているとします。 「\nは改行コードです。printf("");では"から"までの文字が画面に表示されます。」 このとき、1文字ずつを取り出し、文字を比較したいのですが (iを増加) if(string[i]=='\') flag=1; //処理→次にnが来る。 if(string[i]=='"') flag=2; //処理→文字はダブルコーテーション という処理をしたいのですが、 エラー:定数が多すぎます。 エラー:定数が2行目に続いています。 と出ます。どうしたらいいのでしょうか? どなたか教えていただけると幸いです。

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

  • ベストアンサー
  • YamaYoshi
  • ベストアンサー率29% (91/313)
回答No.1

エスケープシーケンスですね。 '\\'と'\"'に変えてみてください。 http://www9.plala.or.jp/sgwr-t/c/sec05.html ここらへんを参考に

関連するQ&A

  • strcmp関数などでの複数の文字列の比較

    以下の例はランダムなiの値で文字列にアクセスして その文字列がどの文字列であるかを判定しているプログラムです。 char *string[] = {   "aaa",   "bbb",   "ccc", } ; int i = rand() % 3; if ( strcmp( string[ i ], "aaa" ) == 0 ) {   printf("aaaです"); } if ( strcmp( string[ i ], "bbb" ) == 0 ) {   printf("bbbです"); } if ( strcmp( string[ i ], "ccc" ) == 0 ) {   printf("cccです"); } するとこのようにif文の羅列になってしまいます。 (strstr関数を使う場合などでも同じような感じです。) 複数の文字列を判定する場合などにもっと良い手法は無いでしょうか?

  • 文字列比較

    最長10文字の文字列を2件入力し、char型の配列にそれぞれ格納する。2つの文字列を比較し、文字列が同じだったら「equal」を表示し異なっていたら「Not equal」を表示するプログラムを作成せよという課題が出ました。 条件として、11文字以上の文字が入力されたら、先頭から10文字までを有効とし、11文字目以降を無視する。下記のプログラムで文字列1に11文字以上入力すると、うまく動きません。なぜ、うまくいかないかと、どうなおしたらよいかを教えてください。 #include<stdio.h> #include<string.h> #define max_length 10 void get_string (char *p_str, int size); int main() { char string1[max_length+2]; char string2[max_length+2]; printf("文字列1:"); get_string(string1,max_length+2); printf("文字列2:"); get_string(string2,max_length+2); if(!strncmp(string1,string2,max_length)) puts("equal"); else puts("Not equal"); } void get_string (char *p_str, int size) { fgets(p_str,size,stdin); }

  • 文字列に\nを入れたい

    データベースAccessからデータを取得しTextFieldにその取得したデータを表示させたのですが、文字数が長くてTextFieldに収まらなくなっしてしまいました。そこで取得した文字列に新たに\nを入れて改行させようとしています。 String str = "文字列40字以上…" if(str.length >= 40){ ***処理内容*** 文字列が40字以上なら40文字目のすぐ後ろに\nを足して改行させて表示させたい。 ただし、40文字目を区切りとして改行させ表示させる。例)96文字なら3行に表示させるようにする。 } このような処理を行いたいのですが、良い方法がわかりません。アドバイスをお願いします。

  • 文字列操作が分かりません

    VB2008で文字列を加えるプログラムを組んでいるのですが、下記のリストのようにダブルクォーテーションで囲まれた文字列が旨く処理出来ません。 ダブルクォーテーションをダブルクォーテーションで括るのはできないのでしょうか。 どなたかご教授下さいませ。 よろしくお願いいたします。 1. Dim data1 As String = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">" //W3Cの//で(式が必要です)エラーがでます。 演算と間違われているのでしょうか。 2. Dim data2 As String = "<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">" "<meta http-equiv=" この箇所でエラーが出ており、以下のエラー文です。 (文字定数には一文字のみを指定しなけばならない) 以上 よろしくお願い致します。

  • 文字列の比較に関する質問

    文字列をif文で比較したいのですが、まず下記の例だと char *a a="a"; if(a=="a"){ printf("等しい"); }else{ printf("等しくない"); } 文字列は等しくなるのですが下記の例ではなりません 何故なのでしょうか。 read(s_sock,&buf,sizeof(buf)) if(a=="GET"){ printf("TRUE") }else{ printf("FALSE"); }

  • C言語:配列の中の文字を。。。

    こんにちは。 閲覧していただきありがとうございます。 長文になりますが勉強がわからず困っているので、ご助力いただけると助かります。 C言語についてです。 文字列の中に、特定の文字が出てきたときにだけ改行して表示するプログラムを作りたくて、以下のようにしてみました。(文字はアルファベット小文字のみです) #include<stdio.h> #include<string.h> int main(){  char str[200];  int i;  int k;  puts("文字列を入力");  gets(str);  k = strlen(str);  for(i=0;i<k;i++){    if(strcmp(str[i],"n")==0)     printf("\n");    printf("%c",str[i]);    }   return 0; } このプログラムにより期待する結果は、例えば入力した文字列が「abcdne abcn d」だとすれば、nが来たときに改行が実行されて abcd ne abc n d と表示されるようにしたいのですが、strcmpにintは渡せないとか、ポインタを使ってみても、実力不足ゆえに、「移植性のないポインタ変換」とかのエラーしか出ません。 どのようにすれば、この結果を得ることができるのでしょうか? ぜひご教授ください。よろしくお願いします。

  • 文字列の比較について

    BufferedReaderでファイルを読んだのちに、見出しの文字列をカンマで分割して 文字列を比較しようとしています。 ですが、分割すると、文字列が別な文字コードによる表記に変わってしまいます。 なぜでしょうか? また、解決方法などのヒントなどあれば教えてください。 BufferedReader buffReader = new BufferedReader( new FileReader("/home/masa/Desktop/Sample.csv")); String s; int ini=0; int wamei=0; int i=0; while((s = buffReader.readLine())!= null){ String[] str = s.split(",", -1); //System.out.println(s); if (i == 0) { for(int j=0; j<str.length;j++){ System.out.println(String.toString(str)); if(str.equals("五十音")){ini = j;} System.out.println("五十音"+ini); if(str.equals("a")){wamei = j;} System.out.println("和名"+wamei); //System.out.println(j); } } i++;

    • ベストアンサー
    • Java
  • マクロ 文字列の比較について質問

    いつもお世話になっています。 マクロの文字列の比較方法について質問致します。 異なるシートの文字列を比較して、一致したら処理をするというマクロを作っているのですが、文字列の比較がうまくいきません。 解る方がいましたらアドバイスをお願いします。 Rangeの使い方がおかしいのでしょうか? For L = 1 to LAST step 1 If Range(Sheet1.Cells(L, 1)).Text = Range(Sheet2.Cells(M, 2)).Text Then ・ ・ ・ end if ※Mは定数です。

  • 文字列比較の演算子

    Perl の世界から PHP にやってまいりました。 Perl では、文字列の比較には専用の演算子がありまして、 str1 eq str2 とすると、二つの文字列が同値かどうか調べられますが、PHP にはこのような演算子はないのでしょうか? www.php.net のマニュアルを見ても、そのような演算子がありません。 == 演算子が使えるものかと <?php $str1 = "this is string" ; $str2 = "this is string" if( $str1 == $str2 ) { echo "two string is same" ; } ?> などを試してみるとうまくいくようですが、www.php.net のマニュアルには「文字列を数値化して比較する」と書いてあり、本当に文字列比較が出来るか確信がもてず…。 結局、文字列を比較したいときには strcmp を呼び出していますが、これは PHP 的には正しいのでしょうか?

    • ベストアンサー
    • PHP
  • read()で読みこんだ文字列の比較について

    実行環境はLinuxで、ディストリビューションはturboLinuxです。 strcmpで文字列の比較ができるのですが、何故かreadで読み込んだ文字列は比較できません。 何故なのでしょうか。ちなみにコードは下です read(sock_ipadrc,&Buf,sizeof(Buf)); if(!strcmp("GETADR",Buf)){ printf("等しい"); }

専門家に質問してみよう