C言語の質問スレッド<42>

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語に関する質問はここでしてください。

問題をちゃんと切り分けて、Cの話かそうでないか洗ってから質問してくれ。
というより、聞く前に一応 Web で検索しろ。
コンパイラを探してるなら >>2 を見ろ。
過去ログ(DAT落ちあり)なら>>3-100あたりにあるかも。

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

未定義・処理系依存ネタはご遠慮ください。
誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。
規格オタクはこのスレッドには必要ありません。論争したかったら独自にスレッドを立ててそこでやってください。


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/


前スレ <41>
http://pc3.2ch.net/test/read.cgi/tech/1036876790/
2デフォルトの名無しさん:02/11/12 20:39
【コンパイラ】
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
3デフォルトの名無しさん:02/11/12 20:42
4デフォルトの名無しさん:02/11/12 20:42
>>1
オレに聞け!が伝統だったのに…
まあ、どうでもいいけどさ。
6デフォルトの名無しさん:02/11/12 20:53
>>5
まあ、1が馬鹿ってことで。
>>1
> 未定義・処理系依存ネタはご遠慮ください。
> 誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。
> 規格オタクはこのスレッドには必要ありません。

はあ?
個人的な好みで勝手に禁止事項作るなボケ!
このスレは未定義ネタで食わしてもらってんだぞ。
> 未定義・処理系依存ネタはご遠慮ください。
> 誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。
> 規格オタクはこのスレッドには必要ありません。論争したかったら独自にスレッドを立ててそこでやってください。
つまらない自治オタクもいらないな。
まぁ、過去ログを纏めたことだけは感謝する。

前スレの
> 上記を守らない書き込みをした場合、その結果は禿しく未定義とする。
が、俺はC的で秀逸だと思ったのだが...。
>>7
お前らのせいであっという間にスレを使いきってしまうんだろうが。
最近のCスレは だいぶ厨房が多いな。
日下部ほどではないけども。
どこかの雑誌にでも出たのだろうか。
宿題丸投げとかも増えたし。

突っ込まれたらすぐに「ネタ」ってことにしたがるし。
>>1
> 誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。

親切にバグを教えてやってるんだろうが。
12デフォルトの名無しさん:02/11/12 21:10
ビット演算子について教えてください。
どんなときに使うとメリットがあるのでしょうか?
(単純に2の倍数の割り算とかは辞めてください。)
ビット演算子??
とりあえず、次スレ使い切るまでsage進行でいこう。
1を叩くのは、次スレが終わるまでってことで。
このスレの寿命:推定3日間
>>9
未定義ネタ禁止にしたら商売上がったりじゃねーか。
こちとらボランティアで書き込みしてるんじゃないんだぞ。
お!?
早速論争か!?
せめて900越えてから、新スレ作ればいいのに。
1はよっぽど自分でスレ立てをやりたかったんだな。
>>18
漏れもそんな気がした。
つーか1出てこいや。
>>18
http://pc3.2ch.net/test/read.cgi/tech/1036876790/859

