トップページ⇒tech
1001コメント268KB

C言語のことは漏れらに聞け!!<40>

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C 言語ならオレに訊け。

C 言語じゃないなら訊くな。
問題をちゃんと切り分けて、C の話かそうでないか洗ってから質問してくれ。

つーか訊く前に Web で検索しろ。

コンパイラ探してるなら >>2 を見れ。

GUI とか、C 標準でできない事の質問は使ってる開発環境のスレに逝ってくれ。
ソース丸投は別スレがあるから他に逝ってくれ。
宿題は別スレがあるから他に逝ってくれ。
書籍については別スレがあるから他に逝ってくれ。

・前スレ <39>
http://pc3.2ch.net/test/read.cgi/tech/1036409391/

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
0002デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003デフォルトの名無しさんNGNG
>>1
おつ
0004デフォルトの名無しさんNGNG
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

http://big.freett.com/scheme_a/num1000.swf
0005デフォルトの名無しさんNGNG
1 乙カレー
0006デフォルトの名無しさんNGNG
<ヨンジュー>

とするのが礼儀であろう・・・。
0007デフォルトの名無しさんNGNG
>>4 はえーよ
0008デフォルトの名無しさんNGNG
>>1おっつかれー!
0009デフォルトの名無しさんNGNG
どうでもいいけどさ、
mallocとかreallocとかの
allocってどういう意味?
辞書にものってない・・・
0010デフォルトの名無しさんNGNG
allocate
0011デフォルトの名無しさんNGNG
memory allocate
reallocate
0012デフォルトの名無しさんNGNG
割り付けか!!
ありあとう
0013デフォルトの名無しさんNGNG
all OK
0014デフォルトの名無しさんNGNG
creat
0015デフォルトの名無しさんNGNG
>>1
おつかれ

でもスレッドタイトルもうちょっとひねれなかったの?
0016デフォルトの名無しさんNGNG
スレタイをひねる必要はない。
00171NGNG
どうせ3日で終わるんだから、どうでもいいよ。
0018デフォルトの名無しさんNGNG
さて、3日ももつかな?
0019前スレ944NGNG
あ。「マルチ禁止」 入れるの忘れたよ・・・。
0020デフォルトの名無しさんNGNG
あげ
0021デフォルトの名無しさんNGNG
C言語とは関係ないんだけど、SHIFT-JISの内字っていったい何文字あるんですか?
0022デフォルトの名無しさんNGNG
なんでCと関係ない話するんですか?
0023デフォルトの名無しさんNGNG
>>22
すんません。
CでSJIS⇔UNICODEの変換ツールを作る予定だったもんで。
0024デフォルトの名無しさんNGNG
「内字」ってはじめて聞いた。
0025デフォルトの名無しさんNGNG
int a = 38;
int i;
for(i = 0;i < 32;i++) {
if(a & (1 << i))
printf("1");
else
printf("0");
}

