C言語なら、俺に聞け! <28>

このエントリーをはてなブックマークに追加
新スレ

C言語なら、俺に聞け! <29>
http://pc3.2ch.net/test/read.cgi/tech/1029605182/
953デフォルトの名無しさん:02/08/18 06:46
ファイル読み込んでバイナリモードで先頭から1bitづつ配列にいれていきたいのですがどうすればいいですか?
954デフォルトの名無しさん:02/08/18 07:03
for
955 :02/08/18 09:55
>>953
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main(int argc, char *argv[]) {
 FILE *fp;
 int c;
 int bit;
 int i;
 size_t size;
 char *vector;

 if (argc == 1) {
  return EXIT_FAILURE;
 }

 if ((fp = fopen(argv[1], "rb")) == NULL) {
  fprintf(stderr, "%s: %s\n", strerror(errno));
  return EXIT_FAILURE;
 }

 fseek(fp, 0L, SEEK_END);
 size = ftell(fp);
 fseek(fp, 0L, SEEK_SET);

 if ((vector = malloc(size)) == NULL) {
  fprintf(stderr, "out of memory\n");
  return EXIT_FAILURE;
 }

 for (i = 0; i < size && (c = getc(fp)) != EOF; i++) {
  vector[i] = 0;
  for (bit = 7; bit >= 0; --bit) {
   vector[i] <<= 1;
   if ((c & (1 << bit)) != 0) {
    vector[i] |= 1;
   }
  }
 }
 return EXIT_SUCCESS;
}
956デフォルトの名無しさん:02/08/18 12:46
>>955
単にbitの並びを逆転させた配列を作ってるだけのような気がするが。。
957955:02/08/18 14:25
>>956
は?逆転なんかしていませんが。
バイナリモードでファイルを読んで、先頭から1ビットずつ配列に入れる
という要求をそのままコードにしただけですが、何か間違っていますか?
958デフォルトの名無しさん:02/08/18 14:50
ど初心者丸出しの質問で申し訳ないのですが・・・。

マクロ展開後のソースを読む方法を教えて下さい。
(コンパイルオプションだと思うのですが、探し方が悪いためか、
ドキュメントで見つけられず)

使用可能なコンパイラは、

(1) gcc
(2) BCC5.5.1
(3) VC++6.0

の3つです。
(カナリ恥ずかしいですが)よろしくお願い致します。m(_ _;)m
>>958
プリプロセッサ通す。
960デフォルトの名無しさん:02/08/18 14:55
>>959
ありがとうございます。
できれば、具体的な操作方法(またはヘルプ検索のキーワード)を教えて頂きたいのですが。
>>960
man cpp
>>957
読み込んだcをMSBから調べていって、vector[i]のLSBからセット
していくんだから、bitの並びが逆転してるのは間違いない。
それが963の要望とあっているかどうかはわからないけど。
レス数が950を超えています。1000を超えると表示できなくなるよ。
(´・∀・`)ヘー
>>958
VC++6.0ならcl /?でオプションの一覧を参照できるだろ。
967955:02/08/18 19:15
>>962
うだうだ言ってないで動かしてみれ。
>>962
つーか963は別に何も求めてないだろ。
新スレ立ってまふ

C言語なら、俺に聞け! <29>
http://pc3.2ch.net/test/read.cgi/tech/1029605182/l50
さて。
そろそろ
うめとくか
973デフォルトの名無しさん:02/08/19 11:09
scanf("%d %d",from,to);
だろ
埋めなくていいよ。
>>973
ネタですか?ねぇ、ネタですか?ネタって言ってくださいYO!!
>>975
int f, t;
int *from = &f, *to = &t;

ってやりゃいいんだ(w
あ、いや、そうなんだけどさぁ…(笑)。
うめうめ
たてたて
980デフォルトの名無しさん:02/08/20 15:55
標準入力関数のエコーバックって消せますか?
>>980
コンソールの設定変えてくださいな。
>>980
犯罪のにおい
UNIX Cで、分割コンパイルのやり方を教えてください
おながいします

ワケワカンネェヨ ヽ(`Д´)ノ ウワァァァン
>>983
makefileの勉強をしる!
>>983
cc -c a.c
cc -c b.c
cc -c c.c
cc -c d.c
cc -o e a.o b.o c.o d.o
>984
まずはリンカではないかえ?
cat a.c b.c d.c e.c > tmp.c && cc tmp.c
それはむしろ結合コンパイル。
ネタをネタ(略
埋めろー!!
埋め立てですが何か?
cat a.c b.c d.c e.c | gcc -x c /dev/stdin
>992
バカモノ! こうだる!

--- a.cの中にて ---
#include "b.c"

--- b.cの中にて ---
#include "c.c"



それで、cc a.cとすれば完璧。
994折衷案:02/08/22 23:36
for c in *.c; do echo "#include \"$c\""; done | gcc -x c /dev/stdin
995デフォルトの名無しさん:02/08/23 06:05
cc -c a.c
cc -c b.c
cc -c c.c
cc -c d.c
ar q libe.a b.o c.o d.o
ranlib libe.a
cc -o f a.o -L. -le
996げっと
1!
2!
3!
だーーーーーーーーーーーーー!!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。