これ、そろそろ立ててくれという意味じゃなかったのか(;´Д`)
2221 1:02/11/12 21:23
>>20
なんですか?
くだらないことで言い争う厨房が増えてきたんだから、論争はさけられないでしょ。
議論はお互いの知識の交換なのだから悪いことではないと思うが。
こんなスレの立て方最低。
質問スレで論争していると初心者が質問しにくくなるかもな。
>>5
同意。オレに聞け!がよかったのになぁ。
あと1の『俺は28才(以下略)』とかはもう無いのか・・・?
個人的にはあれ好きだったんだが・・・

スレタイもなんかレベルが下がってる気が・・・
             ∧         ∧               ###
            / ヽ        ./ .ヽ             /#####ヽ
           /   `、     /   .`           /  ##### \
          /       ̄ ̄ ̄    ヽ          /   #####  ヽ
          l:::::::::              .l       /    #####   ヽ
         |::::::::::  -==・-    -==・-  |      |          ::::::::: :::::::|
         .|:::::::::::::::::   \___/    |      |  -・==-   -・==- :::::::::|
          ヽ:::::::::::::::::::  \/     丿      |    \___/  :: :::::::|
          ヽ:::::::::::::::::        /       ヽ      \/    ::::::::::|
     ____>:::::::::::::::::       <_        ヽ        ::::;;;::::::::丿
    /:::::::::::::::::::::::: :::::::::          /⌒ヽ⌒、⌒、⌒、      ::::::::: :<___
    |::::::::::::;;;;;;;;;;;;;:::::::::::::::        / /ヽノヽノヽノヽノ       :::::::::::::  :::::::: :::ヽ
   |::::::::::::::::::::::::            /  /:::::::: :::::::::::::::::::::           ::::::::
          論争論争いこうか?             いいねぇ〜
まあ、なんだかんだいいつつ、質問+論争スレになるんだけどね。
論争ってのは大抵質問がきっかけになることが多いかんね。
age
31デフォルトの名無しさん:02/11/13 01:19
are
新スレおめでとうございます。 
 つきまして、ユーザーが指定した数を
カウントする関数を教えてください。
i2=3;
j2=4;
ij=i2*j2;
if((str1=(int**)malloc(sizeof(int*)*i2))==NULL){
printf("メモリー確保の失敗:1");
exit(1);
}
for(i1=0;i1<i2;i1++)
if((str1[i1]=(int*)malloc(sizeof(int)*j2))==NULL){
printf("メモリー確保の失敗:2");
exit(1);
}


for(i1=0;i1<ij;i1+=j2){
putchar('\n');
for(j1=0;j1<j2;j1++){
printf("%c",str1[i1/j2][(len++)%i2]=('A'+i1+j1));
}
}
putchar('\n');
for(i1=0;i1<i2;i1++){
putchar('\n');
for(j1=0;j1<j2;j1++)
printf("%3d",str1[i1][j1]);
}
ユーザーが指定した数をカウントする関数てなによ?
もっと具体的に書けねぇの?
その訳分からんプログラムはなんだよ?
新手の荒らしか?
この手のネタにはもううんざりなんだよ
>>32
ごめん、何がしたいのかまったくわからない。
35デフォルトの名無しさん:02/11/13 01:27
if文において、nが奇数の時としたいとき、どうすればいいですか?
整数なら if(n & 1) とか if(n % 2)
37デフォルトの名無しさん:02/11/13 01:30
>>35
if(n&1){ /* 奇数の時 */ }
3832:02/11/13 01:37
まず、i2とj2にユーザーが指定した数字を入れる。
 この場合

ABCD
EFGH行/*3行4列の配列*/
IJKL
/*下と上が、一致する事を目標としている*/
68 66 67205
71 72 70205
74 75 76205 といった結果がでる
39デフォルトの名無しさん:02/11/13 01:37
>36-37
おお、ありがとうございます。
こんな時間に助かります、まじで。
if(n%379721){ /* 奇跡の時 */ }
ところで、
if (flag == true)
と書いたって、flagが87や-1や1000にならないという保証は
何もないよね?
>>41
なんのことかしらんが、代入しているわけじゃないからflagはかわらんだろ?
違うのか?
>>41
if (flag) と書いても if (flag == true) と書いても
flagの値が何であるかの保証にならないのは同じ。

if (flag) のとき、Cの真偽の定義(0か0以外か)がそのまま使える。
if (flag == true)は冗長なだけで利点は何もない。
4435:02/11/13 01:42
おおお!!
成功しました。
まじで、ありがとう。
>>40
if ( !(n % 379721) ) { /* 奇跡の時 *? }
じゃなくって?
flagが87だろうと-1だろうと1000だろうと==trueは真だよね?と聞きたいのだろう。
4740:02/11/13 01:44
>>45
そうですた。
4832:02/11/13 01:44
本や2ちゃんねらは、あてにならないのでこのカウントする
プログラムでC言語を実験することにした。 
4946:02/11/13 01:44
ごめん。間違いた。
>>48
頭は大丈夫ですか?
前スレで
「if (flag == true)と書くと、flagの値が真偽値であることが
はっきりする」
と書いてた白痴がいたんだよ。
ここはみっともないインターネットですね。
5332:02/11/13 01:47
 >>50う〜ん!!どこか渡し、アタマ変でチュカ・・・!
   まともな事書いてるつもりなのにょににゃ〜。
>>32は真性?
話の前提は
C99ではないCで
#define false 0
#define true 1
int flag;
 :
 :
if(flag == true)
とする。
> 俺あんな次スレやだよ。伝統守って欲しいよ。だからこれきぼん。

タイトルが〜に聞けじゃなかったことなんて何回かあったと思うが・・・
前スレ1000にワロタ
>>51
あれはネタだって
そんなに型を確定させたいなら、
if( bFlag )
とかにでもしとけ
つーかさC言語しか知らん奴が多すぎ。もっと広い目を持て。
6132:02/11/13 01:49
 このスレに、ジサクジエンがいまちゅね・・・!!
 >>54
ハンガリアンキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
あの熱さはネタじゃない。そうさ、奴はいつだって全力投球さ。
>>60
Cスレで何言ってんだ
65デフォルトの名無しさん:02/11/13 01:50
if (flag)擁護派はC言語しか知りません。
>>65
>>65
Cスレで何言ってんだ
>>65
PerlでもPHPでもそう書いています。
>>65-66 ジサクジエーン
>>68
JavaやC#やVB.NETではどうですか?
>60

#define begin {
#define end }
とかやる人でつか?(w
で、この話題で得ってあんの?
1レス10円だそうです
なんでCスレで他の言語を持ち出すのか謎。
>>74
C使いが他の言語を知っていることを証明するためです。
7632:02/11/13 01:54
 このソースを愚弄した奴がわるい。

i2=3;
j2=4;
ij=i2*j2;
if((str1=(int**)malloc(sizeof(int*)*i2))==NULL){
printf("メモリー確保の失敗:1");
exit(1);
}
for(i1=0;i1<i2;i1++)
if((str1[i1]=(int*)malloc(sizeof(int)*j2))==NULL){
printf("メモリー確保の失敗:2");
exit(1);
}


for(i1=0;i1<ij;i1+=j2){
putchar('\n');
for(j1=0;j1<j2;j1++){
printf("%c",str1[i1/j2][(len++)%i2]=('A'+i1+j1));
}
}
putchar('\n');
for(i1=0;i1<i2;i1++){
putchar('\n');
for(j1=0;j1<j2;j1++)
printf("%3d",str1[i1][j1]);
}
Lisp では
(if flag <then節> <else節>)
(if (eq flag true) ...) なんて書くやつぁDQN

ML では
if flag then <then節> else <else節>;
if flag = true then .. なんて書くやつはDQN
プログラミング初心者の方へ:

たいていの言語では、

0 - 偽
それ以外 - 真

と評価されます。
俺としては
if(flag)
これは良いんだが(というかしょうがない)
if(!flag)これも併用すると複雑な式の中で'!'を見逃す可能性があるから
if(flag == FALSE)と明示した方が良いと思うが。

if(!*s)やif(!s)では意味が違う訳だろ?
簡潔だが見間違いが起こりやすい。
if(*s == '\0')
if(s == NULL)
これなら明解だろ。
>>75
ネタは他いけ。
8132:02/11/13 01:56
 わかっとるわ〜い( ゚Д゚)ゴルァ!
>>79
それは誰も問題にしてない。
前提は>>55
>>76
そのソースを愚弄したんじゃなくて、意味不明な質問を注意したんでしょ?
>>78
おまえのいう「たいていの言語」ってなんだよ?(ワラ
(´-`).。oO(DQNの>>75祭りの予感…)
>たいていの言語
CスレなんだからCの話すればいいじゃんよ・・・
>>84
無知だな(藁
32 ってまじやばくない?
さっきから挙動不審なんだけど?
CならCらしいプログラムを書く。
他の言語ならその言語らしいプログラムを書く。

これじゃだめなのか?統一しないとだめなのか?
Cで叩かれたので他の言語を持ち出して優位になろうと必死
しかしスレ違いでまた叩かれる罠
Javaだとそもそもif文の条件にはboolean型しかかけない。
だからif (flag == true)なんて書くアフォはいない。
Cでこの程度じゃ(以下自粛
>>87
おまえは無知かつ無恥だな(W
9432:02/11/13 02:01
 だったらこれ、一致させてみてくだちゃい。
  なお、printf("%3c",str1[i1][j1]);修正したぞ

ABCD
EFGH
IJKL

D B C ヘ
G H F ヘ
J K L ヘ
>>82
無意味なことをしているという点では同じだろ。
つーかこっそりと去ればいいのにこじつけるからまた叩かれるんだよな・・・
これで統一すれば解決。論争は起こらない。
if (flag == FALSE){
}
else{
/* 処理 */
}
>>94
目的を明確にしないと分からないんだってばー
>>91
へー。Javaはifではboolean型しか書けないのか不便だな(w
>>97
うひょーーー!とんでもないあふぉ発生!
もしflagがtrueかfalse(=0)しか取らないなら、
if (flag == true)は単に冗長で無駄で見にくいだけ。

もしflagがtrueやfalse以外もとるなら、
if (flag == true)で真偽をテストするのは単なる間違い。
>>100
これ以上醜態を晒すな
>>97
そんなのむだ。
if (flag){
/* 処理 */
}
else{
}
でいい。
今日は、(・∀・)イイ!!
>>99
これだから C 言語しかしらないやつは.......
「if(flag==true)が可読性が上がって良い」と言ってる奴が去って
実はもうこの話題は終了してる罠。
>>103
それをやるとif(flag == true)の方がと言い出す奴がいるから
>>97のように書いたんだが。
Javaではifでbooleanしかかけないので、==を=と書いてしまう
バグはめったに起きない。

起きるとしたら普段if (flag == true)と書いてるアフォが
if (flag = true)としちゃったときだけ。
109デフォルトの名無しさん:02/11/13 02:05
おやおや、またbool争いですか?

結局ifの中にbool以外を書けるC言語の仕様が糞ということでしょ。
11032:02/11/13 02:06
 だから、ユーザーが指定した数をカウントする関数
 をつくるのが目的なんだよ。
   for(i1=0;i1<ij;i1+=j2){
putchar('\n');
for(j1=0;j1<j2;j1++){
printf("%c",str1[i1/j2][(len++)%i2]=('A'+i1+j1));
}
}
for(i1=0;i1<i2;i1++)
for(j1=0;j1<j2;J1++)
 str[i1][j1]=i1+j1ではカウントできなでしょ。
  色々、試していくうちにこう言う形になったんだよ。
 
32の主治医でs(略
11232:02/11/13 02:08
>>111おまえ、完全に荒らしじゃねか〜.
じゃあ!!どの変がやばい・・・いってみろ
>>108
> 起きるとしたら普段if (flag == true)と書いてるアフォが
> if (flag = true)としちゃったときだけ。
それってJavaの話だよね。そんなことって出来たっけ?
>>32
( ゚Д゚) ポカーン……
カウントするだけで配列、それも二次元配列使うのがよくわからん。
>>109
bool以外を書けたほうが便利だろ。
ソース読んでないけど、そもそも「ユーザーが指定した数をカウントする」
ってのが具体的に何をすることなのかよく分からない。


 >>32 は こ の 先 放 置 で お な が い し ま す
boolの話はもう終わってるし、>>32は違う意味で終わってるから、
他の話題きぼんぬ。
>>116
だから、具体的にどんなときだよ
ってこれ昨日もでたネタだな
>>116
単に !=0 が省けるだけやん。
そのおかげでどれだけみんな苦労してるか。
>>120
Cの実装が楽になる。
>>121
苦労するほどのものか?
>>121
同じ処理をするならソースは短い方が無条件に(・∀・)イイ!!
>>122
C の実装?????????????????????

          釣  ら  れ  る  な

12732:02/11/13 02:16
 >>115ご返答・・・ありがとうございます。C言語いじってるうちに
 配列の格納にABC
DEF
GHIのようにカウントできたらいいなと思ったんです。
  C言語は、人によって色々記述がかわってくる。 それが、
 特徴であるはず。 まあ、わかりやすいはべつだが。

  つまり、めんどくさかったんです。strcpy(str[i],"ABC");のように
 するのが。  今はint型だけど、最終的にはchar型にも
 
 使えるようになったらなと思って作ったのよ。
128デフォルトの名無しさん:02/11/13 02:16
>>29
やっぱりな(ワラ
>>103
俺の場合は判定はエラー捕獲が多いから

if(flag == NULL){
/*エラー処理1*/
} else if(flag2 == NULL) {
/*エラー処理2*/
} else {
/* 通常処理 */
}
と書く時が多いな。最後のelseを省略すると更に簡潔になる。
因みに同じ事をTRUE判定でやろうとすると,

if(flag) {
if (flag2) {
/* 通常処理 */
} else {
/* エラー処理2 */
}
} else {
/*エラー処理 */
}
ネストができ、elseも取り除けない。
「プログラム作法」で学んだ。
あのな、boolしか書けないようにしとけば、
== と = を取り違えるバグが99%くらい
無くなるだろうが。
>>124
7行スレへカエレ!
32 は何?
アルコール? クスリ? ビョーキ?
133129:02/11/13 02:18
s/NULL/FALSE/g
だった、失礼。
>>129
flagにポインタ入れんなよT_T)
>>129
まじか?
if ( !flag )
で解決だと思うんだが
136デフォルトの名無しさん:02/11/13 02:19
>>127
カウントって数えるという意味で使っているよな?
>>135に激しく同意。
if not (condition...)と読めたほうが素直だね。
>>129
なぜNULLなんてものを使う? これでいいだろ。
if(!flag){
/*エラー処理1*/
} else if(!flag2) {
/*エラー処理2*/
} else {
/* 通常処理 */
}
>>130
でもそれ警告してくれるじゃん
14132:02/11/13 02:21
 >>136 これ以上、折れになんの答えを求める。 なぜ、実際に
 みてわかろうとしない。
!flagかflag==FALSEなんかスタイルだろ。
スタイル論争は不毛だからやめてクレヨン。
>>32
誰が見ても理解不能。ちゃんと説明シレ。
>>113
>> if (flag = true)としちゃったときだけ。
>それってJavaの話だよね。そんなことって出来たっけ?
できるよ。
>>135
flag==FALSEは
flagがFALSEな時は特別な場合でそれを強く明示できる効果がある。
別に!でも悪くは無いが。
上に書いてあったがif(!s),if(!*s)のようなケアレスミスも起こりやすい。
(起こす方がバカと言うのは無しね。)
>>140
毎回警告に従うくらいならエラーの方が良い。
!sがなぜミスを起こしやすいのか分らんが...
フォントが小さいのでは?
if ( (a = true) && (b = false) && (c = true) )
こういうのは gcc では -Wall しても警告してくれないね
>>141
あーーーー!!
もしかして配列の添え字に文字列を使いたいとか思っている?
Perlなどでお馴染みの連想配列のように。
最近「そうだったのか!勉強になったYO!」という話題が無いな・・・
151149:02/11/13 02:25
でないと配列に格納するときにカウントってのがさっぱりわからん
15232:02/11/13 02:25
 >>132 からっている、バカリでなくその根拠を述べよ。
  折れのソースのどこがやばい・・・。
>>145
慣れだと思う。
>>144
そうだっけか。それが出来ないのはC#だっけ?
>>135
*p++ = *q++ も警告してほしいか?
コンパイラに、=が正しいか==が正しいか区別できるか?
(人間でもぱっと見 まようけどなー)
ぱっと見 まようようなコードは書くな。
15732:02/11/13 02:29
>>149 まあ、ハッシュを使えばそうなるが。
  色々と、C言語のポインタとかにも悩んでいてな。
   型の性質を、知るためにこれで実験してるわけだ。
  色々と・・・・。
>>155
だれにレス?
159155:02/11/13 02:33
>>135じゃなくて>>140ですた。
160109:02/11/13 02:34
反論が無いのでオレの言うとおりとする。
>>159
ああおれか、
警告出して欲しくないのは括弧でくくってる。
詭弁の特徴のガイドライン
4:主観で決め付ける
147 :デフォルトの名無しさん:02/11/13 02:24
!sがなぜミスを起こしやすいのか分らんが...
フォントが小さいのでは?
このスレ、さっさと1000付けてセンスのある別の1の次スレきぼんぬ。
>>162
議論に負けると必ずそれ出すやついるけど、同一人物か?
>>161
うん。そうするくらいなら
(*p++ == *q++)と
(*p++ = *q++) != 0と
書き分ければよいだろう?

(*p++ = *q++)と書ける便利さが、
これをエラーにしてくれるときの安全さを
上回るか?というと疑問だと思う。
・・・なのでは?

これって決めつけだったのか。
16732:02/11/13 02:38
 >>163 確かに・・・。 人のソースを読まずに馬鹿にする奴だからな。
>>32

int a;
printf("整数を入力しる:");

scanf("%d",&a);

printf("入力された値は %d ですが何か?",a);

っでカウントしたことにならんのか?
!sがミスを起こしやすいってのは主観的だよね。
それもかなり偏った…
>>169に禿同。
>>169
ネタはもういいって。
安全を犠牲にして便利さを追及するやつは原子力推進派
詭弁の特徴のガイドライン
7:的を射たことを言われると「ネタはもういい。」と言う。
詭弁の特徴のガイドライン
4:主観で決め付ける
!sがミスを起こしやすいってのは主観的だよね。
それもかなり偏った…
17532:02/11/13 02:42
>>168 ならないのです。 あくまでも、カウントって
 count++;みいたいに、1,2,3,4,5,6←これが、カウントだ。
  まあ、こんな簡単なんじゃないけどね。
   ようは、for文を使った簡潔な記述をしたいわけ。
>>171
ワラタ
>>32
まずは日本語の勉(ry
178170 ( != 169) だが…:02/11/13 02:43
if(!flag)でいいだろ?
簡潔に逝こうよ…
C++で、
if(HOGE *p = get_hoge())
って書けるくせに
if(a = b)
の警告は、お節介。

C++で、
if(HOGE *p = get_hoge())
って書けるくせに
>>175
for(i=0;i<j;i++)
printf("%d,",i);

こんな感じじゃだめなのか?最後に,がついてしまうのは自分でなんとかしろ。
>>32
int main( void ) {
int i;
puts ( "好きな所で止めろ" );
getchar();
for ( i = 1; ; i++ ) printf ( "%d\n", i );
return 0;
}
18232:02/11/13 02:44
 うっせよ・・・>>177
  これの、どこが理解できない。
だからスタイルに答えなんかでないんだって・・・
>>173
詭弁ってのはもう少し上等だよ。
どこが間違ってるか一見わからないようなもの。

! s が読みにくいなんていう、一見してジョークと分るのは
ネタという。
>>173
煽りに堪えてよく煽り返した、感動した!
>>184
厨房のガイドラインの方がよかったか?(ワラ
>>32
おまえ、「たこくじら」だろ、マスターネットに居た。
煽りに堪えかねて煽り返したわけだが
>>186
同意
19032:02/11/13 02:47
 >>181 いやオもろいけど・・・。おもろいけど
  while(kbhit())関数使おうよそんなANSICに違反した書き方
 はいいから。
>>32はリアル厨房じゃねーの?
!が見にくい老眼の人は、
#define NOT !
とか、
#define IS_FALSE(x) (!(x))
とかしとくと良いと思う。
193もまずにパピコ:02/11/13 02:48
>>191
ひとりでままごとしてるんだからほっといてやれ
だれにでも分かりやすいスタイル
if(flag==FALSE)

そうでないスタイル
if(!flag)
>>194
まだいたの
>>190
ANSI Cに違反していないだろ。
ANSI Cの標準ライブラリにない関数を使っているだけで。
あー、コーディングスタイル論争うぜー
>>194
そのネタ飽きた。
人のソースもろくすっぽ読んだ事の無いアホな>>184が何か言ってますよ、Knuthさん。

ループ
>>197
あー、こーでぃんぐ すたいる ろん あらそうぜー
に見えた
>>194
そういう変わったスタイル押し付けるのはやめようぜ。
なんか今日はろくな話題がないな。
スレタイの伝統を破ったせいかな。
このネタで朝まで逝けそうだ(藁
>>203
伝統ならとっくに破られていたような・・・
>>203
「スタイルの伝統を破った」に見えた。
疲れてるんだよ。
11:レッテル貼りをする
192 :デフォルトの名無しさん:02/11/13 02:48
!が見にくい老眼の人は、
20932:02/11/13 02:52
 
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< >>1がド厨房。
 (    )  \_________
  | | |
 (__)_)
てか
if ( flag == FALSE )
がいいなんていってんのは独りだけだろ?
336: C言語の事訊いて!!!第.38支部 (1001) 
>>194
OK,わかった。
老眼の藻前に!sと書けとは言わんから、
その変態的スタイルを主張しつづけるのはやめろ。
今度は32が>>1をたたき出したぞ(稿
>>194必死だな(藁
見づらかったらフォント替えれ。
>>211
同一人物
>>210
俺以外に言っている奴がいることは確かだ。
そんなスタイルどっちでもいいって。
>>217
じゃあ二人か?
ばかばっか
>>220
オマモナー。
>>194
ひょっとしてチミは
if (isalpha(c) == FALSE)
と書くのか!?
if(!flag)
こんな書きかたするから見にくい
if ( !flag )
スペースを有効に使え
4:主観で決め付ける
210 :デフォルトの名無しさん:02/11/13 02:52
  てか
  if ( flag == FALSE )
  がいいなんていってんのは独りだけだろ?
>>222
んなセンスないことしたら、せっかくis...と名付けてるのが
だいなしじゃん。
>>224
いいかげんあきた
>>223
ふつー
if (! flag)
だろ。
22832:02/11/13 02:57
          ||
  ∧_∧     ||
 ミ,,・∀・ミ Λ_||_,,,
 (シ  つ(;;;。∀゚;.)   ∧_∧
@ミUノ  (:#," @  _(・∀・,∩ ヒィーヤッホウゥウ
      |,;.#;|';::.|⊂____つノ
      (__)_)
  __∧__________
/ ボロボロになってきたデチ

>>227
んなぁやつぁいねぇ
たしかに飽きた。
だからお前は勝手に==FALSE書いてろや。
一緒に仕事しない限り文句は言わん。
8:知能障害を起こす
226 :デフォルトの名無しさん:02/11/13 02:57
  >>224
  いいかげんあきた
>>229
K&RもGNUも>>227
>>232
K&R は知らんが GNU はクソ
>>223
括弧の内側に空白あけるのは典型的DQN
>>222
194じゃないけどisalpha(c)は日本語にすると「アルファベットか?(c)」だから==FALSEは書かない。
23632:02/11/13 03:01
 >>277 無能な>>1を、あの世に送ろうぜ・・・
>>233
お前は勝手に「俺スタイル」で書いてればいい。
だから、世の中の人々のスタイルに口を出すな。
つーかスタイル論争自体むだむだむだ
>>237
Linus たんが言ってたのよ〜
今日は一段と厨房レスばかりだな
>>235
だから!で良いんだろ?
>>240
さらに脳障害もいる。
昔は、if(hoge == FALSE)なんて書いたらアホコード吐いたんだよ。あほ。
あと、
return(x);
みたいに書くやつ。
関数と文の区別がついてないんじゃないか?
245若造:02/11/13 03:04
>>243
どんな?
すべて1が悪い。
ダメだこりゃ
24832:02/11/13 03:05
>> 237 これの、どこが世の中に人々のスタイルなわけ。
 >>32
int main( void ) {
int i;
puts ( "好きな所で止めろ" );
getchar();
for ( i = 1; ; i++ ) printf ( "%d\n", i );
return 0;
}
>>248
もう黙れよJPS
>>248
お前、>>1が気に入らないからこのスレをつぶそうとしているだけだろ?
ishoge系はこう書く。
if(isalpha(c)){
} else if (isdigit(c)){
}
あるものの否定を考えるよりも何かに合致してるかどうかを考える方が安易。
!をやたら使いたがる奴はDQN。
>>32
なんか読みにくかったから、手を入れてみた。
  int m = 3;
  int n = 4;
  int **str;
  int i, j;

  if ((str = (int**)malloc(sizeof(int*) * m)) == NULL) {
    printf("メモリー確保の失敗:1");
    exit(1);
  }
  for (i = 0; i < m; i++) {
    if((str[i] = (int*)malloc(sizeof(int) * n)) == NULL) {
      printf("メモリー確保の失敗:2");
      exit(1);
    }
  }

  for(i = 0; i < m; i++){
    putchar('\n');
    for(j = 0; j < n; j++){
      str[i][j] = 'A' + i * n + j;
      printf("%c", str[i][j]);
    }
  }
  putchar('\n');
  for(i = 0; i < m; i++){
    putchar('\n');
    for(j = 0; j < n; j++) {
      printf("%3d",str[i][j]);
    }
  }
253252:02/11/13 03:08
表示結果
ABCD
EFGH
IJKL

65 66 67 68
69 70 71 72
73 74 75 76
スタイル厨必死だな
25532:02/11/13 03:08
 ああ・・・。 だったら、これ答えてよ
i2=3;
j2=4;
ij=i2*j2;
if((str1=(int**)malloc(sizeof(int*)*i2))==NULL){
printf("メモリー確保の失敗:1");
exit(1);
}
for(i1=0;i1<i2;i1++)
if((str1[i1]=(int*)malloc(sizeof(int)*j2))==NULL){
printf("メモリー確保の失敗:2");
exit(1);
}


for(i1=0;i1<ij;i1+=j2){
putchar('\n');
for(j1=0;j1<j2;j1++){
printf("%c",str1[i1/j2][(len++)%i2]=('A'+i1+j1));
}
}
putchar('\n');
for(i1=0;i1<i2;i1++){
putchar('\n');
for(j1=0;j1<j2;j1++)
printf("%3c",str1[i1][j1]);
}

return 0;
}
脳障害の>>242が何か言ってるな。
>>252
if ((str = (int**)malloc(sizeof(int*) * m)) == NULL) {
じゃなくて
if (!(str = (int**)malloc(sizeof(int*) * m))) {
にしろって。話聞いてなかったのか?

258252:02/11/13 03:10
>>32
で、どうすりゃいいわけ?
{x^(-2/3)}・{(1-x)^(-1/3)} ← これを表わすのに、
pow(x, -2/3)*pow(1-x, -1/3) ← この書き方で合ってますか?
>>251
へえ。じゃあ「アルファベット以外」ってどう書くのさ。
「アルファベットでも数字でもない」ってのは?
261252:02/11/13 03:11
>>257
聞いてなかった。
26232:02/11/13 03:11
>>252 まあ、大分内容は変わってるが参考にはなりそうだ。
整数/整数って浮動少数で評価されたっけ?
>>259
合ってません。整数/整数は切り捨てて整数になります。
>>263
されないけど、powに渡せば結果がdoubleになるだろ?
>>264
あの、>259のような場合どういう書き方をしたら良いですか?
>>265
渡す前に切り捨てられちゃうって…
268デフォルトの名無しさん:02/11/13 03:13
str = (int**)malloc(sizeof(int*) * m);
if (!str) {
269265:02/11/13 03:13
あー、この場合はわり算をするときにdoubleでやらないといけないのか。
.0をつければOKだよね
270デフォルトの名無しさん:02/11/13 03:13
pow(x, -2.0/3)*pow(1-x, -1.0/3)
>>266
分母の前にでも (double) 入れろ
>>260
人に聞く前にコード書いてみたらどうかな、お馬鹿さん。
{x^(-2/3)}・{(1-x)^(-1/3)}
pow(x, -2.0 / 3.0) * pow(1.0 - x, -1.0 / 3.0)
>>268
なんでわざわざ二つに分けるんだ? 一行でいいだろ。
27532:02/11/13 03:15
>>252>>32は、別人なのでは・・・
>>274
そんな簡単に釣られるなよ(w
>>272
if(isalnum(c)){
/* なにもしない */
}
else{
/* ここでなにかする */
}

これくらいしか思いつかない・・・・
>>277
んなことするやつぁ超DQNの馬鹿
>>278
だって!を使ってはならないって言うし!
if (!(str = (int**)malloc(sizeof(int*) * m))) {
なんて書く奴はDQN

>>274
何でもかんでも一行で書かないとダメな人?
>>272
ん? おれは「!マンセー」派だもの。
読みやす〜く
if (!isalpha(c))
if (!isalnum(c))
と書くわさ。

あんたは!使わずにどう書くんだい?
>>280
禿同!!
if ((str = (int**)malloc(sizeof(int*) * m))==NULL) {
の方が見やすいと思うが。
>>279
!を使わないやつはDQN
真似するとDQNが移る。
>>284
おまいの感覚を疑う
287268:02/11/13 03:20
>>274
while では一行でかくこともある。
でも if では必要ない。
>>286
世の中の教科書もFAQも規格も全部こうだゴラァ
疑うなら自分の感覚だろ。
>>284
str = (int**)malloc(sizeof(int*) * m)
if (str == NULL) {
の方が一番イイ!
>>288
>>世の中の教科書もFAQも規格も全部こうだゴラァ
知障か?
>>287

else ifだとどうなるんだ?
>>288
ウソツキ。
fopenも

fp=fopen("32.aho","r");
if(fp==NULL){
}

こう書くかな。
if(!(fp=fopen("32.aho","r"))){ } とかくこともあるけど。
>>287
whileならいいのにifはダメかよ。
なんちゅー一貫性のなさだ。
295デフォルトの名無しさん:02/11/13 03:23
else {
str = ...
if (str)...
}
29632:02/11/13 03:23
  >>252 恩に着る アフォに汚染されるところだった。
297252:02/11/13 03:23
もしかしてこんな関数を作りたかったのか?
void count(int **str, int m, int n, int base)
{
  int i, j;
  for(i = 0; i < m; i++){
    for(j = 0; j < n; j++){
      str[i][j] = base + i * n + j;
    }
  }
}

使い方
count(str, m, n, 'A');
>>294
あふぉか?
while はどうしても2行にわけられないときがある
if は必ずわけれる
>>298
else if の中だとどうするんだ?
30032:02/11/13 03:24
 >>297助かります。ガンガン持ってきて。
301一番叩かれる意見:02/11/13 03:25
mallocなんて戻り値チェックしなくていいよ。
303デフォルトの名無しさん:02/11/13 03:25
分けられんわけじゃないがカッコ悪い。
for (;;) {
str = ...
if (str) break;
}
>>298
どういうときですか?
>>277=279頭が固い人?「使うな」なんて一言も言ってないが。何もしないら、if(!isalnum(c))って書くに決まてるだろ。アホか(藁
>>301
mallocが失敗するような状態で、そのあとどうするの?
テヌキアプリならセグフォルで落しちゃった方がよくない?

というのは、ありえるかも。
>>303
慣れの問題。
>>305
必死に反論考えて
辿り着いた答えがそれですか?(W
>>298
whileでやってよい書き方が、
なぜifではダメなんだ?

whileでも、同じコードを2回書けば
必ず分けられるじゃないか。
条件の中で (変数=値)== 値
が汚いというなら、徹底しろよ。
まったく不統一な頭したやつだな。
>>305
素直に「降参」って言えば良いのに。
311一番叩かれる意見:02/11/13 03:28
>>306
てぬきというか、自分だけしか使わないようなものなら多分失敗しない。
>>309
同じコードを2回書くのは悪いプログラミングの例だが?
>>308
必死に反論考えて
辿り着いた答えがそれですか(W
変数=値
変数 == 値
でいいだろが。
>>302
else {
 if ...
 else {
  if ...
とネストを深くしていくのかよ。
変わってるねー。
そういえば、いままでmallocがNULL返してきたことないな。
チェックしてても落ちる。
>>306
mallocが失敗してもすぐ落ちるわけじゃないし、ある程度不正な状態で
コードが進んで何か悪さをするより自分で落としたほうがいい。
>>315
てかそんな状況ないし
>>317
mallocしたらすぐにその領域を使わない?
NULLにアクセスしたら落ちることが多いと思うけど
glib の malloc
(g_malloc()だっけ?)
は malloc に失敗したら abort するようになってるよね。確か。
>>318
argc>2ならエラー
==2なら、argv[1]をファイル名としてファイルを開く。
開けなければ"default.txt"を開く。
開けなければエラー。

って、あんたのやり方だとどんどんネストが深くなるが?
>>319
たまーに、仮想アドレス0x0周辺を書き換えておいてノホホーンと
さきにいくような処理系とOSが…あるのかな?
>>320
mallocがそんなことしちゃったら規格はずれになっちゃうよ。
g_mallocだと思う。そんな関数しらないけど。
>>322
DOSとか。
>>323
glibc じゃないよ。glib ね。Gtk+ に使われてるやつ
getsもあんな危険な関数だけど、標準ライブラリ関数だから仕様を勝手に変えたりライブラリから外すわけにはゆかないんだよね。
>>325
じゃあ多分g_mallocだと思うよ。
標準のmallocとかぶっちゃうし。
>>322
AIXとか。
しかしmallocがNULLを返したからと言って大した対処もできないならg_mallocのようにするのも良いかと思う。
>>321
たかだかネスト2つだと思うんだけど、どういうやり方してんの?
>>330
脳内ネストの事だろ、きっと。
332319:02/11/13 03:41
結構あるんだな・・・
まあ自分専用のプログラムでもないかぎりは、mallocの戻り値チェックは鉄則だと思うけどね。
>>329
よく「mallocできないと落ちる」ラッパー作るよね。
「mallocできないとエラーハンドラ呼び出す。
ハンドラは変えられる。デフォルトはabort。」
としてくれると良いかも。
>>330
んで、そもそもなんで2つに分けたいか聞きたいんだけど。
単に「わかりにくい」とかいう主観的なのは却下ね。
33532:02/11/13 03:42
See you again!!
336デフォルトの名無しさん:02/11/13 03:43
わかりにくい以外に理由がいるか?
>>333
#include <stdlib.h>
void *g_malloc(size_t size)
{
void *p;
p=malloc(size);
if(!p) abort();
return p;
}

こんな感じ?
>>329
たいした対処できないって言ってもメモリがありませんぐらいは言えるだろうから、
だまって落ちるよりはいいと思うぞ。
>>334
ネタですか?主観以外の何物でも無いと思うが。
>>334
分かりにくくてもいいなら全部一行で書けよ。
341337:02/11/13 03:45
stddef.hも必要か・・・
>>334
大多数の人間の主観=客観
>>337
エラーメッセージくらいは......
まメモリ不足でメッセージ出力すらできないかもしんないけど
どう分りにくいわけ?
条件の中の副作用というのがダメなら
if (fgets(...) != NULL)
もダメだろ?

というか、そもそもfopen自体が副作用そのものだよな?
>>344
お、おまい
if (fgets(...) != NULL)
こんなことしてんのか?おもしろすぎ(W
君らは
while ((c = getchar() != EOF)
も「分りにくいけどしょうがないなあ…」
としぶしぶ書いてるわけ?
main関数にいる時にエラーメッセージを出力して終了する場合、
return fprintf(stderr,"エラーです。\n");
と書くのはアフォ?fprintfがint返すからこう書いているんだけど・・・
やっぱり1を返すべき?
>>346
わかりにくい。
実際におまいが間違えてる(w
>>345
え、EOFだとNULLが返るだろ?
(つか、それ以外にEOFの判別はできないはずだが)
350252:02/11/13 03:49
結局 32 が何をしたかったのかわからなかった…
g_mallocの一部

p = (gpointer) malloc (size);
if (!p)
g_error ("could not allocate %ld bytes", size);

ちゃんとメッセージは返すらしい。

NULL = FALSE = '\0' = 0
故に
p=malloc(size)
if(!p) = if(p == FALSE) = if(p == '\0')
>>348
ははあ。
そんな我慢していやいや使うくらいなら
はじめからC使うなよ(w
>>353
間違っているのは確かだろ(笑)
355デフォルトの名無しさん:02/11/13 03:51
>>353
便利だと思ってるし、好きだよ。
でも if まですることはない。
>>352
いや、まあ、それはそうだが。
だから何?
>>353
わかりにくいから細心の注意を払ってコーディングしなければ
おまいのような誤ちを犯すことになる
>>355
矛盾しまくってるジャン(w
>>345
だ〜か〜ら、もうネタはいいって言ってるだろうが!
>>356
オイオイ、FAQ嫁。
>>359
は?なんでオレなの?もしかしておまいも
if (fgets(...) != NULL)
とかしてんじゃねーだろーな?(w
>>357
意味不明
結局「しぶしぶ使う」わけ?
じゃあやめれば?
シンプル伊豆ベスト。

シンプルとは一行で書くことじゃない。
>>347は放置・・・問題外ってことか。
素直に
fprintf(stderr,"エラー\n");
return 1;
としよう。
>>361
貴方はどうするんでつか?
>>362
は?おまいは自分でわかりにくくないと主張しておきながら
間違えたんだろ?何?負け惜しみか?
>>365
if(fgets(...))でいいだろ。
>>365
if (fgets(...))
>>366
おまいは自分で分りにくいと主張しておきながら
whileでは使うんだろ?
まるきり矛盾じゃないか。
>>360
読みましたが何か?
>>369
わかりにくいから出来るだけ分けて書くようにする
それ以上のことは言ってないが?
>>371
ああ、しぶしぶ使うってことね。
了解。
373デフォルトの名無しさん:02/11/13 03:56
>>369
便利だから・・・
以上、32以外は全部俺の書き込みですた。
>>367-368
冗談だろ(w

NULLやFALSEって0と見なしていいんですか?
>>375
ネタか?もう寝ろや
>>375
冗談じゃないが・・・
while(fgets(...))、for(...;fgets(...);...)もよく書く。
普通しないのか!?
>>373
便利だから使うっていうのは矛盾であることを否定したことにはならないのだが。
>>376
内部表現が0であるわけでも、値が等しいわけでもないが、
整数の0とポインタを比較するときは0はnull pointerとみなされる。
また、ifやwhileの条件ではnull pointerは偽となる。
>>376
だからFAQ嫁って。
ごめん、いままで#42の板が無いもんだとばかり思って新スレ立てかけたよ。
センスの無いスレ名だな。
>>367-368
ワラタ
おまえらちょっと何行かコード書いてみろよ。
fp,buf使ってファイル読み込んで内容を表示するコードをさ。
ifのやつは出すでしょう。
>>383
while ( fgets(buf, BUFLEN, fp) ) printf( "%s", buf );
ifやwhileの条件で「0以外は偽」「null pointer以外は偽」を
利用するのは、分りやすいとはいえない。
条件には、
・真偽値として使う変数
・比較演算子の結果
のみを使うのが分りやすい。
while (i--) なんてのは最低だ。
>>385
スッキリ見やすいですね。
388デフォルトの名無しさん:02/11/13 04:03
for (i=BUFLEN; --i; )
>>386
>>ifやwhileの条件で「0以外は偽」「null pointer以外は偽」を
マジ頭大丈夫か?
390デフォルトの名無しさん:02/11/13 04:04
真だろ。
>>386
おおむね賛成だが、論理式としては
・真偽値を返す関数
・!論理式
もありだろー。
>>389
うん。まちがえた。
>>381
何かあったらすぐFAQ読めって、お前はFAQの回し者か?
>>while (i--) なんてのは最低だ。
それをぱっと見て、例え仕様を知らなくても、なにが脱出条件なのか
すぐに見当がつかないような「あほ」がPGなんかやってるか?
>>385
うわ。()の内側に空白あけてることからも分る通り、
あまりにもDQNなコード...
while (fgets(buf, BUFLEN, fp)) printf("%s", buf);
>>394
わかりやすさの話をしてるんだが。
>>395
うわ。括弧を全角で書いていることからも分かる通り、
あまりにもDQNな奴...
>>397
十分わかりやすいぞ
>>394
自分で分かりにくいと思っているからそういうコメントになるわけだが。
やっぱり「なにが脱出条件なのか すぐに見当がつかないような」コードなんだね。
>>397
だから、それを「わかりにくい」と思うような人間が
PGなんかやってるのかよ・・・世も末だなオイ・・・
fgetsは「真か偽を返す関数」だよね?
>>395
ダメか?見易いと思うんだが。
てか Gtk+ のソース読んでたことあるから
染み付いちゃったんだよね
if (fgets(...))
がわかりやすいなら、同じ理屈で
if (!(fp = fopen(...)))
も分りやすいことになるね。
405デフォルトの名無しさん:02/11/13 04:09
>>402
ポインタです。
>>405
ポインタも「真」または「偽」だよね?
fp = fopen(...);
if (!fp)
のほうがいい。
>>404
当然だ。
どっちもわかりやすい。
>>404
だからそれは2行に分けれるだろーが
頭悪過ぎ
>>407
きみは
result = fgets(...)
if (result)
と書くのかね。
>>410
ぜったいこいつアホだ
>>409
>>410 のように分けれるよ。
>>410
わざわざ変数をつかうことはない。
おい、おまえら。コーディングスタイルについて論争する糞スレは他にあるだろう。
わざわざここでするなよ。
>>409
矛盾が明らかになりました(激藁
>>414
>>1がむかつくからさっさと終了したいんです。
>>413
分りやすくなるなら、それくらいやるべきだろ。
もー矛盾しまくり。
さっきから屁理屈こねてるだけじゃん?何こいつら
二人いるみたいだが
>>418
あんたは何人いるの?
if(!(fp=fopen(...)))は括弧が多くてみづらいってことじゃないの?
>>420
そんな頭悪いレベルの話なの?
>>417
じゃおまいはこう書け
if (!(len = strlen(str), buf = (char *)malloc(len+1)))
たいてい負けると「屁理屈だ」とか捨てゼリフが出てくるな(w
>>422
ワラタ
buf = (char *)malloc(strlen(str)+1);
if (!buf)
>>421
頭が悪いのはお前。
>>422
頭わるっ!
俺は「何でも一緒にしたい」んじゃないの。
「代入と、その値の利用をいっしょにしても良い」と言ってるの。
strlenをifにいれる意味がどこにあるんだよタワケ(藁
>>423
すでに>>421が捨てゼリフを吐いています(w
>>427
if ではやらない方が分かりやすくない?
>>416
ならオッケー。
>>429
でもfgetsだって代入だよ?
代入と、その値の利用をいっしょにするのキモイ
>>427
わりぃ。じゃこうだな
if(!(buf = (char *)malloc((len = strlen(str))+1))
>>432
while ((c = getchar()) != EOF)
もなしか?
>>432
でもfgetsだって代入だよ?

このスレを終わらせたいだけならいいけど本当に熱くなってる奴は↓行ってくれな。

宗教戦争
http://pc3.2ch.net/test/read.cgi/tech/1031355713/
>>433
そのlenを何に使うんだ?
>>433
いやstrdup使うけど(w
>>437
memcpy()
for (i=0; i < len; i++)
…たしかにfgetsも代入だな。
俺の負けだ! もう寝る!
それこそstrcpyを使った方がわかりやすいんじゃ・・・
>>434
そうやっていつも極論を出す。
やる必要があるときとやらなくてもいい時を分けて考えろ。
>>442
スピード命
>>444
解散した。
ヒトエちゃんてどこ行ったんだろうな
gtk+触ってたって人、まだいる?
gtk_signal_connect(GTK_OBJECT(some_widget), "some_event",
(GtkSignalFunc)callback, (gpointer)data);

この糞長い関数を一行(80列)で書くエレガントな方法ってあるかい?
あったら烈しく教えて欲しいんだが。
なつかしすぎ
>>447
ないな。なんで2行に分けるのイヤなの?
#define GSC gtk_signal_connect
#define GO GTK_OBJECT
#define GSF GtkSignalFunc
#define GP gpointer
>>447
まだ一行で書くとエレガントだと思っている奴がいるのか。
すまん。こうだったな
if(!(buf=(char *)malloc((len=strlen(fgets(str,MAX_LEN,fp)?str:""))+1)))
>>447
コーディングの意図が明確に即時にトレースできることが重要で、
見た目の長さは関係無いと思うが。
>>450みたいな真似をして、あとから見た奴がワケワカ状態になる
ほうがよっぽどとんでもないよね。
今起きたところなんだが、真スレのタイトルに涙。
ところで、直前までの論争は

fp = fopen(...);
if(!fp)

は OK だが

result = fgets(...);
if(result)

はクソという結論でよろしいか?
>>451
7行で書くとエレガントだと思っている奴はいます。
>>454
そんなもんどっちでもいい
>>454
さっきからいるくせに
>>454
result が if の判定にしか使われなかったらな。
>>454
result = fgets(...);
if(result)
これがクソなのは間違いない
ま、どうでもいいから早くこのスレ埋めちまおうや
>>453
うーん、そりゃそうだな。
しょうがないか。
>>460
だったらスペースでも書き込め。
gtk_signal_connect(GTK_OBJECT(some_widget),
          "some_event",
          (GtkSignalFunc)callback,
          (gpointer)data);

>>462
アフォ
>>463
ちなみに
GTK_SIGNAL_FUNC(callback)
のほうが良かったかと


>>465
それでもなんでもいい。どんどん書き込め
 







あーあ。
なるほど
議論に負けた連中は
こうやって
ログを流そうとするわけか!
Win32 SDK 触ってたって人、まだいる?
hWnd = CreateWindowEx( WS_EX_ACCEPTFILES | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, MainWindowClassName, MyName,
WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
HWND_DESKTOP, NULL, hInstance, &Parameter);

この糞長い関数を一行(80列)で書くエレガントな方法ってあるかい?
あったら烈しく教えて欲しいんだが。

>>474
そこまで長いとfopenみたいなモード指定方法の方がいいかなーと思ってしまう(笑)
>>474
ワラタ
>>473
スペース書けといわれたから書いているだけですが?
>>478
あっそ
>>478
はいはい、悔しかったんだね
よしよし(・∀・)
>>479
うん。そう(^^;
>>474
第一引数は整数か?
論理和とった値を直に書け。

決してエレガントじゃないが。
483482:02/11/13 04:41
それでも80文字には収まらないなきっと。。
一行に一引数と相場は決まってる<CreateWindowEx
>>474
しかし、プロパティ設定まで全部1関数なのね・・・
CでGUIって大変ね。setsockoptみたいに後から種類ごとに
設定できると、まだ分かりやすそうなきがするね。今更どう
にもならんけど。
#define CWE \
hWnd = CreateWindowEx( WS_EX_ACCEPTFILES | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, MainWindowClassName, MyName,\
WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,\
HWND_DESKTOP, NULL, hInstance, &Parameter)
こう書けばいいだけのことだろ。
hWnd = CreateWindowEx(
 WS_EX_ACCEPTFILES | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE,
 MainWindowClassName,
 MyName,
 WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN,
 CW_USEDEFAULT,
 CW_USEDEFAULT,
 CW_USEDEFAULT,
 CW_USEDEFAULT,
 HWND_DESKTOP,
 NULL,
 hInstance,
 &Parameter);
488474:02/11/13 04:46
スペース除いて 241 桁か・・・。

結局、484 の方法しかないな。
ただ、座標指定 (4 つの CW_USEDEFAULT) は 1 行で書いた方がいいよな。

486 は #define 自体にまんまの実装を書いている事が非常に無意味だ。
これだけ長いと逆に争うまでもない罠
>>485
違う。
先に RegisterWindowEx() でウィンドウの基本的なタイプを決める。
その属性指定が、これまたメンバだらけの構造体。
一行で書けばいいだろ。今時横スクロールできないエディタ使っているわけあるまいし。
492485:02/11/13 04:51
>>490
ハハァ・・・
Winアプリ作る時は、C#か、JavaでSWTつかうことにしよっと。
>>492
VBを使えよ
>>491
アフォハケーン
そらアフォも出てくるわ
>>492
おぅおぅ。所詮その程度のレベルだ好きにしろ。
7 行プログラミングの連中がテロ起こしそうな API だよな。
インデントはいくつが正常でつか?
>>498
それはコーディングスタイルの話だから、何が正しいというのは無い。
漏れは 4 桁。
折り返し地点
俺は8。
GOAL!
目指せ今日中に1000。
燃料は無いか?
やっぱ8だよね
さっさとこんなスレ荒らして終わりにしちまおうぜ
GNUは2だったかな。
そんなにいやなら次スレ作っちゃえば?
0 は止めて欲すぃ
>>507
ウソつけハゲ
>>499
今までもコーディングスタイルの話なんだから固いこというな
次スレのタイトルとテンプレートの話でもするか?
>>506
議論に負けたからって荒らしてログを流そうとすんなよ。
インデントは常に"\t"ですが、まずいですか?
キタ━━━━━(゚∀゚)━━━━━!?

>>511
499 は、「正しいというのは無い」 とは逝ったが、だから議論はやめろとは
逝ってない。
>>514
まずい
エディタによって変わるから
>>515
寝惚けんなハグェ
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ <  1098取り合戦、いくぞゴルァ!!    ,,、,、,,,
    /三√´д`) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,     \エーーーーーーーッ!?/
      //三/|三|\     
      ∪  ∪       (´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)
 ,,、,、,,,       ,,、,、,,,      ,,、,、,,,     ,,、,、,,,        ,,、,、,,,
      ,,、,、,,,      (´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)

http://big.freett.com/scheme_a/num1000.swf
>>512
前スレの最後の方でもう決まったよ
スペースなんかにしたら容量増えるじゃん。
>>516
エディタの設定で好きに変えられるから逆に良い。
>>516
別にエディタでどう見るかは、見る人が好きにエディタの
設定かえればいいだけちゃう?
データとして1バイトですむので、多少はコードサイズ減るし…
>>521
ずれるじゃん。てかやったことないだろ
>>523
なにが?
>>517
最後の疑問符が見えませんか?
だとするとあなたは、
if(!flag) の ! も見落とすかも知れませんね。
もれは書くときは tab 使うけど
人に渡したりするときは expand でスペースに変換する。
>>524
普通ソースコードはタブ幅決め打ちで書くんだから、作者の意図しないタブ幅に
したらずれるって話だろ。
エディタの設定でタブを自動的にスペースに置き換えるようにしている。
ちなみにサイズは8
でもコード編集中はタブだな。
スペースだと、インデント上げる時に必要なバックスペースキーが多い。
>>527
"\t"が4か8かによって、見え方が異常に変わってしまうような
入れ方しないよ。
インデントは常に、1タブ、2タブ、3タブ・・・であって
1タブ、1タブ+4スペース、2タブ・・・などというアホな事はしない。
あんたやってるのか?たまにそういうソース見るけど。
今日はコーディングスタイルの日か
TABで渡してくれたほうが都合がいいが
どうせ整形ツールつかうからどうでもいい

整形ツール使って元と全然違うスタイルにしてしまうのはアリ?
>>530
そういうことじゃないよ
おまえ他のエディタで見たりしたことないんだろ?
プロポーショナルフォント使っていたら崩れちゃう
人に渡すなら書く前に統一しとけばええやん。
>>534
え?プロポーショナルフォント!?なんで?
537527:02/11/13 05:13
>>530
漏れはしないけど、あんたの言う通りそういうソースは結構あるだろ。
なんで今日はネタにもいちいちマジレスが返るんだろう
>>536
相手がぷろぽ使っていたら崩れちゃうってこと。
VB みたいに、スペースで桁揃えできない奴はいっそプロポーショナルのが見やすいが、
C/C++ では固定長だな。
>>538
・・・ネタですか?
>>539
そりゃ相手が悪い
>>539
相手がつかってるかもしれないのか?相手ってどんな奴?
>>538
ネタにマジレス。飢えてるから。
インデントがタブのままソースを渡すやつは白痴
>>542
うん。タブにしようが空白にしようが崩れることはあるって言いたいだけ。

>>543
ソース見る奴
タブのまま渡されたソースを扱えない香具師は白痴
>>546
プログラムのソースコードは固定幅フォントで見る、なんてのは
大前提だろ
海原雄山はプログラマに向いているかも知れない
>>548
まあそうだけどね。
というかテキストエディタは固定長で使うのが一般的だよね。
話すことも尽きたからあずまんが大王の話でもしねぇ?
>>549
向いてない
>>551
C と関係無い話はよそでやってください
おながいします
>>553
わかってるねんでぇ、わかってるねんでぇ、バカにしたらあかん。
>>553
そんなこと言っていたらこの糞スレをうめられねーだろ
>>552
何でだよ
タブはタブー
なんちゃって(^^)
正直インデント幅の話もスレ違いだけどな。でも固いこというな。
ここはそういうスレなんだ。スレタイをつけた>>1が何もかも悪い。
あずまんが大王はおもしろいとは思わんけどなあ。
>>556
自分に厳しい芸術家がコード書いたら永遠に完成しないだろうよ。
いい加減だから納品できるのさ〜。
いいペースだ、みんなんばれ。
ただし、じゅもんはつかうな。
あずまんが読んだ事無いから知らん
#define BEGIN {
#define END }
とか書き出してフランス料理にもPascal風ソースをかければ美味いとか
言い出すんじゃないだろうか。
次のスレ題
「士郎!甘いわ!〜海原雄山至高のCプログラム〜C言語の腕はここで磨け!-相談にも乗るYO!-43」
おまいら海原雄山が好きなんだな
ERROR:サブジェクトが長すぎます。
俺も読んだことはないがアニメで見た。
正直アニメをみてかわいいと思ったのはこれが初めてだ。
次スレのタイトルは 565 でよろしいか?
「美C倶楽部」
>>568
いいよ。
〜に聞けはもううんざり。
「下司どもにCを与えるな〜海原雄山至高のC」
572549:02/11/13 05:29
漏れのせいでとんでもない事になったらどうしよう・・・(;´Д`)
573570:02/11/13 05:30
センスがないとはいわんが、もう飽きた
>>572
責任取れよ(w
テンプレは前スレで決まってる。伝統的に
http://pc3.2ch.net/test/read.cgi/tech/1036876790/972-
dat落ちしなければいいがな。
「C言語のことは漏前が答えろ!」
27 :デフォルトの名無しさん :02/11/10 06:40
きく、なんてややこしい言葉使うからダメなんだ
次から
「C言語のことなら朕に尋ねよ」
にしよう

28 :デフォルトの名無しさん :02/11/10 06:41
(・ロ・)ホ,('ロ')ホ--ッッ!!!… C言語質問スレ PartX

これがいい。

29 :デフォルトの名無しさん :02/11/10 06:43
つーか周りに合わせて、「C 相談室」 でいいやん。
元々のスレタイが、ビルジョブスの好き勝手で付けたものだし。

30 :デフォルトの名無しさん :02/11/10 06:46
「C (゚д゚)ウマ-」 「C (゚Д゚)ハァ?」 「C (・∀・)イイ!!」 「C ( ´,_ゝ`)フーン」 「C ヽ(´ー`)ノ ヤレヤレ」 「C (゚∀゚) アヒャ」

31 :デフォルトの名無しさん :02/11/10 06:47
いっそシンプルに「C」だけでいいんじゃない?

32 :デフォルトの名無しさん :02/11/10 06:48
見つけにくいだろ

33 :デフォルトの名無しさん :02/11/10 06:50
C, or not C. That's the question.

34 :デフォルトの名無しさん :02/11/10 06:59
「Cと、土曜深夜の愉快な仲間たち」
前スレ 975 の 27〜33 に 「// 待機中」 が抜けてるな。
つーか ANSI サポートするなら 「/* 待機中 */」 にしる。
あえてC99。つーか/**/だとちょっと一行が長くなる。
「(・ロ・)ホ,('ロ')ホ--ッッ!!!…」 ってな何かアホくさ過ぎる。
>>581
VB なんかとカブってるし
C言語なら俺に聞け日記。
「C 相談室」 でいいやん。
俺に聞けはまじで飽きた。
char* c[43];がCぽくていいじゃん。
「C言語なら独りでやれ!!」
場末の C
>>585
sかstrにしろよ。
589588:02/11/13 05:37
ん?ポインタ配列か。
じゃあstrってのも変だな。
char const * const にしろよ。
>>588
スレタイで表したいのはあくまでも「C」の「何番目」のスレかということだ。
「if(!you_know(C))ask(me);」
593588:02/11/13 05:38
>>591
そういうことか。
サパーリわからんかった。
つーかCスレ char* c[43];とか書くんじゃなくてchar* c[43];だけなのね・・
struct thread { char title[256]; char url[256]; } c[43];
でも結局俺に聞けになるんだよな。つまらん。
>>593
あ、いや、もちろん「C言語」とか「プログラミング言語C」とかつける。
じゃないと検索でヒットしにくいし。
あい。

char const * const * const a = 0, b;

b の型が何だか即答できる人!
革新的なことをすると叩かれる。
char
char const 型!
>>597
すまん。後にしてくれ。
「C言語相談室日記〜自分でやれ」
600 が正解で終了。
>>597
variant
次スレマダー?
じゃあみんなのアイデアを総合して、
 
 あずまんが大王のC言語相談室 char* c[43];

で決まりだな、っと!
>>605
お前が立てろよ
C言語相談室 char* c[43]={"あずまんが大王"};
>>607
相談室ってやめようよ
あくまで出来るだけ自分で考えろって雰囲気を出しときたい
海原雄山
>>607
なんでポインタ配列なの?
できればcに*をくっつけてほしい。
>>610
おまえそれより先に訂正するところがあるだろ!!
>>610
それ言ったら俺に聞けもダメになるぞ。いいのか?
C言語相談室 char *c[43]={"あずまんが大王", "海原雄山"};
>>610
それ言ったら海原雄山もダメになるぞ。いいのか?
>>615
c[2] 以降が全部 NULL だな。
なるほど、これもいいかもしんない。
char *c[43]={"C言語のことは漏れに聞け"};
c[0]はちょうど余ってるし。
C言語美食倶楽部 char *c[43]={"あずまんが大王"};
タイトルは別として、618 のスタイルはいいかもな。
>>608
C言語図鑑 const char * const c[43]={"あずまんが大王", "海原雄山"};
>>619
C言語美食倶楽部はいいかも。
>>621
サブジェクト長制限に引っかかると思う。
const 長すぎ
c[1]以降は
http://pc3.2ch.net/test/read.cgi/tech/1036876790/975-976
みたく過去スレが入るので。
あくまであずまんが大王と海原雄山にこだわってるのがいいな
結局論争と電波で終わったか。
#define c const
c char * c c[43] = {...};
const consthar * const const[43] = {...};
>>627
お前が電波。
みんな真面目に議論しているだろうが。
>>630
電波=32
>>628
改行付きかい
>>629
んなアホな
「C言語のことは自分の胸に聞け!!!43」
>>618の初期化タイトルを考えることにしよう。
>>2はいつもどおりコンパイラのリンクで、>>3-4>>625の過去スレ代入で。
>>635
別にいいけど、俺に聞けはやめてくれよ。
char *c[43]={"あずまんがC言語"};
【ダッコ】C言語はしぃに聞け!!【ダッコ】
俺に聞けか相談室以外に何がある?
あんまり長いと弾かれるし。
64032:02/11/13 05:59
なにが俺に聞けだよ。
お前ら馬鹿は聞いても答えねーじゃねーか。
char *c[43]={"暴走C言語特急"};
>>640
32はそんなに正常に会話できません
ニセモノバレバレ
>>637
俺はそれで全然問題ない。
>>32
まだ解いてなかったの?
電波キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !!
char *c[43]={"ABC言語殺人事件"};
>>643
海原雄山がないぞ
char *c[43]={"あずまんが山岡C郎"};
>>648
もう何がなんだか・・・
strcpy(c+10, "海原雄山");
char *c[43]={}このスタイルは決まり?
訂正します。
char *c[43]={"あずまんが山岡C言語郎"};
>>651
ダサいから却下

#pragma 至高の未定義言語、C言語のスレ
>>651
うん。
char *c[43]={"C言語相談室(*^o^*)"};
C言語は俺以外に聞け。
>>656
ちょっといいと思ってしまった
>>651
それで逝こう。
653 は却下却下却下却下却下。
サブジェクト長は48文字までだとさ
BBS_SUBJECT_COUNT=48
>>651
それだと過去スレもうまく収まるからそれで。
"海原雄山C言語"[43]
Cを求めて三千里
検索用に「C言語」という単語も入れたい。
>>661
43って境界を越えているじゃねーか
>>655で決まり
(藤原)C言語診断室(組長)
俺達C言語連合[43]
C言語火葬場
Cで逝こう
C言語のことはリッチーに聞け!!!
教えるのはカーニハンの方がうまい
C言語楽々会話
  ∧_∧   
 ( ´∀`)< ぬるぽ
674デフォルトの名無しさん:02/11/13 06:11
char s[43]="C言語は俺に聞け";
【駅前】N○VAでC言語会話!!【留学】
char *c[43]={"楽太郎のC言語"};
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>673
 (_フ彡        /
正直、聞けとか相談室とか入れないとただのネタスレだと思われる罠
char *c[43]={"C言語問注所"};
くだらねぇC言語の質問はここに書け
char *c[43] = {"C言語相談室"};
char *c[43] = {"C言語のことは漏れに聞け"};
のどっちかでいいじゃん。
【未定義】"C言語の質問・論争スレ"[43]
スレッド立てるまでもないC言語の質問はここで
【ネイティヴ】私がC人です。C言語のことなら何でも聞きなさい【スピーカー】
>>681
上がいい。
できれば(*^o^*)をつけて
>>678
1 のテンプレがまともなら平気だろう。
【未定義】char c="C言語の質問・論争スレ"[43]

(*^c^*)
689デフォルトの名無しさん:02/11/13 06:17
ここは次スレのタイトルを考えて1000消費するスレになりました。
>>685
アホ臭いから却下却下却下却下却下。
>>687
コンパイルエラー
*("C言語の質問・論争スレ"+43)
>>690
じゃあ:)をつけて。
>>693
KY 氏と勘違いされるから下却下却下却下却下。
C言語(≧∇≦) ぶぁっはっはっ!!!
>>695
それいい!! 最高にうけた!!
決まり決まり決まり
決定決定決定
>>693
インターネット繋ぎたての DQN の匂いがするから下却下却下却下却下。
char *c[43] = {"真剣!C言語しゃべり場"};
697はDQN
700
正直スレタイなんかどうでもいい。
char *c[43] = {"必死!C言語ほら吹き場"};
どうでもよくないから執拗に>>1が叩かれたんだろ。
真剣!C言語しゃべり場 47期 ++DQN
いっそのことC言語のスレッドは今回で終わりにしてしまわない?
>>703
おまえらが粘着なだけ。
>>705
いずれにせよ新スレは誰かが立てる。
char *c[43] = {"粘着C言語テープ"};
706=1
>>705
あ〜 それもいいかも。どうせ同じ事の繰り返しなんだからな〜。
【今日の日は】C言語のことなら俺に聞け!!![最終回]【さようなら】
「必死!」っつーのはいいな。
新スレたっちゃったぞ・・・
機動言語Cダム
Cの質問はスレッド立てるまでもない・・・でやってくれれば論争も起きないと思うんだよね。
なんだあのクソいスレタイはーーーーーーー!?
とりあえず 1000 取り合戦場の AA 貼っといた。
ニセ次スレ削除依頼出して。
誰か>>681のどっちかで立てちゃってよ。俺は立てられないって怒られた・・・
今ある糞43スレは放置で。
>>1のテンプレに論争の邪魔をする質問厨への対応は未定義とする。と入れてほしかった。
>>719
タイトルに関係なく糞スレになると思うが・・・
どうせ論争ですぐに使い切ってしまうんだろう。
>>1のテンプレ
問題をちゃんと切り分けて、Cの話かそうでないか洗ってから質問してください。
というより、聞く前に一応 Web で検索してください。
コンパイラを探してるなら >>2 を見てください。

GUIとか、C標準でできない事の質問は使ってる開発環境のスレに行ってください。
ソース丸投げ、宿題、書籍 は専門の別スレがあるからそこへ行ってください。

上記を守らない書き込みをした場合、その結果は激しく未定義とします。

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/


前スレ <42>
c[42] = "http://pc3.2ch.net/test/read.cgi/tech/1037101156/";
てかこのスレもまだ300レス近く残ってるのに
Cスレ分裂の予感
>>2のテンプレ

【コンパイラ】
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
糞スレ削除依頼終了
1 のテンプレ、ですます調はカコワルイ
まともな削除理由書けるのか?
First off, I'd suggest printing out a copy of the GNU coding standards, and
NOT read it. Burn them, it's a great symbolic gesture.
>>32 (他)
str1=(int**)malloc(sizeof(int*)*i2)
はせめて
str1=malloc(sizeof(int*)*i2)
にしようよ。 C++ じゃあないんだから。
str1=malloc(sizeof *str1*i2)
とすればもっとクールだとおもうけど、
あんたらには難しすぎますか。
ニセ次スレ、博物館の様相を呈してきた。
ある意味保存版。
新スレが立ったみたいなのでこのスレは終了ね。
>>734
アフォですか?
736デフォルトの名無しさん:02/11/13 06:54
唐揚げ
>>735
ネタはもういいよ…。(^^;)
>>737
次スレの 1 ですか?
次スレの1の心が読めない・・・
荒らしているやつの心は単純すぎてつまらない(^_^;)
正直、1 に載せるリンクで、「comp.lang.c FAQ(英語の原文)」 は要らないと思う。

あと関連スレが 「推薦図書/必読書のためのスレッド」 だけなのも何だか。
もっと揃えるか、またはこれも消すか。

つーかまあ 1 にリンクが溜まるのは良くないのだが。
いちいち食って掛かるところを見ると 740 は次スレの 1 ケテーイ
>>740
次スレの 1 ですか?
>>742-743
やっぱり単純だな(^_^;)
>>744
泣きそうな顔してるね、どうしたの?(^-^;)
>>744
単純だな。
goto >>742;
747744:02/11/13 08:05
ああDQNスレ立てて悪かったよ
もう来ねーよ ヽ(`Д´)ノ ウワァァン
叩かれまくりたい 744 の登場
>>744 おかーちゃんの所に(・∀・)カエレ!
問題:次のプログラムをi386上で実行するとどうなるか,その理由もあわせて答えよ.


#include <stdio.h>

void test(int s0, int s1, int s2, int s3){
int s4[400];
s4[401] += 16;
}

int main(int argc, char** argv){
test(0, 1, 2, 3);
exit(1);
printf("hoge\n");
}


>>750
OS もコンパイラも指定しないでよくそんな問題が出せるな。
>>750
<stdlib.h> インクルードしてない状態で exit() を呼ぶな。
>>750
main() で値を返せ。
754デフォルトの名無しさん:02/11/13 09:28
testの引数はなんのためにあるんだ?
問題:次のプログラムをhttp://pc3.2ch.net/test/read.cgi/tech/1037101156/上に投稿するとどうなるか,その理由もあわせて答えよ.


#include <stdio.h>

void test(int s0, int s1, int s2, int s3){
int s4[400];
s4[401] += 16;
}

int main(int argc, char** argv){
test(0, 1, 2, 3);
exit(1);
printf("hoge\n");
}
>>755宿題スレへ行けと言われる。理由:ここは宿題を教える場所では無いから。馬鹿にされる理由:汚ないプログラムだから。煽られる理由:馬鹿な質問をするから。無視される理由:飽きられたから。
>>755
答え: >>750-754
理由: >>750-754 が現に存在するから。
「答えよ」なんて言われてせっせと答えるのは試験位なもの。
普通はそんな糞質問に答える義務等、無い。
cより前にk語を覚えよう。
まあ >>750 のコードは、exit() がスキップされるのを期待したんだろう。

s4[400] は、exit() の呼び出し元のアドレスを格納したスタックの直前の領域に確保される。
ANSI では int a4[400]; を宣言した時に a4[400] にアクセスできる事を保証しているので、
実際には sizeof(int) * 401 バイトの領域が確保される。
つまり、a4[401] は呼び出し元のアドレスが格納されているので、これを書き換えてやると関数から
戻る先が換えられる。

なお、int s4[N]; の時に s4[N + 1] にアクセスすればいいので、N == 400 である必要は特に無い。
あと、引数は呼び出し元のアドレスより後のスタックに格納されるので、いくつあるかは関係無い。


が、これがうまくいくのは余程限定された状況でだな。
「i386 上」 だけでは成り立たない。

コンパイラが、変数を必ずスタックに、詰めて確保する事。
sizeof(int) == sizeof(void (*)()) が成り立つ事。
操作した戻り先のアドレスに、必ず安全なコードが書かれる事。
コードが最適化されない事。
デバッグモードでコンパイルされない事。

これだけの条件が揃う事はあまりない。
よって >>750 はクソ。
なんでexit(1);のコードが16byteってわかるん?
>>760
だから、それすら確定していない。
> 操作した戻り先のアドレスに、必ず安全なコードが書かれる事。

特定のコンパイラが吐いたコードのリスティングを取るか逆汗して
調べたんだろ。
ちなみに VC6 では、call _exit、pop ebx、pop esi、pop edi が
スキップされる。
push に対する pop がスキップされるのは、malloc() に対する free() が
スキップされるのに等しい。
762761:02/11/13 10:54
ちなみに MS-C6 では、16 を足すと main() からはみ出てしまうので、
はっきり言って何が起こるか分からない。
今時i386のPCなんかネーヨ
で終わりにしたいな(w
764761:02/11/13 11:04
もう一つ追加。
VC6 では、無条件の exit() があると、それより後ろを全部カットする。
だから printf() は結局実行されない。
returnはまだしも、単なる一関数にすぎないexitでそこまでしてくれるのか。
まあgccもgetsを使うと危険だと警告してくれたりするけど。
今回も伸びた割には内容の無いスレだったな
まあ、標準ライブラリの関数をネイティブのステートメントとして解釈する処理系は
多いと思うよ。
VC なんか ZeroMemory() をインライン展開したりするし。
>>761
test()の実引数のクリアはどこ行ったのよ?
add esp,16
あのコードを VC に放り込んだ場合、実引数なんてものは出てこないのだが。
最適化 Off の状態で。
ただし、main() と test() を別々にコンパイルするなら別。
770768:02/11/13 12:39
実引数って間違った表現だな。パラメータのことね。
771768:02/11/13 12:41
>>769
そうだったんか。staticでもないのに?
ちょっとこっちでもやってみるね。
出てくるじゃん
773デフォルトの名無しさん:02/11/13 12:57
「向こう」 が age らけちゃったから
こっちも唐揚げ
774768:02/11/13 13:01
こっち(VC5)では最適化をOFFにしても何してもパラメータが出た。

つーか、test()がstaticでない限り、外からも呼ばれる可能性が
あるので、test()とのパラメータ受け渡しは省略できるはず
ないと思うんだが。俺が変なのかな?

push 3
push 2
push 1
push 0
call _test
add esp, 16
push 1
call _exit
add esp, 4
775769:02/11/13 13:44
>>774
スマソ、もれの勘違いだったようだ。
(問題を簡単にするために仮引数無しのバージョンのソース書いてた)
で、

>>759
> 引数は呼び出し元のアドレスより後のスタックに格納される

外からいくら引き渡されても、結局スタックの一番先頭にあるのは戻り先のアドレス。
test() はそれを使って return するだけ。
スタックに大量に積んだ引数の始末は、その後に呼び出し側がつける。

よくわからないなら、(あなたはアセンブリコードが読めるようなので) 実際に
そうしてみて確認してみればいい。
引数が全く指定されなくても大量に指定されても、動作に影響の無いコードに
なってるはずだ。
(void)printf("%d\n"a);
みたいにやって返値を無効(?)にしてるのかどうか
わかりませんが
これが呼び出し側に与える影響というのは
どういうものなのでしょうか?
返値を何かになんらかの変数に代入してる
ようなことは見受けられませんので理由がわかりません
(void) がする事は何も無い。
付けても付けなくてもコンパイラは同じコードを吐く。

戻り値は一般に、CPU 内部の特定の作業領域に保存される。
(x80 なら EAX レジスタ)
その後のプログラムによって、いずれその CPU 内部の特定の作業領域は
別のデータで上書きされて消える。
それだけだ。

その戻り値が変数に代入されていたり式に使用されていれば、上書きされる前に
どこかのメモリ領域か、CPU 内部の他の作業領域にコピーする。
意味ないですよね
bsdのpingとか観てたらそんなコードがありましたんで
そっか
>>778
lintなどのツールに文句を言われないために付けることはある。
>>778
コンパイラの警告を黙らせるためのおまじないだと思う。
ANSI に対応したコンパイラで、戻り値を捨てると警告が出るコンパイラが
あるのか?
unsigned char c;
switch (c) ...
とした時、caseがちょうど0〜255だけあるのに
レンジチェックするコードが出てしまいます。
レンジチェックせずにいきなりテーブルジャンプするように
する方法はないでしょうか?

あるいは「このコンパイラならOK」という情報でも
けっこうです。

今使っているコンパイラはVC6です。
>>782
テーブルジャンプするのにswitchを使うのが間違い
func tbl[] = { func_a, func_b, fund_c, ...};
tbl[c]();
でいいんじゃないか?
784774:02/11/13 15:17
>>775
あれ?もしかして後半も俺向けの返事?

だったら、
> 引数が全く指定されなくても大量に指定されても、動作に影響の無いコードに
> なってるはずだ。

これは間違い。
関数から戻った直後に引数をクリアするコードが
入っているかどうかによって、
s4[401] += 16; した時の戻り先も変わってくる。
(戻り先アドレスは変わらないが、後続の命令の配置がずれる)

さらに言えば、引数の有無だけでなく、
引数のサイズが256バイト以上か未満かでも
 add esp,バイト数
という命令のコードサイズは違ってくるはず。

つまり、もろに動作に影響する。
>>782
suitch で評価されるのは int 値じゃなかった?
unsigned char で評価されるのは期待できなかったと思うけど。
786775:02/11/13 15:29
>>784
すまん、漏れの解釈が間違ってた。
「あの場合に限って」 と言うなら、あなたの言う通り。
test() に s4[401] += 16; のような危険なコードが入ってなければ、
漏れの言った通り。
↓ は神
↑は鬼畜
789デフォルトの名無しさん:02/11/13 15:44
>>782
VC6で試してみたけど、やっぱりチェックコードが入ってるね。

andeax, 255; 000000ffH

チェックコードの直前にこういうコードが入ってるんだから、
チェックする必要ないんだけど、ここまでは考えてないんだろうね。
↑ は神
↓は鬼畜
ウンコ引数にして投げるぞ
793デフォルトの名無しさん:02/11/13 16:52
#include <stdio.h>
main()
{
int n;
printf("SEISUU=");scanf("%d",&n);
printf("%d\n",n);
}

上記のようなプログラムを実行した場合に
絶対値の大きな整数を入力すると入力した通りの数字が表示されないんですが
何が理由なんでしょうか?あと、表示される数字には規則性はあるんでしょうか?
aaa
>>793
#include <limits.h> をやった上で、INT_MIN と INT_MAX を %d で printf()。
それが int 型で扱える数値の範囲です。
もっと大きな方が必要な場合は、double を使ってください。

limits.h と float.h を調べると、いろいろな型の限界がわかります。
ただし、ここの数値を換えても限界値が変わるわけではないので変えないで下さい。

>>794
( ´,_ゝ`)フーン
>>793
intの範囲外の数値を入力したんじゃネーノ
797793:02/11/13 17:01
>>795-796
親切にどうもありがとうございます
助かりました
798JPS ◆M0LaMzf5rY :02/11/13 17:40
getcheって知ってる?conio.hにあるやつ。
あれのWhileループでEOFみたいに
while(c=getche() != 0x1a)
ってやってんだけど、どういう意味?
16進数だよね?
DQNに答えることなど・・・無い!
getche? conio.h? (゚Д゚)ハァ?
801デフォルトの名無しさん:02/11/13 17:46
>>800
Windows環境でのみ動作するヘッダだYO!
>>801
むしろDOS環境
>>798
実行してみそのままだから
何かキーが押されたらそのキー出力して0x1a(^z)だったら終了
804デフォルトの名無しさん:02/11/13 17:51
みんなメアド見ないの?
sage のだけクリックしとけば、それ以外が何かしら違うものと色で区別つくから
覗いてみたりするけど。
>>798
while((c=getche()) != 0x1a) {
printf("%x\n", c);
}

こういうコードでも動かしてみて、片っ端から
キーを押せば、どれか分かるんじゃない?
>>804
ボケにマジレスされたからって、いちいち文句言わなくていいよ。
807804:02/11/13 17:57
間違えて age ちゃった・・・
>>806 らじゃ。
線型構造を勉強してるんだけど
int list_insert(Node *list,int in_number,int value)
{
Node *pos_node=list,*new_node;

if(in_number < 0)
in_number = 0; // 限界値チェック

new_node=malloc(sizeof(Node));
if(new_node == NULL)
return 1;

// 目的位置の一個前まで移動
while(in_number > 1 && pos_node->next != NULL)
{
pos_node = pos_node->next;
in_number--;
}

// 挿入ノードに 元目的位置のポインタ
// および 挿入する値 を代入し
new_node->next = pos_node->next;
new_node->value = value;

// 目的位置の一個前に挿入ノードを連結
pos_node->next = new_node;

return 0;
}
809808:02/11/13 22:34
この関数のなかでpos_nodeはなんで必要なの?
listをこぴってるから、直接リストをいじるのとかわらないんでないの?
>>808
必要ないです。
かわらないです。
いじょ。
811808:02/11/13 22:43
>>810
( ̄□ ̄;)!!
listの必要性を考えて小一時間ネット上をうろついたオレって一体・・・
>>811
引数を直接いじると何か気持ち悪い、っていう程度の
理由だと思うよ。
>>812
気持ちはわかるね。たぶん808のソースはどっかのコピペだろうから
分かりやすくしてんだろう。
でもオレも後で見たときの可読性を考えれば、いい事だと思う。
814デフォルトの名無しさん:02/11/13 23:26
>>813
あなたの文章には鬱病の人特有の言い回しが見れます。
病院に行ったほうがいいと思います。
鬱は必ず直ります。
>>814
うつ病特有の言い回し?
816813:02/11/13 23:34
>>814
813ですが何か?
817デフォルトの名無しさん:02/11/14 00:03
だれかいますか?
>>817
いるよ。はあはあ
廃れたね。オレが話題をふるYO!
お前らコンパイラとエディタなんですか?
またその話題かよ。
廃れたねってお前。チャットじゃねーんだからよ。
そんなあせんなよ。
新スレ立って荒らされてるな(プ
構造体listが
{
  int num;
list *next;
}
みたいな線型リストだとして
list == NULLっていうのはどういうことですか?
listの要素全部が0,NULL,'\0'ってこと?
あともういっこ!
線型リストのさいしょの構造体には値は入れないんですか?
>>823
それは実装した人次第だが、一般的にはリストが空。
>>824
最初はポインタの方がすっきりするが、プログラムを組むとわかるが
空の構造体の方が扱いやすい。
>>824
それをおセンチっていいます。
>>827
なつかしいでつね
>>823-826
質問と回答が殺伐としていてよいね

>>827-828
消えろ。
>>825 && 826
サンクス
ある関数が再入可能かそうでないか知りたいのですが、
どうやって調べたらよいのでしょうか? なにかリストみたいなのはありますか?
printfは再入可能でないらしいのですが、僕には理由がわからず。
とにかく、リストがあればとりあえずは楽かなと。
830のレスみて思ったけど、次スレタイはCの演算とかうまく使ってよ。
C++ってなかなかいいセンスしてると思うのは俺だけか。
この静けさ。完全にCを語り尽くした。
834デフォルトの名無しさん:02/11/14 01:43
>>831
マルチスレッドで使って安全という意味だよね?
C言語の規格自体ではそこまで決まってない。
かといって処理系ごとにまったくバラバラかというとそうでもない。
Unix系のOSなら、Single Unix Specificationという規格でけっこう細かく
決まっている。
http://www.opengroup.org/onlinepubs/007908799/xsh/threads.html
のThread-safetyセクションにリストされている関数はthread-safeで*ない*。
他は全てthread-safe。(printfもthread-safe。)

SUS準拠OS以外なら、処理系のマニュアルを見るしかない。
>>833
今度から初心者の質問すれと
上級者の議論すれにわけたいね
>>835
わけたら余計に人減るじゃん。
>>834
マルチスレッドもありますが、割り込みでprintfを使おうとしてました。
自分なりに調べましたが、
printfはスレッドセーフですが、Async-Cancel-Safe 関数ではないそうです。

いやぁ、よくわかりませんなぁ。素人は割り込むなと言うことですか?w
>>837
シグナルハンドラの中で使いたいのなら、async-cancel safeじゃなくて
async-signal safeなものを探すべきでしょう。
Solarisだとマニュアルに一覧があるけど(90個くらい)。
>>838
SolarisのAsync-Signal-Safe functions一覧
http://docs.sun.com/db/doc/816-0220/6m6nkoroc?a=view
>>837
printfをシグナルハンドラから呼びたいなら、
Async-Signal-Safeでないライブラリ関数を実行中はシグナルをブロックするように
すれば良いんじゃない?

あるいは、シグナルハンドラでは何か情報を変数に書くだけにして、
メインのスレッドでその情報をプリントする。
変数宣言時に
char buf[BUF_SIZE] = "";
と書くとbufの先頭1バイトだけでなくBUF_SIZE全部が終端文字で初期化されます。
これは標準なのでしょうか?
>>841
「終端文字で」ではなく、「残りは、staticな変数と同じように」
初期化されます。それが規格どおりの振る舞いです。
>>842
すばやいご回答ありがとうございました。
volatile int i;
void signal_handler (int s)
{
  i = 1;
  printf ("%d\n", s);
}
↑ここでprintfを呼ぶのと
int main ()
{
  signal (SIGINT, signal_handler);
  while (!i)
    printf ("%d\n", i);
  return 0;
}
↑ここで割り込みを入れるのと、どちらがいけないということですか?
>>844
(断っておきますが、これはC言語の範囲を超えた話題です。)

mainからprintfを呼び出して実行中にシグナルを受け取ったとします。
そのとき、printfが何かの資源をロックしていたとします。
signal_handlerの中からprintfを呼ぶと、デッドロックが起きる可能性が
あります。

汎用の解決策は >>840 の通りです。処理系によっては、シングルスレッドの
プログラムだとprintfが資源をロックしたりしない(したがってデッドロック
が起きない)かも知れません。
>>845
説明して頂いてどういうことか分かりました。
この例では両方で呼び出してはまずいということですね。
割り込みをするプログラムでは、
printfを使ってはいけないのかと思ってしまっていました。
ありがとうございました。
>>798
その前に糞スレの削除依頼出してこいや
話はそれからだ
848デフォルトの名無しさん:02/11/14 04:09
線形リストだぜははっと、さくさくプログラミングしてたんでしが、、
リンクにポインタを使ってたばかりに、reallocしたら大変な事になって
しまいますた。

問題なのは当たり前だけど、reallocを使う可能性がある時は整数インデックス値
振らんといかんの?ってのは常識!?
>>848
まともな日本語で書いてみてくれないか。
int a[] = {1,2,3,4,5,・・・・・};
と配列を初期化したとき、配列の要素数を簡単に知る方法はありますか?
>>848
ひょっとして、リンクにつながった要素をreallocしようとしてるとか?
(1)大きさが変わる可能性のあるものは、リストにつながってる構造体とは
別にして、リストの構造体からポインタで指す。
(2)双方向リストにして、reallocする前にいったんリストからはずし、
reallocの後で挿入しなおす。
のどちらかで解決。
852デフォルトの名無しさん:02/11/14 04:54
すまそ。

レコードの増減・並び替えが行われるデータ構造があるんだが、最初にこれを読み込む時
にはレコード総数が分かっているのでmalloc(データ構造*レコード数)という感じでメモリ確保
していたんだ。
で、データの追加・削除・並び替えが発生するんで、リスト構造にし、リンクにはレコード
参照ポインタを使っていたの。
しかし、ここで問題があって、データの追加・削除時にはreallocを使って全データのメモリ
を再確保していたんだよね。
これすると、メモリアドレス変わっちまうんで、リンク情報が役に立たなくなって困ったわけ。

1レコード読むたびにmallocして、追加・削除するたびにもmalloc,freeしていれば
よかったんだけど、レコード数が多いから速度的に難があると思って、全データを
一気にmalloc,reallocしてたの。

漏れ、
非常識なんだろな。
853デフォルトの名無しさん:02/11/14 04:57
852=848
ですた。
>851 ありがと。
>>852
追加時にreallocする必要はないだろ。(1個ずつmallocすればよい。)
削除時にreallocは無理だろ。(途中だけ削除したりしないのか?)

いずれにせよreallocはやめるべし。
最初にまとめてmallocするのはそのままでもよい。
freeする替わりに、自分で作ったフリーリストにつないで置けばよい。
追加のときはフリーリストから空き構造体を取り出す。フリーリストが
空ならmallocする。
>>850

sizeof(a)/sizeof(i)
856855:02/11/14 05:05
iてなんじゃい(欝
sizeof(a)/sizeof(int)だ。
>854
> 削除時にreallocは無理だろ。(途中だけ削除したりしないのか?)
リンクポインタだけ書き換えて、全データサイズ縮小realloc・・・すまそ。
厨な組み方してました。阿呆です。厨でも組みませんな。逝ってきます。

>freeする替わりに、自分で作ったフリーリストにつないで置けばよい。
>追加のときはフリーリストから空き構造体を取り出す。フリーリストが
>空ならmallocする。
そっか!なるほど。
フリーリストとは思い付かなかった。
質問して良かった。ありがと!!
(int)(sizeof(a)/sizeof(a[0]))
859デフォルトの名無しさん:02/11/14 05:54
>>858
なぜintにキャストするのかわからん。
unsignedのままじゃまずいのか?
まあ、線型リストでreallocは普通しないな。
>>859
unsigned だと何か突っ込まれるんじゃないかと、無い知識を総動員してキャストしてみたものの
結局突っ込まれてしまった…に一票。
862デフォルトの名無しさん:02/11/14 07:05
ポインタを置く領域をmallocするとか・・・
>>861
おまえのようなバカに優しいCスレ住人の俺が教えてやるとだな、
いや、教えるのもめんどうなのでエキスパートCプログラミング54ページを読め。
バグをバグと見ぬけないプログラマは(C言語を使うのですら)難しい。
>862
レコード個々にmallocが必要になってパフォーマンス悪くならない?
malloc後のソーティング,追加削除は配列よりポインタ配列の方が速いな。
他の構造と比べても単純で操作も難しく無い。
867デフォルトの名無しさん:02/11/14 09:20
>>866
意味がわかりません。
863はsizeofが返した値をいちいちintにキャストしているのかな。
わざわざunsignedにしてあるのに(ワラ
869bloom:02/11/14 09:37
(int)strlen(str);
>>867
(*^o^*)
>>871
(*^o^*)ごるぁ♪
>>ALL
(*^o^*)おはよう♪
ヌル文字なんて存在しないよね!?
あるサイトに「文字列の終端はヌル文字で・・・」ってあったYO!
これマジでネタじゃないから、ちょっと不安になった・・・
もっと面白いネタを用意して出直してこい
>>873
ASCIIの「'\0'」をヌル文字またはナル文字と言うことはありますが何か?
またNULLポインタ「NULL」とは別物ですが何か?
最後にヌルストリング「""」と言うものも存在し
上記三種は全て別物ですが何か?
876initialization:02/11/14 11:25
Type_A object[2] = {[1] = {.member1 = "hoge", .member2 = 3}};
簡潔厨のコード*hoge->str++ = ch;見る人の事まで考えたプロのコード*hoge->str = ch;hoge->str++;
878デフォルトの名無しさん:02/11/14 12:07
>>852
リンクにポインタではなく、配列のインデックスを使うと良い。
>>877
見る人の事まで考えて、改行してくれ。
>>877
むしろ冗長
881デフォルトの名無しさん:02/11/14 12:59
\0ってナル文字、ヌル文字以外に呼び方あるの?終端文字?
>>881
C では普通考えられないが、\0 以外が終端文字になる事もある。
ナル文字、ヌル文字を覚えておけば普通は問題無いが、単にゼロと呼ぶ人がいる
すも知れない。
>>880はプログラマー辞めた方が良いな…,哀れ過ぎる。
*hoge->str++ = ch; を読めない人の方がプログラマ辞めた方が良いと思われ
while(fgets(...))はいかんらしい。while(fgets(...)!=NULL)とかかないとダメらしい。


ワラ
その話はもういいよ
論争スレ逝ってくれ
相手の打ちにくい所にボールを返すのが糞プログラマー
相手がどんなボールを打って来ても打ちやすい所にボールを返すのが真のプログラマー

糞プログラマーの言い分は決まって「へぇ、そんなボールも打ち返せないんだ」
真のプログラマーは糞プログラマーと同じ事を苦も無くできるが打ち返す側の
事も考慮する。
877=883 が何も考えていない事はよくわかりますた。
>>886
論争ならここですればいいだろ。そのためのスレッドなんだし。
>>887
意味さっぱりわかんねーよ。
バカスカ打たれてたらピッチャー降格されるだろ
>>887
C に関する話ならここでもいいけど、コーディングスタイルは直接関係ないだろ。
892891:02/11/14 13:53
889 宛てだった・・・
ネタスレなんだからいいじゃん(*^o^*)
>>888=一人で勝手に自己完結させる(完結|簡潔)厨
>>885
所詮宗教問題であって間違いなんて無いのにワラなんてつけてるところが
相手の意見をまともに聞こうとしない厨房であることが明らかなのだが。
>>868
比較する可能性があるならすべきだが。
>>891
板違い。マ板逝け。
論争嫌いがCスレに来る資格は・・・・無い!
ここは論争スレじゃなくて質問スレだろ。スレタイみろや。
どっちにしてもあふぉのJPSがつくった論争スレがある。
http://pc3.2ch.net/test/read.cgi/tech/1037105440/l50
論争すんだったらこっちでやった方がいいと思うよ。
実際このスレ寿命みじかいのは論争のせいだし。
このスレ以外に宿題とかなしでCのこと訊けるスレないじゃん
>>899
質問にどう答えるべきかの考え方が
人によって違うんだから、質問されたら論争になるのは
仕方がない。
ここの論争ってのは大抵簡単な質問から始まる。
簡単な質問が論争につながってしまうのは
Cが論争を引き起こしやすい言語だからだ。
>>900&901
じゃあスレタイ変えたほうがいいしょ?
質問&論争スレとかさ。
質問しにきた香具師が、困るにきまってる。
>>902
そしたら余計論争烈しくなるじゃん。
今ファイル操作をやってるんですが、コマンド引数を使わずに
char型の文字列にファイル名をプログラム中で入力させて、
読み込む事とかできますか?
また、それを関数に渡して、その関数の中で処理することはできますか?
>>903
だから分けろっつてんの。
質問きて論争になるんだったら、そっから論争スレにうつりゃいい。
>>904
「char型の文字列」では多分できない。
>>904
出来ます。
char 型の文字列
美女の女性が馬から落馬した
>>905
そうだね。そっから論争スレにうつればいいね。
頑張って誘導でもしてくれ(w
正直、仕切り厨の方がウザイ
まともなことを言っている奴が叩かれる。2chらしいな(w
>>910
わざわざ当たり前の事いうお前もうざい
>>906
>>907
どっちですか?
914デフォルトの名無しさん:02/11/14 20:39
LINUX(CYGWINですが・・・)上でC++でプログラミングをしています
あるプログラムをライブラリ化して、そこから関数を呼び出すということをしたいのですが、
Win32+MFCでの経験はあるのですが、LINUXでのやり方がわかりません。
Win32の場合はDLLを作ってヘッダをインクルードして・・
というやり方だったのですが、それをCYGWINでやるとしたら
どのようになるでしょうか?
>>912
自分のことですか(ワラ
>>914
C言語に関する質問はここでしてください。

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

スレ違いsage
>>LINUX(CYGWINですが・・・)
( ゚д゚)ポカーン
CYGWINはLinuxエミュレータなんだからLinuxでもいいじゃん。
>>150
こんな話題はどうでせうか。コンパイルできるか?できるとしたら実行結果は?
#include <stdio.h>
#define foo(a) putchar(a)
main()
{
printf("hello\0" "12");
foo /* */ ('\n');
}
>>919
(゚Д゚)ハァ?
>>919
勉強になんねーよヴォケ
>>919
もしかして「この問題みんなには分かんないんじゃ.....ワクワク」
とか思ってたのか?
それとも単なるゴバク?
アイタタタタ・・・
>>919
今 2ch への書き込みが滅茶苦茶遅いのはお前のせいか?
>>924 なんだそりゃw
926デフォルトの名無しさん:02/11/14 21:01
>>896
えー!
じゃああなた本当に(int)strlen(str)なんてやっているの!?
if(strlen("aaa")>-1)が偽になるってやつでしょ?
927デフォルトの名無しさん:02/11/14 21:09
C言語って一日2時間くらいやれば何年ぐらいで「C言語できるよ」って言えるくらいになりますか?
928913:02/11/14 21:10
913ですが、どなたか質問に答えていただけないでしょうか?
>>904
>>928
粘着する前に、自分の日本語を確認してくれ。
>>927
本人の能力と、やる気と、環境による。
他にどんなプログラミング言語を知っているかにもよる。
931913:02/11/14 21:19
できました。始めはできなかったのに・・・
>>902
ここのスレタイが糞なのは周知の事実
>>932
粘着死ね
>>926
まさかキャストしないと言うんじゃ・・・
935デフォルトの名無しさん:02/11/14 21:32
>>934
しないんじゃなくて負の数と比べるなんて馬鹿みたいなことはしないよ。
つーかintと比較するならキャストすべきと言ってるんだが。
size_t の値と int とを比較するってどういう場面か具体的に挙げてくれ。
>>937
intの定数と比べるのが多いと思うが、その定数を負の数にするやつは阿呆。
論争に決着がつくまでは質問の答が決まらない。
だから質問スレは必然的に論争スレ。
>>939
スレ分けには基本的に賛成だが、あなたの日本語はおかしい。
「だから」 の前後が全く繋がっていない。
941939:02/11/14 21:46
>>940
スレ分けは無理だと言っている。
質問→論争→答
の順序なんだから。
Ruby>>>>>>>>>>>>>>>>>>C言語
>>941
だからさ、なんでそこで論争するわけ?
分かってる答えも論争のせいで答えられなかったら
質問スレの意味ないべ。
論争になる質問とそうじゃない質問があるじゃん。
質問してくるやつらは関係ないしょ?答えを求めてるだけで、
論争をみたいわけじゃない。
だったら別の場所で論争して、結論でたら、こっちに来ればいい。
そのほうが質問してくるやつもわかりやすくない?
ファイル入出力のオプション(?)で、
上書きするのはなんですか?
wでやると、中身がなくなってしまうんですが・・・
>>941
>>943
ここでもう、論争が始まっている。
>>943
何故議論が起こって、どのように解決したかが分かった方が
質問者にとってもいいじゃん

>>944
a
>>943
現になってるんだからしょうがないだろ。

つか、「みんなが分かってる答」なんてのが
1つに決まる質問ばかりとは限らない。
if文やwhile文の本体が1つの文のとき、{と}でくくらないで
コードを書いていたんですが、師匠に必ず{}でくくれと
怒られました。そういうものなんでしょうか?
>>948
師匠がDQNなのでわ......
>>948
経験をつめば分かります。
>>948
当り前だ。必ずくくっとけ。
952948:02/11/14 22:01
見事に釣れました。
油断したよ
ん?括る派が多数なのか?
人に強要する理由でもある?
955948:02/11/14 22:02
>>952は偽者です。

>>949-951
どっちなのでしょうか?
漏れは括らない。
それでトラブルが起こった事は一度も無い。
>>946
>何故議論が起こって、どのように解決したかが分かった方が質問者にとってもいいじゃん
確かにそうだけどさ、議論ばっかでこのスレが死んでいくのもどうかと思う。
943がいうように、論争なんか見たくないやつもいると思うしよ
見たいやつもいるかもしれんが

どっちにしてもスレタイが悪いんだよ
質問スレなんていったら、普通は論争しなさそうだし。
「おまえら!Cの質問一生懸命考えます」って感じにすれば
>>954
仕事ではあわせる必要がある。
>>955
ただのコーディングスタイルの問題だから、自分の好きな方を選べ。
師匠の風当たりに耐えられなかったら、師匠の前では括る方を選べ。
960947=948:02/11/14 22:04
>>955
やるな。そうきたか。
>>958
意味がわからん。
何の答えにもなってないぞ
何だ、スレタイは >>702 でよいという事か?
>>944
上書き? wが上書きだけど。
追加ならa
>>961
答え出す必要あるの?
>>956
トラブルがおこったことが無いのは経験が浅いから。
方針が括る括らないか限らず括弧がある/ないと勘違いしてミスったことはあるはず。
>>961
コーディング規約に合わせるという事だろう。わかれ。
>>964
はい?
>>961
コーディング規約に従うという事だろう。
>>944
あ、もしかして書いた部分だけ上書きして、他の部分はのこしたいということ?
それならメモリにファイルの内容を全て取り込んで、メモリ上で上書きするといいよ。
最後にその内容をwで全て書き出す。
970947=948:02/11/14 22:08
いやー、「質問されたら論争は必須」を実証するために
意見の割れそうな質問してみて、実証できたわけだが、
>>955の方が上わ手だった。 まいりました(w
>>965
トラブルが起きるのは経験が浅いから。
括弧がある/ないと勘違いしてミスったことなんか無い。
つーか C はかれこれ 10 年書いてますが何か?
>>966
んなこたぁ分かっとるわ。ハゲ
973947=948:02/11/14 22:10
見ての通り、結局スレタイは「質問&論争ウエルカム」
ということで
>>971
経験が浅い時期がなくて経験をつんだ奴なんていない。
>>973
まあそれは同意する。
>>969
r+
>>969
えーと、ちゃんと説明します。
まずプログラムAでファイルに500個の1から1000までの乱数を出力して、
そのあとプログラムBで、そのファイルから読み取ったデータを
照準にソートして同じファイルに出力したいんです。

プログラムBは入力と出力の両方必要なんで、はじめはrで読み取って
いったんfcloseしてから、wしてたんですが、これじゃだめですか?
あとファイル操作一回で同じことができたら教えて頂けませんか?
>>972
じゃ、お前が答えだせ。
>>971 は10年間、20行以上のプログラムを書いたことがない。
>>976
それで途中を書き換えても大丈夫だったっけ?
>>980
yes
982977:02/11/14 22:13
すいません。照準じゃなくて昇順でした。
あとプログラムBでのファイル出力は、上書きでしたいです。
元のデータを消して。
>>981
そうか。さんきゅ。
今日は日本語が不自由な人がたくさんいますね
>>974
( ´,_ゝ`)フーン

>>979
そう思いたいならそう思っとけば。
事実は違うから、漏れは気にしない。
誰か次スレ立てて。
間違ってもあのウンコを再利用しようなんて思わないで。
>>984
誰のことよ。お前の理解力がないんだろ(藁
タイトル: char *c[43] = {"C言語のことは漏れに聞け!"};

まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しろ。
むしろ質問する前にWEBで検索するのが常識だ。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへ行け。
コンパイラを探しているなら >>2 を見よ。

上記を逸した場合の結果は激しく未定義とする。

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

前スレ
c[42] = "http://pc3.2ch.net/test/read.cgi/tech/1037101156/";
【コンパイラ】
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
>>988
俺に聞けは嫌だ。
C言語相談室にして。
do {
} while (...);
の本体も、文が1つのときは{}を外したほうが良いのでしょうか?
>>993
そのほうが見やすければそうしてください
>>988
俺に聞けは嫌だ。
C言語論争所にして。
相談室だけはやめてくれ
個人的には、一行で収まるときは{}をつけないことが多い。
do whileはちと微妙。
1000
1000
>>985
一人でやっている奴には一生分からない。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。