- ベストアンサー
コマンドファイルから、ビットパターンの入力
C言語初心者です。勉強していて、わからない事がありますので教えて頂けないでしょうか。 題名の通りなのですが、ファイル入力で出力する型についてです。ビットッパターンで入力したものを、文字で出力したいのですが、可能でしょうか? 例えばソース中では、 char d =0x55; printf("%c\n", d); とすれば、「U」の文字が出力されます。 このdの宣言をコマンドファイルでできますでしょうか? よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1 です。補足ありがとうございます。 入力ファイルのフォーマットの細かい条件によっていろいろ考える必要がありますが、簡単のため、入力ファイルは1行に0又は1が8バイトのみと条件を特定した場合で回答します。 補足の printf("%s", buf); の部分を以下のようにしてみてください。 { int c=0 , i ; for ( i=0 ; i<8 ; i++ ) { c <<= 1 ; if ( buf[i] == '1' ) { c |= 1 ; } printf( "%c\n" , c ) ; }
その他の回答 (4)
- gimmick
- ベストアンサー率49% (134/270)
0と1のみの文字列が取得できているのであれば、strtolを使うと楽かもしれません。 #include<stdio.h> #include<stdlib.h> int main(void) { char input[] = "01010101"; printf("%c", strtol(input, NULL, 2)); return 0; }
お礼
有難うございます。 ライブラリで用意されているのですね。
- yatokesa
- ベストアンサー率40% (201/496)
コマンドプロンプトから > moji 01010101 character = U という結果を出したいと言うことでしょうか? argv[1][0] から argv[1][7]まで一つずつループしながら char d で宣言した変数にビットシフトで0か1の値を入れていけばできますよ。
- sha-girl
- ベストアンサー率52% (430/816)
int main(int argc ,char** argv ){ char d; d = **argv; printf("%c\n", d); return 0; } こういう事? 例えばwindowsでmain.exeってファイルだとすると コマンドプロンプトから >main.exe U でdに「U」を渡せます。
補足
ありがとうございます。質問の内容が判りにくい為、お手数おかけします。 内容はNO.1のshige_70様の補足の所に掲載しました。もし、よろしければ、もう一度教えていただけませんか? 又返事が遅れましたこと、お詫びいたしますm(__)m
- shige_70
- ベストアンサー率17% (168/946)
入力がビットパターンとありますが、入力ファイルの内容は具体的にはどういうものですか? 例を提示してください。 それから、コマンドファイルというのは何ですか?
補足
返事が遅くなりすみません。質問の内容がわかりにくいですね。 はい、例を挙げますと。 #include <stdio.h> #define INFILE "sample.txt" int main( void ) { FILE *fp; char buf[256]; if( ( fp=fopen( INFILE, "r" ) ) == NULL ) { printf( "入力ファイルがオープンできません\n" ); return 0; } while( fgets(buf, 256, fp) != NULL) { printf("%s", buf); } fclose( fp ); return 0; } とすると、INFILEのデータを読むことができます。 そこで、INFILEの中身の文字を2進数で書いて、出力するデータを文字で表すにはどうしたら、いいのでしょうか? 例えば、INFILEの中身を 01010101 とした時に 出力される 、値は U という文字になるようにプログラムしたいのですが、どのようにすればよいのか分かりません。 何度もすみませんが、宜しくお願い致します。
お礼
どうも、ありがとうございました。 おかげで、コンパイルすることができました。