電子書籍の厳選無料作品が豊富!

C言語初心者です。勉強していて、わからない事がありますので教えて頂けないでしょうか。
題名の通りなのですが、ファイル入力で出力する型についてです。ビットッパターンで入力したものを、文字で出力したいのですが、可能でしょうか?
例えばソース中では、
char d =0x55;
printf("%c\n", d);
とすれば、「U」の文字が出力されます。
このdの宣言をコマンドファイルでできますでしょうか?

よろしくお願い致します。

A 回答 (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 ) ;
}
    • good
    • 0
この回答へのお礼

どうも、ありがとうございました。
おかげで、コンパイルすることができました。

お礼日時:2003/08/07 08:55

0と1のみの文字列が取得できているのであれば、strtolを使うと楽かもしれません。



#include<stdio.h>
#include<stdlib.h>

int main(void)
{
  char input[] = "01010101";
  printf("%c", strtol(input, NULL, 2));
  return 0;
}
    • good
    • 0
この回答へのお礼

有難うございます。
ライブラリで用意されているのですね。

お礼日時:2003/08/07 08:55

コマンドプロンプトから


> moji 01010101
character = U
という結果を出したいと言うことでしょうか?

argv[1][0] から argv[1][7]まで一つずつループしながら char d で宣言した変数にビットシフトで0か1の値を入れていけばできますよ。
    • good
    • 0

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

補足日時:2003/08/06 14:28
    • good
    • 0

入力がビットパターンとありますが、入力ファイルの内容は具体的にはどういうものですか? 例を提示してください。



それから、コマンドファイルというのは何ですか?

この回答への補足

返事が遅くなりすみません。質問の内容がわかりにくいですね。
はい、例を挙げますと。
#include <stdio.h>

#defineINFILE"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 という文字になるようにプログラムしたいのですが、どのようにすればよいのか分かりません。
何度もすみませんが、宜しくお願い致します。

補足日時:2003/08/06 13:21
    • good
    • 0

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