- ベストアンサー
char型変数
のことで質問があります。 ユニコード文字一文字ということなんですけれども、 たとえば char c = "a"; これはコンパイルエラーになりますよね。 文字列は入れられない。もっともです。 あるテキストの練習問題で、コンパイルエラーになるものはどれですかというのがあって、 char c = 4096; というのがあり、これはエラーだ!、と思ったら、 コンパイルは通りました・・・ ちなみにcの内容を表示してみたら ? と出ました。 これはどういうことですか?? なぜエラーとならないのですか?
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (9)
- lawson
- ベストアンサー率44% (29/65)
- lawson
- ベストアンサー率44% (29/65)
- lawson
- ベストアンサー率44% (29/65)
- lawson
- ベストアンサー率44% (29/65)
- asdfldfnjsvfs
- ベストアンサー率42% (75/178)
- asdfldfnjsvfs
- ベストアンサー率42% (75/178)
- asdfldfnjsvfs
- ベストアンサー率42% (75/178)
- kaz_iwa
- ベストアンサー率27% (10/37)
- kaz_iwa
- ベストアンサー率27% (10/37)
関連するQ&A
- char型とstring型について
char型とstring型について質問があります。 言語はC++です。 以下の関数があったとします。 void test(string a, string b string c){ 処理 } この関数を下記のように利用した場合について質問があります。 a.引数に直接文字列を挿入したケース test("aaa","bbb","ccc") b.変数に文字列を設定し、変数を引数にしたケース string a="aaa" string b="bbb" string c="ccc" test(a,b,c) (1)はコンパイルエラーになり、(2)は成功しました。 同じ様に見えるのですが、何が違うのでしょうか? また、関数の引数の型をchar*にした場合、(1)(2)のケースでコンパイルが通りました。char*型だと何が違うのでしょうか?
- ベストアンサー
- C・C++・C#
- char型のポインタ配列に変数の値の代入できる?
c言語でchar型のポインタ配列に変数の値を代入できるのでしょうか? 例えば int A[10]={1,2,3,4,5,6,7,8,9,10}; char *C[10]; のCに配列Aの中のデータを文字列として入れたいのです。 C[0]="A[0]"としてもA[0]という文字列が代入されてしまうだけなので… よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 'const char *' 型は 'char *' 型に変換できない ??
Case 1 Text9.Text = "AB"; Text10.Text = "A"; // 1文字目 Text11.Text = "B"; // 2文字目 case 2; Text9.Text = "Ab"; Text10.Text = "A"; Text11.Text = "b"; case 3; Text9.Text = "aB"; Text10.Text = "a"; Text11.Text = "B"; case 4; Text9.Text = "ab"; Text10.Text = "a"; Text11.Text = "b"; 上記のようなCase 文を C を使って作成したいのですが, A~J の大文字とa~jまでの小文字をつかって,2文字の文字列をつくるとき, 1文字目と2文字目が,形態も名称も異なる文字列(例 AB , Ab aB, ab, AC, Ac aC ac, ...)のcase文をつくりたいのですが, 'const char *' 型は 'char *' 型に変換できないというエラーメッセージがでてしまいます.下記プログラムをどう直せばいいかおしえてください. #include <stdio.h> #define MAX_NAME 256 int main(void) { const char *NAME12 = "Text9"; const char *NAME1 = "Text10"; const char *NAME2 = "Text11"; const char *ALPH = "ABCDEFGHIJabcdefghij"; FILE *fp = NULL; char f_name[MAX_NAME]; int count = 0; char *p = ALPH; char *q = ALPH; printf("ファイル名:"); scanf("%s", f_name); fp = fopen(f_name, "w"); if (fp == NULL) { printf("'%s':ファイルが見つかりません\n", f_name); } else { for (p = ALPH; *p != '\0'; p++) { for (q = ALPH; *q != '\0'; q++) { if (*p != *q) { count++; fprintf(fp, "Case %d\n", count); fprintf(fp, "%s.Text = \"%c%c\"\n", NAME12, *p, *q); fprintf(fp, "%s.Text = \"%c%c\"\n", NAME1, *p, *q); fprintf(fp, "%s.Text = \"%c%c\"\n", NAME2, *p, *q); } } } fclose(fp); } return 0; }
- ベストアンサー
- C・C++・C#
- Drawstringで変数内の文字を表示する方法について
Drawstringで変数内の文字を表示する方法について c言語初心者です。 ウィンドウに文字を表示するDrawstringという命令で変数内の文字を表示したいです。 たとえば、 char *a="a" DrawString(0,0,a,65535); でコンパイルすると、 宣言の構文エラー というエラーが出ます。 改善点がどうしてもわかりません。 ご指摘お願いします。 あと、c言語では変数に文字を一文字ずつしか入れられないので、文字列を変数に保存して表示したい場合にはforなどでループして表示するしかないんでしょうか? 合わせてお願いします。
- ベストアンサー
- C・C++・C#
- char型変数をLPCTSTR型に変換したい
大学の研究でプログラム作成している者です. 現在外部ファイルの文字列をfscanf()でchar型変数に取り込み,それをLPCTSTR型変数に変換して,関数に引数として渡そうとしてます. しかし,現在はchar/THCARの変換が正しくできず困っております.現在のコードは以下のような流れになってます. ----------------------------------------------- char name[MAX_PATH]; TCHAR name_t[MAX_PATH]; fscanf( &fp, "%s", name ); wsprintf( name_t, _T("%s"), &name ); // char ⇒ TCHAR makedFunction( name_t ); // 自作関数(引数はLPCTSTR) ----------------------------------------------- しかし, wsprintf()で変換した時点で,文字列がおかしくなってしまい困ってます. 開発環境はVisualStudio2010で,MFC作成(Unicode文字列)となってます.ちなみにマルチバイト文字列を使用する解決方法はなしとします. 解決方法をご存知の方がおられましたら,是非とも,ご回答よろしくお願い致します.
- ベストアンサー
- C・C++・C#
- c++ CString char* BSTR textbox.text
c++ 文字列CStringとchar*の変換問題(unicode) _________________________________________________________ Excel string -> セールの文字列をVC++側に渡すため  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ ______________________________________________________________ VC++ char * -> Excelから引数として渡される文字列  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ __________________________________________________________ VC++ system::string -> FormのTextBox.Textとしてセット  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ ______________________________________________________________ VC++ char * -> FormのDataGridから受け取る文字列  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ ______________________________________________________________ VC++ CString -> VC++からExcelに渡すためBSTR前処理  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ __________________________________________________________ VC++ BSTR -> VC++からExcelに渡すため  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↓ __________________________________________________________ Excel string -> Excelのある処理に使う  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 漢字やひらがなも文字化けないように変換できると思いますが、文字化けしたり変換が困難な状況です。 どうぞよろしくお願いします
- 締切済み
- C・C++・C#
- 1ByteのChar型変数を文字列として扱いたい
1Byteのchar型変数に入ってる値を文字列として扱う方法を教えて下さい Char a; a=30; この30を文字列として出力したいのです 期待している出力:30 判る方、よろしくお願いします
- ベストアンサー
- C・C++・C#
- char *name1[4] とchar name2[][4] の違いについて
C言語のことで質問があります。 char *name1[4]は char *name1[4] = {"abcdefghi","jkl","l","mn"}; と宣言でき,ポインタを4つ確保した形となりました。 char name2[][4]は char name2[][4] = {"abc","def","ghi","jkl","mno","pqr","stu","vwx"}; と4文字以内の文字列を初期化した数だけ確保した形となりました。 この結果からchar *name1[4]の意味は,char name2[][4]ではなくchar name2[4][]に近いと思いました。 しかし,char name2[4][]ではポインタを4つ確保した事にはならないみたいでコンパイルが通りません。 *name1[4]では4つのポインタを確保できるのに~と思ってしまいます。 ポインタと配列は別物と考えるべきなのでしょうか? 訳の分からない質問かもしれませんが, 何卒ご指導いただくようよろしくお願いします。
- ベストアンサー
- C・C++・C#
- char*型の文字列を表示させたい。
char*型の文字列を表示させたい。 char*型の文字列をウィンドウに表示させるプログラムを作っているのですが、 調べても分からなかったので、質問させていただきます。 コンパイラはBorland C++で、プラットフォームはウィンドウズです。 Textoutのようにウィンドウに出力させたいのですが、うまくいきません。 うまく行かないと言うのは、C言語でのプログラムの書き方が分からないと言う事です。 ある文字列をファイルから読み込んで、ウィンドウに表示させると言うプログラムを作っています。 http://wisdom.sakura.ne.jp/system/winapi/win32/win15.html このような感じにしたいのですが…。宜しくお願い致します。 ちなみにこの質問をさせていただいたものです。 http://oshiete1.goo.ne.jp/qa3342727.html
- ベストアンサー
- C・C++・C#
- char型の二次元配列の意味が分からないのです・・・。
char型の二次元配列の意味が分からないのです・・・。 char namae[5][10] = { "a1", "a2", "a3", "a4" }; printf("%s\n",namae[1]); という文があったのですが、これは実行するとa2と表示されました。どうしてなのでしょう。 そもそもcharは文字1文字ですよね。char[5]という一次元配列に5文字の文字列を入れることができるというのは分かります。でもchar[5][10]ってどんな文字列を入れるのでしょうか。 どうして初期化で"a1"という二文字を順々と並べるのか、printfでどうしてnamae[1]なのかが意味不明です。二次元配列だからnamae[1][0]とかで指定するのではないのかと思うのですが。 とにかく混乱です(>_<) ご存知の方、教えていただけませんか?
- ベストアンサー
- C・C++・C#
補足
ありがとうございました!! とても助かりました!!