どうもうまくいきません。何がわるいんでしょうか?
0026デフォルトの名無しさんNGNG
>>25
数字を2進で表示するつもりです、とか何をするつもりで、
どううまく行かないかくらいかけよ。
0027デフォルトの名無しさんNGNG
int a = 38;
int i=32;
for(;i--;) {
if(a & (1 << i))
putchar('1');
else
putchar('0');
}
0028デフォルトの名無しさんNGNG
(´-`).。oO(結局、>>1 に何書いても無駄なのかい。。。) >>21 >>25
0029デフォルトの名無しさんNGNG
>>24
外字領域じゃないんで、「内字」でもいいんじゃないですか?
0030デフォルトの名無しさんNGNG
>>29
外人の反対を内人と言わないだろ。
0031デフォルトの名無しさんNGNG
内地人
0032デフォルトの名無しさんNGNG
内地って本州の事だろ
0033デフォルトの名無しさんNGNG
>>21
こういうレベルから全部、人にいちいち聞いて、
sjis、unicodeの変換ツールを作るつもりなのかい。
すげーな。
0034デフォルトの名無しさんNGNG
前スレでヘッダファイルについて質問した香具師だけど
こんなもんが出てきちゃったYO!

■C:\Documents and Settings\C\Pointer> bcc32 list4-8.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
list4-8.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_read_line' が未解決(C:\DOCUMENTS AND SETTINGS\C\POINTER\LIST4-8.OBJ が参照)

間違いなく、同じフォルダにあるYO!
read_line.cも.hもあるYO!
WHY???
0035デフォルトの名無しさんNGNG
bcc32 list4-8.c read_line.c
0036デフォルトの名無しさんNGNG
>>25
ビットが逆順で出るって事か。
if(a & (1 << (31 - i)))
だろ。
0037デフォルトの名無しさんNGNG
>>33
やらなきゃいけないんで。
参考になるサイトとかあったら教えてください。
0038デフォルトの名無しさんNGNG
read_line関数がないだけだろ・・・・
ヘッダーファイルの問題じゃない。
0039デフォルトの名無しさんNGNG
int a = 38;
int i=1<<31;
for(;i;i>>=1) {
if(a & i)
putchar('1');
else
putchar('0');
}
0040デフォルトの名無しさんNGNG
>>37
WideCharToMultiByte と MultiByteToWideChar で検索しろ。
0041デフォルトの名無しさんNGNG
>>35
サンクス
もしかしていちいちこれやんなきゃだめ?
0042デフォルトの名無しさんNGNG
>>34
read_line.c も同時にコンパイルしる。
0043デフォルトの名無しさんNGNG
>>41
CBar で検索しる。
0044デフォルトの名無しさんNGNG
>>40
ありが�d
0045デフォルトの名無しさんNGNG
>>41
MAKE使えるようになれば解決するぞ
0046デフォルトの名無しさんNGNG
ブヒッ?
0047デフォルトの名無しさんNGNG

クワッパ
0048デフォルトの名無しさんNGNG
害厨に毒されて程度が著しく下がってしまった哀れなスレはここですか?
0049デフォルトの名無しさんNGNG
チャット&掲示版
http://www.i-chubu.ne.jp/~tomomi-h/marion/navi/navi.cgi?links=20311
0050デフォルトの名無しさんNGNG
       t    ww              /na
      h t p:/ / w.i-chubu e.   -h/marion
                 .n        vi
                jp/~tom o mi     / na gi?lin
                         vi.c     ks=20
          彡                        311

(,,ノ゚д゚)ノ
0051デフォルトの名無しさんNGNG
最近ようやくポインタが理解できてうれしい今日この頃ですが、
よくポインタを理解したら中級レベルと言いますが、
特定の分野に依存しないところで、
上級レベル、って言うとどんなものがあるのでしょうか?

最近いい気になってる俺を打ちのめしてください。
0052デフォルトの名無しさんNGNG
while文はループの制御を制御する文で判定に使う式が真である間、ブロック・文・空文を繰り返し
実行する。無限ループを作りたい場合は条件式に0を入れれば良い。

これって正しい?
0053デフォルトの名無しさんNGNG
#define kazu(x) kazu(x)*(x)
main(){
int i , j ;
i=kazu(3);
j=kazu(1+4);
printf("%d\n",i);
printf("%d\n",j);
}

されにこのマクロ終わんなくない?
0054デフォルトの名無しさんNGNG
>>51
マゾでつか?
0055デフォルトの名無しさんNGNG
前橋本に文句がつけられるようになる。
0056デフォルトの名無しさんNGNG
条件式に1
0057デフォルトの名無しさんNGNG
とりあえず、7行プログラミング板いってみ
オレはぶちのめされた
7行でオセロできてたYO!
0058デフォルトの名無しさんNGNG
>>56
だよね?
これやってみ
http://village.infoweb.ne.jp/~fwnt6934/something/html/q-c3/q-c3.htm
0059デフォルトの名無しさんNGNG
あれは特定の分野に依存してる・・・かな?
0060デフォルトの名無しさんNGNG
常に真のループはwhile(1)よりfor(;;)がいいと思うのであります。
0061デフォルトの名無しさんNGNG
>>60
なぜ?
てか>>58のサイトひどいね
0062デフォルトの名無しさんNGNG
>>51void (*signal(int signum, void (*sighandler)(int)))(int);この文で宣言されている変数とその型は?
006360NGNG
>>61

whileだと少なくとも"1"を意識する必要がありますが、
for(;;)だと何も意識しないことが期待される動作につながるからであります。
0064デフォルトの名無しさんNGNG
>>58
問3(2)、0 でも 1 でも正解で、2以上の数値 と -1 で不正解なのは意味不明。

>>60
最適化がかかれば 2 つに違いは無い。
最適化されない場合、for(;;) が無条件でループするのに対して while(1) は
毎回 1 を評価する。
0065デフォルトの名無しさんNGNG
>>62
えーと、
signalは、返却値なしで引数intの関数へのポインタを返す関数で、
引数はintと、返却値なしで引数intの関数へのポインタの二つある!
キタ━(・∀・)━!
0066デフォルトの名無しさんNGNG
>>64
0正解?
間違いだろw
Cの真と偽の定義知ってる?
006766NGNG
>>64
すまそ。問題の方ね。
ただの写し間違いとは思えないから
あのサイトの管理人がまちがってんだろ
0068デフォルトの名無しさんNGNG
>>62
前橋・・・
0069デフォルトの名無しさんNGNG
>>65

返り値の型がvoidなのは、返却値なしとゆーより、
返却値はどう使ってもい〜よ〜だと思っていたが、違うかな?
void *とごっちゃになってるかな?俺。
0070デフォルトの名無しさんNGNG
>>69
でもvoid kansu(void)とかでreturnすると
警告でない?使えないんでない?
てかvoid*ってなんだ?
0071デフォルトの名無しさんNGNG
return;
は使える。
0072デフォルトの名無しさんNGNG
>>69
間違い。voidを返す関数というのは何も返さない。
使おうと思っても何も返ってこないのだから使いようがない。
007369NGNG
>>72

レスTHX。やっぱ勘違いしてました。

>>70
void *は何にでもキャストできる汎用型。
オブジェクト指向〜とかポリモーフィズム〜なんてので使った記憶あり。
0074デフォルトの名無しさんNGNG
>>65
char array[5][5];
上記のarrayの型を引数としてarrayの型を返すような関数ポインタfuncpを定義したい。
どうすれば良いか?
0075デフォルトの名無しさんNGNG
char (*funcp)(char array[5][5])[5][5];
0076デフォルトの名無しさんNGNG
>>62
A: int 型の signum
B: int 型の引数を 1 つ取る void* 型関数へのポインタ型の sighandler
C: int 型の引数を 1 つ取る void* 型関数へのポインタ

引数 A、B を取り、C を返す関数 signal のプロトタイプ

変数なんか宣言されてる?
0077デフォルトの名無しさんNGNG
void (*sighandler)(int);
ってわかる?
0078デフォルトの名無しさんNGNG
>>76
されてるが…。
0079デフォルトの名無しさんNGNG
>>64
俺もそう思った。0以外はみんな正解じゃん。
〜以外を入れるという問題かと思って見直しちゃったよ。もしそうなら0が正解だから。
0080デフォルトの名無しさんNGNG
void *(*sighandler)(int);
0081デフォルトの名無しさんNGNG
>>78
仮引数の間違いじゃないのか?
教えてくれ。
変数が定義されているなら、62 のユーザー定義識別子のどれかから sizeof が
取れるはずだが、コンパイルエラーになるのは何故だ?

C++ だが、76 の則って
void (*signal(int signum, void (*sighandler)(int)))(int);
typedef int A;
typedef void (*B)(int);
typedef void (*C)(int);
C signal2(A, B);
とした場合、
cout << "signal : " << typeid(signal ).name() << endl;
cout << "signal2: " << typeid(signal2).name() << endl;
この 2 行は全く同じ結果になる。

>>77
76 の B。
0082デフォルトの名無しさんNGNG
解答ページより
> while文はループの制御を制御する文で判定に使う式が真である間、ブロック・文・空文を繰り返し
> 実行する。無限ループを作りたい場合は条件式に"0を入れれば良い"。

ハァ?
0083デフォルトの名無しさんNGNG
>>77
intをひとつ取り、値を返さない関数へのポインタsighandlerじゃないの?
008477NGNG
>>83
すまん、そーだ。
0085デフォルトの名無しさんNGNG
int *(*pf)(int);
上のポインタ型を返す関数(引数はint)
int *(*(*ppf)(int))(int);

上のポインタ型を返す関数(引数はint)
int *(*(*(*pppf)(int))(int))(int);

上のポインタ型を返す関数(引数は上のポインタ)の配列(サイズは10)
int *(*(*(*(ppppf[10])(int))(int))(int))(int *(*(*(*)(int))(int))(int));
008684NGNG
漏れ 77 じゃなくて 76 だよ・・・鬱
008762NGNG
ごめん、プロトタイプだった。

こう書けばよかったね。
void (*(*signal)(int signum, void(*sighandler(int))))(int);
0088デフォルトの名無しさんNGNG
>>85
二番目は関数ポインタ(?)を返す関数へのポインタと考えればいいのか?
0089デフォルトの名無しさんNGNG
最後間違った!
int *(*(*(*(*ppppf)(int *(*(*(*)(int))(int))(int)))(int))(int))(int);
009081NGNG
>>88
内側から 1 コずつ typedef していけば、なんとなく分かるよ。
0091デフォルトの名無しさんNGNG
s/ppppf/ppppf[10]/
0092デフォルトの名無しさんNGNG
>>75は正しいのか?
0093デフォルトの名無しさんNGNG
>>92
char array[][5]でいいと思う。
0094デフォルトの名無しさんNGNG
しかし、関数ポインタのネストって普通しないんじゃないか?
するにしても、難読になってくる前に typedef すると思うんだけど。
85-89 みたいなコードを生で書いてる(書く方針の) 人っている?
0095デフォルトの名無しさんNGNG
>>93
74 を見る限り、引数は char array[5][5] でいいだろう。
0096デフォルトの名無しさんNGNG
関数へのポインタを返す関数の使い道が経験の浅い僕にはわかりません。
009785NGNG
なんだか説明が変だな。
正しくは、「上のポインタ型を返す関数(引数はint)へのポインタ」だな。
しかも間違ってるし。>>91thanks

>>94
ふつうはせいぜい関数ポインタを返す関数までだな。
それでもtypedefする。
まあ、パズルというか言葉遊びということで。
0098デフォルトの名無しさんNGNG
C FAQの14.5:
2つの浮動小数点の値が"十分近い"ことを判定するよい方法は。
http://www.catnet.ne.jp/kouno/c_faq/c14.html#5
を見て思ったんですが、精度の敷居ってどういう事でしょうか?
epsilonをどのように選べばよいのかわかりません。
0099デフォルトの名無しさんNGNG
>>96
関数テーブル
int Hoge(int a) { return a + 1; }
int Huge(int a) { return a + 2; }
int Hage(int a) { return a + 3; }
int (*funcs(const char *funcname))(int)
{
if(!strcmp(funcname, "Hoge")) return Hoge;
if(!strcmp(funcname, "Huge")) return Huge;
return Hage;
}
0100デフォルトの名無しさんNGNG
必要な精度にすればいい。
0.00000001でよかったらそれでいい。
0101デフォルトの名無しさんNGNG
>>99
<float.h> の DBL_EPSILON や FLT_EPSILON でも使ったら?
漏れもよくわからない。
<float.h> はいろんな定数が定義されてるよ。
■ このスレッドは過去ログ倉庫に格納されています