• ベストアンサー

文字型の変数に文字を格納しようとするとエラー

凄く簡単なことだと思うのですが 文字型の変数に文字を格納しようとすると エラーになってしまいます。 char yobi[10]; yobi = "日曜日"; ご教授して頂けたら幸いです。

  • wee
  • お礼率19% (62/318)

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

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がると申します。直接的な回答は#2さんをご覧ください。 で、エラーにならない方法ですが。 もし文字列を固定値のまま扱うのであれば char *yobi; yobi = "日曜日"; # ただ、日本語を扱うのであればunsignedにしておいたほうがよいです。 文字列をあとでいじる可能性があるなら char yobi[10]; strcpy(yobi, "日曜日"); または char yobi[10]; strncpy(yobi, "日曜日", sizeof(yobi)); となります。 なお、strcpyにおいてはバッファオーバフロウの可能性を、strncpyにおいては「文字列が\0で終わっていない可能性を」それぞれ考慮してください。 …で、考慮するのが面倒なら char yobi[10]; memset(yobi, '\0', sizeof(yobi) ); strncpy(yobi, "日曜日", sizeof(yobi) -1 ); ってやりかたもあります :-P それぞれが「メモリ中でどのようにデータが動いているのか」を理解しつつ読んでいただければ幸いです。

その他の回答 (3)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> エラーの回避方法です。 char yobi[10] = "日曜日"; これで済むのでは? この後で何をしたいのか分かりませんが、この部分だけに限れば、上記で十分です。 エラーの原因については既に回答が出ている通りです。

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

yobiは文字型ではありません。文字型の配列型です。 また"日曜日"は文字列リテラルで、この型は文字型へのポインタ型です。 型が一致しないのでエラーになるのは当然ですね。 C言語には文字列を直接に扱う機能はありません。 通常は標準ライブラリ関数を利用して処理します。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> ご教授して頂けたら幸いです。 質問が不明確です。何を知りたいのでしょうか? エラーの原因?それともエラーの回避方法?

wee
質問者

補足

説明不足ですいません。 エラーの回避方法です。 出来ましたら原因も ご教授して頂けたら幸いです。 よろしくお願いします。

