マイコンでプログラムを作っています。
配列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';
と、このような方法を使おうと思ってますが、あまり好きじゃないです。
出来ないのは無知なせいなのか、方法は有るが最後の方法が一番マシなのか、もっといい方法があるなら何を使えばいいのか、等アドバイスをお願いします。
よろしくお願いします。
No.2
- 回答日時:
> a[0]="12345";
> seg(*a);//7セグ表示用関数
これが正しく動くのであれば、
> a[0] = "12";
> a[2] = "345";
これも、seg関数の引数として適切な内容を渡せば
正しく動くのではないでしょうか?
引用した2箇所の違いがよくわかりません。
ありがとうございます。
俺も良く分からないんですが、例えば
a[0] = "12";
a[2] = "345";
printf("%s",*a);
とやると実行結果は
12
となってしまい、345が表示されません。
マイコンの場合は
12???
と、?の部分には何が入るか分からないような状態になってしまいます。(とりあえず今やったのだと12003でした。)
たぶんですが、a[0]に"12"のアドレスを渡しただけなので、seg()が受け取った配列にはa[0]の先頭のアドレスから5文字分が入力されていて、"345"が行方不明になってるんじゃないかと思います。
No.1
- 回答日時:
とりあえず最悪の場合のケースは
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倍ぐらい遅い処理なので、ちょっと悩んでます。(今はこれで問題ないのですが、後々時間が問題になるような場所に使う事があるかもしれないので)
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- Excel(エクセル) Excelの関数についておしえてください。 3 2023/04/20 18:36
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
strcat関数を自作したいです
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
C言語のプログラムについてです
-
c言語でポインタ変数を用いた配...
-
char*を初期化したいのですが
-
new charとnew char[N]の違いは?
-
動的メモリの初期化方法について。
-
コマンドライン引数 *argv[]は...
-
strcat関数
-
const char* s1とただのchar s1...
-
char型にint型の数値を代入する。
-
CStringからchar*への型変換に...
-
char 文字列型 の表現範囲が-12...
-
DWORDとcharの変換
-
2次元配列の文字"列"の初期化方法
-
C言語の文字リテラル中の16進文...
-
[C] 構造体メンバーのカンマ区...
-
csvファイルをfscanfで読み込む...
-
C言語で文字列をかえす正しい書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
strcat関数を自作したいです
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
char 文字列型 の表現範囲が-12...
-
const char* s1とただのchar s1...
-
wsprintf( ポインタ , "%d" , "...
-
c言語でポインタ変数を用いた配...
-
char型にint型の数値を代入する。
-
C言語で文字列をかえす正しい書...
-
C++17で、unsigned char * 配列...
-
共用体について
-
エクセルのMID関数は、C言語では?
おすすめ情報