• ベストアンサー

char*型の文字列をchar[10]へ。

char*型の文字列をchar[0]から順番に格納したいのですが、 どうやってやるかご存知の方おられますでしょうか。 申し訳ございません、宜しくお願い致します。

noname#142813
noname#142813

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

  • ベストアンサー
  • crew21
  • ベストアンサー率26% (58/222)
回答No.1

C言語的に文章が正しくないので答えにくいですが、察するに、 char* a; だけだと、aはおかしな領域を指している(可能性がある)ので、 例えば char b[10];と定義した配列とつなぐ、即ち、 a = &b[0]; とします。 これによりaは配列b[]の先頭領域を正しく指しますから、 その後は、a[0]='R'; とやろうと、a[7]='-' とやろうと自由です。 要は、宣言したポインタをちゃんと初期化するということですね。

その他の回答 (3)

回答No.4

質問の意味が正確に分からないのですが、yahhooooさんのやりたい事は多分、こんな感じ? 外していたらすみません。 char * a = "abcdefghi"; char b[10]; strncpy(b, a, 10); printf("%s\n", b);

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

#2 の意味なら strncpy とか memcpy.

  • crew21
  • ベストアンサー率26% (58/222)
回答No.2

No.1です。 もしかしたら、 char* a = "abcdefghij"; を char b[10]; に格納したいんでしょうかね。だとしたら、 for( int i=0; i<10; i++ ) { b[i] = *a++; } で十分でしょうね。 くれぐれもコンパイラに確保された領域を冒さないように気を付けてください。

関連するQ&A

  • char*型の文字列を表示させたい。

    char*型の文字列を表示させたい。 char*型の文字列をウィンドウに表示させるプログラムを作っているのですが、 調べても分からなかったので、質問させていただきます。 コンパイラはBorland C++で、プラットフォームはウィンドウズです。 Textoutのようにウィンドウに出力させたいのですが、うまくいきません。 うまく行かないと言うのは、C言語でのプログラムの書き方が分からないと言う事です。 ある文字列をファイルから読み込んで、ウィンドウに表示させると言うプログラムを作っています。 http://wisdom.sakura.ne.jp/system/winapi/win32/win15.html このような感じにしたいのですが…。宜しくお願い致します。 ちなみにこの質問をさせていただいたものです。 http://oshiete1.goo.ne.jp/qa3342727.html

  • 文字列char*に\を入力するには?

    char *str = "マイドキュメント\フォルダ\ファイル"; と文字列を初期化すると、実際この文字列には "マイドキュメントフォルダファイル" と、出力し確認したところ、入ってしまってるようです。 "マイドキュメント\フォルダ\ファイル" と格納するにはどのようにすればよいのでしょうか? ご教授ください。

  • char型の文字列をウィンドウに表示させる。

    c言語のAPIを用いてプログラミングをしているものです。 char*型の文字列をウィンドウに表示させるにはどうしたらいいでしょうか。できれば、例を挙げて教えていただけないでしょうか。 よろしくお願いします。

  • SQLで文字列を時刻に型変換する方法

    SQLで文字列を時刻に型変換する方法を教えていただきたいです。 char型のAというカラムに'090000'が格納されています。 この値を time型のBというカラムに型変換して登録したいのですが、 cast(A as time) としてもエラーが出てしまうので、現在は cast(SubString(A,1,2)+':'+SubString(A,3,2)+':'+SubString(A,5,2) as time) と変換しています。 もっと簡単に変換する方法はありますでしょうか? ご教示頂けましたら、助かります。 宜しくお願い致します。

  • 文字列を time 型に変換するには。

    文字列を time 型に変換するには。 お世話になります。 PostgreSQL 8.2 & PgAdmin 1.6.3(WinServer 2003)を使用しています。 varchar 型のカラムに格納されている時刻を表す文字列('9:15' など)を time 型に変換してビューを作成する必要があるのですが、できずに困っています。 具体的には... 「table1」というテーブルに「時刻」(varchar 型)という名前のカラムを作成し、「9:15」という文字列を格納しておきます。 これをもとにビュー(view1)を作ろうとしているのですが、select 文のところで 、ERROR: syntax error at or near "時刻" SQLステート:42601 というエラー(構文エラー)が出てしまいます。  select time 時刻 from table1  結果:ERROR: syntax error at or near "時刻" SQLステート:42601 ちなみに、時刻を文字列で指定してやると、ちゃんと time 型で結果が返ります。  select time '9:15'  結果:09:15:00 抜本的に方法が間違っているとはおもうのですが、いくら調べてもこれを解決できるようなサイトが見当たりませんでした。 文字列を time 型に変換するにはどのようにしたらよいのかご教示いただけないでしょうか。 よろしくお願いします。

  • 1ByteのChar型変数を文字列として扱いたい

    1Byteのchar型変数に入ってる値を文字列として扱う方法を教えて下さい Char a; a=30; この30を文字列として出力したいのです 期待している出力:30 判る方、よろしくお願いします

  • 文字列の反転

    こんばんわ。C言語初学者の者です。早速質問させてください。 (1) char a; aの中身には、アルファベット小文字の文字列が5個並んでいるとします。 その文字列を前後反転させるにはどうすればいいでしょうか? 例えばabcdeと並んでいる文字列をedcbaとする場合です。(キーボードからabcdeと打ち込んだとき、aにedcbaと格納させたいのです) (2) char a;   char b;  中身は文字列で、二つを合体させたい場合どうすればいいのでしょうか?  例えば aにはth 、bにはatと格納されている場合thatと繋げたいのです。  よろしくお願いします。

  • 文字列を配列に入れる方法

    初歩的な質問で申し訳ありません。 文字列型のデータを1文字ずつ順番に配列に格納する方法を教えてください。 よろしくお願いしますっ。

  • '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; }

  • CHAR型ポインタについて。

    CHAR型ポインタについて。 当方C言語初心者です。 ポインタと文字列の関係分からないことが出てきました。 参考にしている本があり、そのページに下記のソースで「const char *pc1」のポインタ変数を用意して、そこに直接文字列を代入しています。 本来、「char *pc1」はchar型のアドレスを格納するための変数のはずなのに、その変数に文字列を代入してることに疑問を感じました。 この記述の仕方は間違っていないのでしょうか?また、アドレスを格納するための変数「*pc1」に「abcdefg」の文字列はどのようにメモリ上で格納されているのでしょうか? 知ってどうなるの?みたいな質問かもしれませんが、ご教授いただけると幸いです。 #include <stdlib.h> #include <string.h> void func(void) { const char *pc1 = "abcdefg"; //←ココ char *pc2 = (char *)malloc( strlen(pc1) +1); if ( pc2 ) { strcpy( pc2, pc1 ); free( pc2 ); } }

専門家に質問してみよう