プロが教えるわが家の防犯対策術!

マイコンでプログラムを作っています。
配列aに文字を入力し、それを7セグに表示したいです。
表示自体は出来ています。
なので、文字列を配列に入力する方法を教えてください。
(数字以外を表示します。)

まず、現在は
char *a[6];
a[0]="12345";
seg(*a);//7セグ表示用関数

このようなソースを書きました。これは希望通りの動作してます。
しかし、例えば
a[0] = "12";
a[2] = "345";
や、
a[0] = "12" + "345"
のように、文字列どうしをくっつけるような使い方が出来ないものかと悩んでいます。

最悪の場合
char a[5];
a[0] = '1';
a[1] = '2';
a[2] = '3';
a[3] = '4';
a[4] = '5';
と、このような方法を使おうと思ってますが、あまり好きじゃないです。
出来ないのは無知なせいなのか、方法は有るが最後の方法が一番マシなのか、もっといい方法があるなら何を使えばいいのか、等アドバイスをお願いします。

よろしくお願いします。

A 回答 (12件中11~12件)

> a[0]="12345";


> seg(*a);//7セグ表示用関数

これが正しく動くのであれば、

> a[0] = "12";
> a[2] = "345";

これも、seg関数の引数として適切な内容を渡せば
正しく動くのではないでしょうか?
引用した2箇所の違いがよくわかりません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
俺も良く分からないんですが、例えば
a[0] = "12";
a[2] = "345";
printf("%s",*a);
とやると実行結果は
12
となってしまい、345が表示されません。

マイコンの場合は
12???
と、?の部分には何が入るか分からないような状態になってしまいます。(とりあえず今やったのだと12003でした。)

たぶんですが、a[0]に"12"のアドレスを渡しただけなので、seg()が受け取った配列にはa[0]の先頭のアドレスから5文字分が入力されていて、"345"が行方不明になってるんじゃないかと思います。

お礼日時:2006/12/07 16:17

とりあえず最悪の場合のケースは


char a[5];
strcpy(a, "1234");
でできます。
文字列の結合は
char *strcat(char *dest, const char *src);
を使います。

この回答への補足

strcpyとstrcatを使えばやりたい事が出来ました。

ただ、普通に
a[0] = '1';
a[1] = '2';
a[2] = '3';
a[3] = '4';
a[4] = '5';
とした時に比べて10~16倍ぐらい遅い処理なので、ちょっと悩んでます。(今はこれで問題ないのですが、後々時間が問題になるような場所に使う事があるかもしれないので)

ありがとうございました。

補足日時:2006/12/07 17:16
    • good
    • 0
この回答へのお礼

ありがとうございます。
やってみます。

お礼日時:2006/12/07 16:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!