関連するQ&A

  • 変数に格納している文字列の読み込み

    ある変数($text)にHTMLデータが格納されています。 その変数内の文字列を、1行ずつ読み込む方法はあるのでしょうか。 $textをファイルに変換して読み込むべきでしょうか。 ぞ存知の方、ご教授をお願いします。

    • ベストアンサー
    • PHP
  • 変数格納

    C言語で、SJISのテキストファイルを読み出してunsigned charなどの変数に格納するにはソースをどのようにすれば出来ますか?テキストファイルの中には、改行、スペース、Tabなどがあります。

  • [マクロ]配列を区切り文字で変数に格納する方法

    タイトルの通りなのですが、 例えば、 A1~B10にランダムな数字が入っています。 (1)A1~B10を配列Cに格納します。 (2)配列C(1,10)を変数test1に格納します。  ※その時に各配列を/で区切る (3)配列C(2,20)を変数test2に格納します。  ※その時に各配列を/で区切る (4)test1をセルC1に記入 (5)test2をセルC1に記入 のような感じです。 配列に格納する方法はさすがに分かるのですが、区切り文字を入れて変数に格納する方法が分かりません。。。。 ご教授お願いいたします。

  • int型変数をchar型変数に格納する方法

    int型数値をchar型変数に格納したいのですが、 sprintf()とatoi()を用いてやりましたが、 うまくいきません。 考えたコードを下記します。 int get_y(){ int y=2005; return y; } int main(){ char year; char str[5]; //intをcharに変換して格納している sprintf(str,"%d",get_y()); //数値として代入 year=atoi(str); //yearには2005が格納されていない! cout<<year<<endl; char ans; //このchar型変数に数値を代入する。 ans=year; cout<<ans<<endl; return 0; } お手数をお掛けしますが、 よろしくお願い致します。

  • 配列への文字列の格納について

    C言語で文字列を扱う時、配列に1文字ずつ格納していくか、ポインタ変数を使うと思うのですが、 ポインタ変数を使った場合の処理が上手くできずに困っています。 詳細を説明すると、値を取得して、前回取得した値と比較します。 それで、同じだった場合には"chritm1"に格納した矢印を書き込む処理なのですが、 現在はfor文により配列に格納したものを使用していますが、 この部分をポインタ変数を使用した処理(1文字1文字書くのではなく、string型変数の用に書き込みたい) に変更したいのですが、上手くできないという状況です。 何かとっかかりとなるようなことでもかまいませんので、教えてください。 よろしくお願いします。 static int mainA( char *fileName){ int loop, i, j; FILE *fd; /* 前回値格納用 */ char *preval; /* 現在値格納用 */ char *thisval; /* 同値用記号格納用 */ char chritm1[6] = " → "; -- 中略 -- for( i = 0 ; i < 150 ; i++ ) { thisval = redata[i]; /* 値の比較 */ if(preval == thisval) { for( j = 0 ; j < 6 ; j++){ /* 前回値と同じ場合は矢印 */ fprintf( fd, ",%c",chritm1[j]); } }else{ /* 前回値と異なる場合は値 */ fprintf( fd, ",%s", thisval); } preval = thisval; /*完了したら改行 */ fprintf( fd, "\n" ); } -- 以下略 --

  • SharedObjectに変数を格納したいのですが、、

    最近Flashの勉強を始めたばかりで、この件についてどう調べても分からないので教えていただけませんでしょうか。 SharedObjectに、数値や文字列を保存することはできるのですが、 変数をそのまま保存する方法はありますでしょうか。 XMLからデータを読み込み ⇒ 読み込んだデータをSharedObjectに保存 ⇒ SharedObjectから呼び出して利用 という流れを作りたいと考えています。 具体的には、XMLから読み込んだデータを変数Aに格納して、変数AをSharedObjectに保存しようとしているところがうまく行かず、困っています。。 良い方法がありましたらご教授ください。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • 文字列を分割して変数に格納したい

    文字列を分割して変数に格納したいのですがうまくいきません。 ---以下ソース--- #include <stdio.h> #include <string.h> void main(void){ char tai[]="name1=value1&name2=value2&name3=value3&name4=value4"; char *tp; int a; int b; int i; int co=0; a=strlen(tai); for(i=0;i<a;i++){ if(tai[i] == '='){ co++; } } b=co; char *nameset[b]; char *valueset[b]; *nameset[0]=*strtok( tai,"&=" ); i=1; co=0; while ( tp != NULL ) { if(0==i%2){ co=i/2; *nameset[co] = *strtok( NULL,"&=" ); } else{ co=i/2; *valueset[co] = *strtok( NULL,"&=" );} i++; } for(i=0;i<b;i++){ printf("%s : %s\n",nameset[i],valueset[i] ) } } ---ソースここまで--- どうしたらちゃんと変数に格納されますか?

  • 変数に格納できる文字数の限界

    お世話になります。 題名の通り、Perlで変数に格納できる文字数の限界は あるのでしょうか? 100文字くらいの文章を変数に入れることができません。こういった場合はどうしたらいいかアドバイスを頂けませんでしょうか。 $shou=$1 if/\{第1章\}(.*?)/; というように{第1章}に続く文章(大体100字くらい)を抽出して、それを変数に入れたいのですが、 $shouを表示させようとしても何も表示されません。 どうぞよろしくお願いします。

    • ベストアンサー
    • Perl
  • char*の実体の数値をchar変数に格納する方法

    ある関数の戻り値がchar*でその関数の戻り値をchar変数に格納したいです。 char *ret_ch() { char *p="12"; return p; } int main(){ char res; //ここでret_ch()の戻り値の実体数値を代入 res=*ret_ch(); cout<<"RET=="<<ret<<endl; return 0; } char型は1バイトなので一文字しか入りません。 char型に数値として扱い、上記のポインターの 実体数値を格納するにはどのようにしたらいいのでしょうか? よろしくお願い致します。

  • string型よりVariant型 変数に格納

    VBAで string型よりVariant型の方が、 変数に格納できる文字数は多いですか?

専門家に質問してみよう