C言語 共用体について
コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1に渡したいんですが、float型もint型も、argv[1]の値しか受け取れないです。
どうしたら共用体に渡せるでしょうか?
大体コードは以下のように書いています。
>exe 1234 5678
typedef union tagUNI{
float f;
unsigned int ui;
int i;
char c;
}UNI,*LPUNI;
UNI u,u1;
void exe(int argc,char *argv[]){
if(argc==2){
~省略~
else if(argc==3){
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>float型もint型も、argv[1]の値しか受け取れないです。
>どうしたら共用体に渡せるでしょうか?
「渡せる」というのが「代入する」という意味であれば、argv[1]の代わりにargv[2](どちらもchar *ですが)の参照先の値を解析して適当な型の数値に変換したものを、適当な型のメンバとして代入するだけです。
argv[1]でできているのであれば、argv[2]でも同じことですよ。exe()の中で「argv[1]」として参照しているものを「argv[2]」として参照すればいいだけ。
No.2
- 回答日時:
#include <stdio.h>
#include <stdlib.h>
union sample {
float f;
unsigned int ui;
int i;
char c;
char* s;
};
int main(int argc, char* argv[]) {
union sample example;
if (argc != 6) {
goto END;
}
for (int i = 1; i < argc; i++) {
switch(i) {
case 1: example.f = strtof(argv[i], NULL);
printf("%lf\n", example.f); break;
case 2: example.ui = strtol(argv[i], NULL, 10);
printf("%d\n", example.ui); break;
case 3: example.i = strtol(argv[i], NULL, 10);
printf("%d\n", example.i); break;
case 4: example.c = argv[i][0];
printf("%c\n", example.c); break;
case 5: example.s = argv[i];
printf("%s\n", example.s); break;
}
}
END:
return EXIT_SUCCESS;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
charでの計算?
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
double型の値をchar配列に変換...
-
c言語でユーザ関数を利用して入...
-
テキストデータをそのままバイ...
-
C言語について。
-
CStringをwchar_tに変換したい
-
enumの記述について。
-
アルファベットの並べ替え
-
'const char *' 型は 'char *' ...
-
3桁区切(コンマ)記号をつけ...
-
C言語のポインターで詰まっている
-
switch文で文字を比較すること...
-
pingの結果を取得する方法
-
配列をnビットシフトする
-
for文 アスタリスクで形を作る
-
ncursesで...
-
C言語の入力した文字を反転させ...
-
Visual Studio strcpyについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
C言語のfor文です。 繰り返しの...
-
テキストデータをそのままバイ...
-
charでの計算?
-
文字列から空白を取り除きたい...
-
charからLPTSTRへの変換方法
-
atoi( ) の反対をやりたい
-
2曲同時再生するにはどうした...
-
C言語の入力した文字を反転させ...
-
配列をnビットシフトする
-
3桁区切(コンマ)記号をつけ...
-
int main()の・・・
-
型変換
-
CStringをwchar_tに変換したい
-
'const char *' 型は 'char *' ...
-
間接操作のレベルとは
-
double型の値をchar配列に変換...
-
絶対パスからのファイル名の切...
-
switch文で文字を比較すること...
-
c++ 文字列を入力して、一文字...
おすすめ情報