1 :
デフォルトの名無しさん :
02/11/12 20:39
2 :
デフォルトの名無しさん :02/11/12 20:39
3 :
デフォルトの名無しさん :02/11/12 20:42
4 :
デフォルトの名無しさん :02/11/12 20:42
>>1 オレに聞け!が伝統だったのに…
まあ、どうでもいいけどさ。
6 :
デフォルトの名無しさん :02/11/12 20:53
>>1 > 未定義・処理系依存ネタはご遠慮ください。
> 誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。
> 規格オタクはこのスレッドには必要ありません。
はあ?
個人的な好みで勝手に禁止事項作るなボケ!
このスレは未定義ネタで食わしてもらってんだぞ。
> 未定義・処理系依存ネタはご遠慮ください。 > 誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。 > 規格オタクはこのスレッドには必要ありません。論争したかったら独自にスレッドを立ててそこでやってください。 つまらない自治オタクもいらないな。 まぁ、過去ログを纏めたことだけは感謝する。 前スレの > 上記を守らない書き込みをした場合、その結果は禿しく未定義とする。 が、俺はC的で秀逸だと思ったのだが...。
>>7 お前らのせいであっという間にスレを使いきってしまうんだろうが。
最近のCスレは だいぶ厨房が多いな。 日下部ほどではないけども。 どこかの雑誌にでも出たのだろうか。 宿題丸投げとかも増えたし。 突っ込まれたらすぐに「ネタ」ってことにしたがるし。
>>1 > 誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。
親切にバグを教えてやってるんだろうが。
12 :
デフォルトの名無しさん :02/11/12 21:10
ビット演算子について教えてください。 どんなときに使うとメリットがあるのでしょうか? (単純に2の倍数の割り算とかは辞めてください。)
ビット演算子??
とりあえず、次スレ使い切るまでsage進行でいこう。 1を叩くのは、次スレが終わるまでってことで。
このスレの寿命:推定3日間
>>9 未定義ネタ禁止にしたら商売上がったりじゃねーか。
こちとらボランティアで書き込みしてるんじゃないんだぞ。
お!? 早速論争か!?
せめて900越えてから、新スレ作ればいいのに。 1はよっぽど自分でスレ立てをやりたかったんだな。
つーか1出てこいや。
くだらないことで言い争う厨房が増えてきたんだから、論争はさけられないでしょ。
議論はお互いの知識の交換なのだから悪いことではないと思うが。
こんなスレの立て方最低。
質問スレで論争していると初心者が質問しにくくなるかもな。
>>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){ /* 奇数の時 */ }
まず、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)は冗長なだけで利点は何もない。
おおお!! 成功しました。 まじで、ありがとう。
>>40 if ( !(n % 379721) ) { /* 奇跡の時 *? }
じゃなくって?
flagが87だろうと-1だろうと1000だろうと==trueは真だよね?と聞きたいのだろう。
本や2ちゃんねらは、あてにならないのでこのカウントする プログラムでC言語を実験することにした。
ごめん。間違いた。
前スレで 「if (flag == true)と書くと、flagの値が真偽値であることが はっきりする」 と書いてた白痴がいたんだよ。
ここはみっともないインターネットですね。
>>50 う〜ん!!どこか渡し、アタマ変でチュカ・・・!
まともな事書いてるつもりなのにょににゃ〜。
話の前提は C99ではないCで #define false 0 #define true 1 int flag; : : if(flag == true) とする。
> 俺あんな次スレやだよ。伝統守って欲しいよ。だからこれきぼん。 タイトルが〜に聞けじゃなかったことなんて何回かあったと思うが・・・
前スレ1000にワロタ
そんなに型を確定させたいなら、 if( bFlag ) とかにでもしとけ
つーかさC言語しか知らん奴が多すぎ。もっと広い目を持て。
このスレに、ジサクジエンがいまちゅね・・・!!
>>54
ハンガリアンキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
あの熱さはネタじゃない。そうさ、奴はいつだって全力投球さ。
65 :
デフォルトの名無しさん :02/11/13 01:50
if (flag)擁護派はC言語しか知りません。
>>65 PerlでもPHPでもそう書いています。
>>68 JavaやC#やVB.NETではどうですか?
>60 #define begin { #define end } とかやる人でつか?(w
で、この話題で得ってあんの?
1レス10円だそうです
なんでCスレで他の言語を持ち出すのか謎。
>>74 C使いが他の言語を知っていることを証明するためです。
このソースを愚弄した奴がわるい。 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) これなら明解だろ。
わかっとるわ〜い( ゚Д゚)ゴルァ!
>>76 そのソースを愚弄したんじゃなくて、意味不明な質問を注意したんでしょ?
>>78 おまえのいう「たいていの言語」ってなんだよ?(ワラ
(´-`).。oO(DQNの
>>75 祭りの予感…)
>たいていの言語 CスレなんだからCの話すればいいじゃんよ・・・
32 ってまじやばくない? さっきから挙動不審なんだけど?
CならCらしいプログラムを書く。 他の言語ならその言語らしいプログラムを書く。 これじゃだめなのか?統一しないとだめなのか?
Cで叩かれたので他の言語を持ち出して優位になろうと必死 しかしスレ違いでまた叩かれる罠
Javaだとそもそもif文の条件にはboolean型しかかけない。 だからif (flag == true)なんて書くアフォはいない。
Cでこの程度じゃ(以下自粛
だったらこれ、一致させてみてくだちゃい。 なお、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
もしflagがtrueかfalse(=0)しか取らないなら、 if (flag == true)は単に冗長で無駄で見にくいだけ。 もしflagがtrueやfalse以外もとるなら、 if (flag == true)で真偽をテストするのは単なる間違い。
>>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言語の仕様が糞ということでしょ。
だから、ユーザーが指定した数をカウントする関数 をつくるのが目的なんだよ。 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(略
>>111 おまえ、完全に荒らしじゃねか〜.
じゃあ!!どの変がやばい・・・いってみろ
>>108 > 起きるとしたら普段if (flag == true)と書いてるアフォが
> if (flag = true)としちゃったときだけ。
それってJavaの話だよね。そんなことって出来たっけ?
カウントするだけで配列、それも二次元配列使うのがよくわからん。
ソース読んでないけど、そもそも「ユーザーが指定した数をカウントする」 ってのが具体的に何をすることなのかよく分からない。
>>32 は こ の 先 放 置 で お な が い し ま す
boolの話はもう終わってるし、
>>32 は違う意味で終わってるから、
他の話題きぼんぬ。
>>116 だから、具体的にどんなときだよ
ってこれ昨日もでたネタだな
>>116 単に !=0 が省けるだけやん。
そのおかげでどれだけみんな苦労してるか。
>>121 同じ処理をするならソースは短い方が無条件に(・∀・)イイ!!
>>122 C の実装?????????????????????
釣 ら れ る な
>>115 ご返答・・・ありがとうございます。C言語いじってるうちに
配列の格納にABC
DEF
GHIのようにカウントできたらいいなと思ったんです。
C言語は、人によって色々記述がかわってくる。 それが、
特徴であるはず。 まあ、わかりやすいはべつだが。
つまり、めんどくさかったんです。strcpy(str[i],"ABC");のように
するのが。 今はint型だけど、最終的にはchar型にも
使えるようになったらなと思って作ったのよ。
128 :
デフォルトの名無しさん :02/11/13 02:16
>>103 俺の場合は判定はエラー捕獲が多いから
if(flag == NULL){
/*エラー処理1*/
} else if(flag2 == NULL) {
/*エラー処理2*/
} else {
/* 通常処理 */
}
と書く時が多いな。最後のelseを省略すると更に簡潔になる。
因みに同じ事をTRUE判定でやろうとすると,
if(flag) {
if (flag2) {
/* 通常処理 */
} else {
/* エラー処理2 */
}
} else {
/*エラー処理 */
}
ネストができ、elseも取り除けない。
「プログラム作法」で学んだ。
あのな、boolしか書けないようにしとけば、 == と = を取り違えるバグが99%くらい 無くなるだろうが。
32 は何? アルコール? クスリ? ビョーキ?
s/NULL/FALSE/g だった、失礼。
>>129 まじか?
if ( !flag )
で解決だと思うんだが
136 :
デフォルトの名無しさん :02/11/13 02:19
>>127 カウントって数えるという意味で使っているよな?
if not (condition...)と読めたほうが素直だね。
>>129 なぜNULLなんてものを使う? これでいいだろ。
if(!flag){
/*エラー処理1*/
} else if(!flag2) {
/*エラー処理2*/
} else {
/* 通常処理 */
}
>>136 これ以上、折れになんの答えを求める。 なぜ、実際に
みてわかろうとしない。
!flagかflag==FALSEなんかスタイルだろ。 スタイル論争は不毛だからやめてクレヨン。
>>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!」という話題が無いな・・・
でないと配列に格納するときにカウントってのがさっぱりわからん
>>132 からっている、バカリでなくその根拠を述べよ。
折れのソースのどこがやばい・・・。
>>144 そうだっけか。それが出来ないのはC#だっけ?
>>135 *p++ = *q++ も警告してほしいか?
コンパイラに、=が正しいか==が正しいか区別できるか?
(人間でもぱっと見 まようけどなー)
ぱっと見 まようようなコードは書くな。
>>149 まあ、ハッシュを使えばそうなるが。
色々と、C言語のポインタとかにも悩んでいてな。
型の性質を、知るためにこれで実験してるわけだ。
色々と・・・・。
反論が無いのでオレの言うとおりとする。
>>159 ああおれか、
警告出して欲しくないのは括弧でくくってる。
詭弁の特徴のガイドライン 4:主観で決め付ける 147 :デフォルトの名無しさん:02/11/13 02:24 !sがなぜミスを起こしやすいのか分らんが... フォントが小さいのでは?
このスレ、さっさと1000付けてセンスのある別の1の次スレきぼんぬ。
>>162 議論に負けると必ずそれ出すやついるけど、同一人物か?
>>161 うん。そうするくらいなら
(*p++ == *q++)と
(*p++ = *q++) != 0と
書き分ければよいだろう?
(*p++ = *q++)と書ける便利さが、
これをエラーにしてくれるときの安全さを
上回るか?というと疑問だと思う。
・・・なのでは? これって決めつけだったのか。
>>163 確かに・・・。 人のソースを読まずに馬鹿にする奴だからな。
>>32 int a;
printf("整数を入力しる:");
scanf("%d",&a);
printf("入力された値は %d ですが何か?",a);
っでカウントしたことにならんのか?
!sがミスを起こしやすいってのは主観的だよね。 それもかなり偏った…
安全を犠牲にして便利さを追及するやつは原子力推進派
詭弁の特徴のガイドライン 7:的を射たことを言われると「ネタはもういい。」と言う。
詭弁の特徴のガイドライン 4:主観で決め付ける !sがミスを起こしやすいってのは主観的だよね。 それもかなり偏った…
>>168 ならないのです。 あくまでも、カウントって
count++;みいたいに、1,2,3,4,5,6←これが、カウントだ。
まあ、こんな簡単なんじゃないけどね。
ようは、for文を使った簡潔な記述をしたいわけ。
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;
}
うっせよ・・・
>>177 これの、どこが理解できない。
だからスタイルに答えなんかでないんだって・・・
>>173 詭弁ってのはもう少し上等だよ。
どこが間違ってるか一見わからないようなもの。
! s が読みにくいなんていう、一見してジョークと分るのは
ネタという。
>>173 煽りに堪えてよく煽り返した、感動した!
>>184 厨房のガイドラインの方がよかったか?(ワラ
>>32 おまえ、「たこくじら」だろ、マスターネットに居た。
煽りに堪えかねて煽り返したわけだが
>>181 いやオもろいけど・・・。おもろいけど
while(kbhit())関数使おうよそんなANSICに違反した書き方
はいいから。
!が見にくい老眼の人は、 #define NOT ! とか、 #define IS_FALSE(x) (!(x)) とかしとくと良いと思う。
>>191 ひとりでままごとしてるんだからほっといてやれ
だれにでも分かりやすいスタイル if(flag==FALSE) そうでないスタイル if(!flag)
>>190 ANSI Cに違反していないだろ。
ANSI Cの標準ライブラリにない関数を使っているだけで。
あー、コーディングスタイル論争うぜー
人のソースもろくすっぽ読んだ事の無いアホな
>>184 が何か言ってますよ、Knuthさん。
ループ
>>197 あー、こーでぃんぐ すたいる ろん あらそうぜー
に見えた
>>194 そういう変わったスタイル押し付けるのはやめようぜ。
なんか今日はろくな話題がないな。 スレタイの伝統を破ったせいかな。
このネタで朝まで逝けそうだ(藁
>>203 伝統ならとっくに破られていたような・・・
疲れてるんだよ。
11:レッテル貼りをする 192 :デフォルトの名無しさん:02/11/13 02:48 !が見にくい老眼の人は、
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)<
>>1 がド厨房。
( ) \_________
| | |
(__)_)
てか if ( flag == FALSE ) がいいなんていってんのは独りだけだろ?
336: C言語の事訊いて!!!第.38支部 (1001)
>>194 OK,わかった。
老眼の藻前に!sと書けとは言わんから、
その変態的スタイルを主張しつづけるのはやめろ。
見づらかったらフォント替えれ。
>>210 俺以外に言っている奴がいることは確かだ。
そんなスタイルどっちでもいいって。
ばかばっか
>>194 ひょっとしてチミは
if (isalpha(c) == FALSE)
と書くのか!?
if(!flag) こんな書きかたするから見にくい if ( !flag ) スペースを有効に使え
4:主観で決め付ける 210 :デフォルトの名無しさん:02/11/13 02:52 てか if ( flag == FALSE ) がいいなんていってんのは独りだけだろ?
>>222 んなセンスないことしたら、せっかくis...と名付けてるのが
だいなしじゃん。
>>223 ふつー
if (! flag)
だろ。
|| ∧_∧ || ミ,,・∀・ミ Λ_||_,,, (シ つ(;;;。∀゚;.) ∧_∧ @ミUノ (:#," @ _(・∀・,∩ ヒィーヤッホウゥウ |,;.#;|';::.|⊂____つノ (__)_) __∧__________ / ボロボロになってきたデチ
たしかに飽きた。 だからお前は勝手に==FALSE書いてろや。 一緒に仕事しない限り文句は言わん。
8:知能障害を起こす
226 :デフォルトの名無しさん:02/11/13 02:57
>>224 いいかげんあきた
>>223 括弧の内側に空白あけるのは典型的DQN
>>222 194じゃないけどisalpha(c)は日本語にすると「アルファベットか?(c)」だから==FALSEは書かない。
>>233 お前は勝手に「俺スタイル」で書いてればいい。
だから、世の中の人々のスタイルに口を出すな。
つーかスタイル論争自体むだむだむだ
今日は一段と厨房レスばかりだな
昔は、if(hoge == FALSE)なんて書いたらアホコード吐いたんだよ。あほ。
あと、 return(x); みたいに書くやつ。 関数と文の区別がついてないんじゃないか?
すべて1が悪い。
ダメだこりゃ
>> 237 これの、どこが世の中に人々のスタイルなわけ。
>>32 int main( void ) {
int i;
puts ( "好きな所で止めろ" );
getchar();
for ( i = 1; ; i++ ) printf ( "%d\n", i );
return 0;
}
>>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]);
}
}
表示結果 ABCD EFGH IJKL 65 66 67 68 69 70 71 72 73 74 75 76
スタイル厨必死だな
ああ・・・。 だったら、これ答えてよ 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; }
>>252 if ((str = (int**)malloc(sizeof(int*) * m)) == NULL) {
じゃなくて
if (!(str = (int**)malloc(sizeof(int*) * m))) {
にしろって。話聞いてなかったのか?
{x^(-2/3)}・{(1-x)^(-1/3)} ← これを表わすのに、 pow(x, -2/3)*pow(1-x, -1/3) ← この書き方で合ってますか?
>>251 へえ。じゃあ「アルファベット以外」ってどう書くのさ。
「アルファベットでも数字でもない」ってのは?
>>252 まあ、大分内容は変わってるが参考にはなりそうだ。
整数/整数って浮動少数で評価されたっけ?
>>259 合ってません。整数/整数は切り捨てて整数になります。
>>263 されないけど、powに渡せば結果がdoubleになるだろ?
>>264 あの、>259のような場合どういう書き方をしたら良いですか?
268 :
デフォルトの名無しさん :02/11/13 03:13
str = (int**)malloc(sizeof(int*) * m); if (!str) {
あー、この場合はわり算をするときに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 なんでわざわざ二つに分けるんだ? 一行でいいだろ。
>>272 if(isalnum(c)){
/* なにもしない */
}
else{
/* ここでなにかする */
}
これくらいしか思いつかない・・・・
>>278 だって!を使ってはならないって言うし!
if (!(str = (int**)malloc(sizeof(int*) * m))) { なんて書く奴はDQN
>>274 何でもかんでも一行で書かないとダメな人?
>>272 ん? おれは「!マンセー」派だもの。
読みやす〜く
if (!isalpha(c))
if (!isalnum(c))
と書くわさ。
あんたは!使わずにどう書くんだい?
if ((str = (int**)malloc(sizeof(int*) * m))==NULL) { の方が見やすいと思うが。
>>279 !を使わないやつはDQN
真似するとDQNが移る。
>>274 while では一行でかくこともある。
でも if では必要ない。
>>286 世の中の教科書もFAQも規格も全部こうだゴラァ
疑うなら自分の感覚だろ。
>>284 str = (int**)malloc(sizeof(int*) * m)
if (str == NULL) {
の方が一番イイ!
>>288 >>世の中の教科書もFAQも規格も全部こうだゴラァ
知障か?
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)... }
>>252 恩に着る アフォに汚染されるところだった。
もしかしてこんな関数を作りたかったのか? 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 の中だとどうするんだ?
mallocなんて戻り値チェックしなくていいよ。
303 :
デフォルトの名無しさん :02/11/13 03:25
分けられんわけじゃないがカッコ悪い。 for (;;) { str = ... if (str) break; }
>>277 =279頭が固い人?「使うな」なんて一言も言ってないが。何もしないら、if(!isalnum(c))って書くに決まてるだろ。アホか(藁
>>301 mallocが失敗するような状態で、そのあとどうするの?
テヌキアプリならセグフォルで落しちゃった方がよくない?
というのは、ありえるかも。
>>305 必死に反論考えて
辿り着いた答えがそれですか?(W
>>298 whileでやってよい書き方が、
なぜifではダメなんだ?
whileでも、同じコードを2回書けば
必ず分けられるじゃないか。
条件の中で (変数=値)== 値
が汚いというなら、徹底しろよ。
まったく不統一な頭したやつだな。
>>306 てぬきというか、自分だけしか使わないようなものなら多分失敗しない。
>>309 同じコードを2回書くのは悪いプログラミングの例だが?
>>308 必死に反論考えて
辿り着いた答えがそれですか(W
変数=値 変数 == 値 でいいだろが。
>>302 else {
if ...
else {
if ...
とネストを深くしていくのかよ。
変わってるねー。
そういえば、いままでmallocがNULL返してきたことないな。 チェックしてても落ちる。
>>306 mallocが失敗してもすぐ落ちるわけじゃないし、ある程度不正な状態で
コードが進んで何か悪さをするより自分で落としたほうがいい。
>>317 mallocしたらすぐにその領域を使わない?
NULLにアクセスしたら落ちることが多いと思うけど
glib の malloc (g_malloc()だっけ?) は malloc に失敗したら abort するようになってるよね。確か。
>>318 argc>2ならエラー
==2なら、argv[1]をファイル名としてファイルを開く。
開けなければ"default.txt"を開く。
開けなければエラー。
って、あんたのやり方だとどんどんネストが深くなるが?
>>319 たまーに、仮想アドレス0x0周辺を書き換えておいてノホホーンと
さきにいくような処理系とOSが…あるのかな?
>>320 mallocがそんなことしちゃったら規格はずれになっちゃうよ。
g_mallocだと思う。そんな関数しらないけど。
>>323 glibc じゃないよ。glib ね。Gtk+ に使われてるやつ
getsもあんな危険な関数だけど、標準ライブラリ関数だから仕様を勝手に変えたりライブラリから外すわけにはゆかないんだよね。
>>325 じゃあ多分g_mallocだと思うよ。
標準のmallocとかぶっちゃうし。
しかしmallocがNULLを返したからと言って大した対処もできないならg_mallocのようにするのも良いかと思う。
>>321 たかだかネスト2つだと思うんだけど、どういうやり方してんの?
結構あるんだな・・・ まあ自分専用のプログラムでもないかぎりは、mallocの戻り値チェックは鉄則だと思うけどね。
>>329 よく「mallocできないと落ちる」ラッパー作るよね。
「mallocできないとエラーハンドラ呼び出す。
ハンドラは変えられる。デフォルトはabort。」
としてくれると良いかも。
>>330 んで、そもそもなんで2つに分けたいか聞きたいんだけど。
単に「わかりにくい」とかいう主観的なのは却下ね。
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 分かりにくくてもいいなら全部一行で書けよ。
stddef.hも必要か・・・
>>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の判別はできないはずだが)
結局 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
355 :
デフォルトの名無しさん :02/11/13 03:51
>>353 便利だと思ってるし、好きだよ。
でも if まですることはない。
>>352 いや、まあ、それはそうだが。
だから何?
>>353 わかりにくいから細心の注意を払ってコーディングしなければ
おまいのような誤ちを犯すことになる
>>345 だ〜か〜ら、もうネタはいいって言ってるだろうが!
>>359 は?なんでオレなの?もしかしておまいも
if (fgets(...) != NULL)
とかしてんじゃねーだろーな?(w
>>357 意味不明
結局「しぶしぶ使う」わけ?
じゃあやめれば?
シンプル伊豆ベスト。 シンプルとは一行で書くことじゃない。
>>347 は放置・・・問題外ってことか。
素直に
fprintf(stderr,"エラー\n");
return 1;
としよう。
>>362 は?おまいは自分でわかりにくくないと主張しておきながら
間違えたんだろ?何?負け惜しみか?
>>365 if(fgets(...))でいいだろ。
>>366 おまいは自分で分りにくいと主張しておきながら
whileでは使うんだろ?
まるきり矛盾じゃないか。
>>369 わかりにくいから出来るだけ分けて書くようにする
それ以上のことは言ってないが?
>>371 ああ、しぶしぶ使うってことね。
了解。
373 :
デフォルトの名無しさん :02/11/13 03:56
以上、32以外は全部俺の書き込みですた。
NULLやFALSEって0と見なしていいんですか?
>>375 冗談じゃないが・・・
while(fgets(...))、for(...;fgets(...);...)もよく書く。
普通しないのか!?
>>373 便利だから使うっていうのは矛盾であることを否定したことにはならないのだが。
>>376 内部表現が0であるわけでも、値が等しいわけでもないが、
整数の0とポインタを比較するときは0はnull pointerとみなされる。
また、ifやwhileの条件ではnull pointerは偽となる。
ごめん、いままで#42の板が無いもんだとばかり思って新スレ立てかけたよ。 センスの無いスレ名だな。
>>367-368 ワラタ
おまえらちょっと何行かコード書いてみろよ。
fp,buf使ってファイル読み込んで内容を表示するコードをさ。
ifのやつは出すでしょう。
>>383 while ( fgets(buf, BUFLEN, fp) ) printf( "%s", buf );
ifやwhileの条件で「0以外は偽」「null pointer以外は偽」を 利用するのは、分りやすいとはいえない。 条件には、 ・真偽値として使う変数 ・比較演算子の結果 のみを使うのが分りやすい。 while (i--) なんてのは最低だ。
388 :
デフォルトの名無しさん :02/11/13 04:03
for (i=BUFLEN; --i; )
>>386 >>ifやwhileの条件で「0以外は偽」「null pointer以外は偽」を
マジ頭大丈夫か?
390 :
デフォルトの名無しさん :02/11/13 04:04
真だろ。
>>386 おおむね賛成だが、論理式としては
・真偽値を返す関数
・!論理式
もありだろー。
>>381 何かあったらすぐFAQ読めって、お前はFAQの回し者か?
>>while (i--) なんてのは最低だ。 それをぱっと見て、例え仕様を知らなくても、なにが脱出条件なのか すぐに見当がつかないような「あほ」がPGなんかやってるか?
>>385 うわ。()の内側に空白あけてることからも分る通り、
あまりにもDQNなコード...
while (fgets(buf, BUFLEN, fp)) printf("%s", buf);
>>395 うわ。括弧を全角で書いていることからも分かる通り、
あまりにもDQNな奴...
>>394 自分で分かりにくいと思っているからそういうコメントになるわけだが。
やっぱり「なにが脱出条件なのか すぐに見当がつかないような」コードなんだね。
>>397 だから、それを「わかりにくい」と思うような人間が
PGなんかやってるのかよ・・・世も末だなオイ・・・
fgetsは「真か偽を返す関数」だよね?
>>395 ダメか?見易いと思うんだが。
てか Gtk+ のソース読んでたことあるから
染み付いちゃったんだよね
if (fgets(...)) がわかりやすいなら、同じ理屈で if (!(fp = fopen(...))) も分りやすいことになるね。
405 :
デフォルトの名無しさん :02/11/13 04:09
fp = fopen(...); if (!fp) のほうがいい。
>>404 だからそれは2行に分けれるだろーが
頭悪過ぎ
>>407 きみは
result = fgets(...)
if (result)
と書くのかね。
おい、おまえら。コーディングスタイルについて論争する糞スレは他にあるだろう。 わざわざここでするなよ。
>>413 分りやすくなるなら、それくらいやるべきだろ。
もー矛盾しまくり。
さっきから屁理屈こねてるだけじゃん?何こいつら 二人いるみたいだが
if(!(fp=fopen(...)))は括弧が多くてみづらいってことじゃないの?
>>417 じゃおまいはこう書け
if (!(len = strlen(str), buf = (char *)malloc(len+1)))
たいてい負けると「屁理屈だ」とか捨てゼリフが出てくるな(w
buf = (char *)malloc(strlen(str)+1); if (!buf)
>>422 頭わるっ!
俺は「何でも一緒にしたい」んじゃないの。
「代入と、その値の利用をいっしょにしても良い」と言ってるの。
strlenをifにいれる意味がどこにあるんだよタワケ(藁
>>427 if ではやらない方が分かりやすくない?
代入と、その値の利用をいっしょにするのキモイ
>>427 わりぃ。じゃこうだな
if(!(buf = (char *)malloc((len = strlen(str))+1))
>>432 while ((c = getchar()) != EOF)
もなしか?
for (i=0; i < len; i++)
…たしかにfgetsも代入だな。 俺の負けだ! もう寝る!
それこそstrcpyを使った方がわかりやすいんじゃ・・・
>>434 そうやっていつも極論を出す。
やる必要があるときとやらなくてもいい時を分けて考えろ。
ヒトエちゃんてどこ行ったんだろうな
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 result が if の判定にしか使われなかったらな。
>>454 result = fgets(...);
if(result)
これがクソなのは間違いない
ま、どうでもいいから早くこのスレ埋めちまおうや
>>453 うーん、そりゃそうだな。
しょうがないか。
gtk_signal_connect(GTK_OBJECT(some_widget), "some_event", (GtkSignalFunc)callback, (gpointer)data);
>>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みたいなモード指定方法の方がいいかなーと思ってしまう(笑)
>>473 スペース書けといわれたから書いているだけですが?
>>478 はいはい、悔しかったんだね
よしよし(・∀・)
>>474 第一引数は整数か?
論理和とった値を直に書け。
決してエレガントじゃないが。
それでも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);
スペース除いて 241 桁か・・・。 結局、484 の方法しかないな。 ただ、座標指定 (4 つの CW_USEDEFAULT) は 1 行で書いた方がいいよな。 486 は #define 自体にまんまの実装を書いている事が非常に無意味だ。
これだけ長いと逆に争うまでもない罠
>>485 違う。
先に RegisterWindowEx() でウィンドウの基本的なタイプを決める。
その属性指定が、これまたメンバだらけの構造体。
一行で書けばいいだろ。今時横スクロールできないエディタ使っているわけあるまいし。
>>490 ハハァ・・・
Winアプリ作る時は、C#か、JavaでSWTつかうことにしよっと。
そらアフォも出てくるわ
>>492 おぅおぅ。所詮その程度のレベルだ好きにしろ。
7 行プログラミングの連中がテロ起こしそうな API だよな。
インデントはいくつが正常でつか?
>>498 それはコーディングスタイルの話だから、何が正しいというのは無い。
漏れは 4 桁。
折り返し地点
俺は8。
GOAL!
目指せ今日中に1000。
燃料は無いか?
やっぱ8だよね
さっさとこんなスレ荒らして終わりにしちまおうぜ
GNUは2だったかな。
そんなにいやなら次スレ作っちゃえば?
0 は止めて欲すぃ
>>499 今までもコーディングスタイルの話なんだから固いこというな
次スレのタイトルとテンプレートの話でもするか?
>>506 議論に負けたからって荒らしてログを流そうとすんなよ。
インデントは常に"\t"ですが、まずいですか?
キタ━━━━━(゚∀゚)━━━━━!?
>>511 499 は、「正しいというのは無い」 とは逝ったが、だから議論はやめろとは
逝ってない。
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1098取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√´д`) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \エーーーーーーーッ!?/
//三/|三|\
∪ ∪ (´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)
,,、,、,,, ,,、,、,,, ,,、,、,,, ,,、,、,,, ,,、,、,,,
,,、,、,,, (´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)
http://big.freett.com/scheme_a/num1000.swf
スペースなんかにしたら容量増えるじゃん。
>>516 エディタの設定で好きに変えられるから逆に良い。
>>516 別にエディタでどう見るかは、見る人が好きにエディタの
設定かえればいいだけちゃう?
データとして1バイトですむので、多少はコードサイズ減るし…
>>517 最後の疑問符が見えませんか?
だとするとあなたは、
if(!flag) の ! も見落とすかも知れませんね。
もれは書くときは tab 使うけど 人に渡したりするときは expand でスペースに変換する。
>>524 普通ソースコードはタブ幅決め打ちで書くんだから、作者の意図しないタブ幅に
したらずれるって話だろ。
エディタの設定でタブを自動的にスペースに置き換えるようにしている。 ちなみにサイズは8
でもコード編集中はタブだな。 スペースだと、インデント上げる時に必要なバックスペースキーが多い。
>>527 "\t"が4か8かによって、見え方が異常に変わってしまうような
入れ方しないよ。
インデントは常に、1タブ、2タブ、3タブ・・・であって
1タブ、1タブ+4スペース、2タブ・・・などというアホな事はしない。
あんたやってるのか?たまにそういうソース見るけど。
今日はコーディングスタイルの日か
TABで渡してくれたほうが都合がいいが どうせ整形ツールつかうからどうでもいい 整形ツール使って元と全然違うスタイルにしてしまうのはアリ?
>>530 そういうことじゃないよ
おまえ他のエディタで見たりしたことないんだろ?
プロポーショナルフォント使っていたら崩れちゃう
人に渡すなら書く前に統一しとけばええやん。
>>534 え?プロポーショナルフォント!?なんで?
>>530 漏れはしないけど、あんたの言う通りそういうソースは結構あるだろ。
なんで今日はネタにもいちいちマジレスが返るんだろう
>>536 相手がぷろぽ使っていたら崩れちゃうってこと。
VB みたいに、スペースで桁揃えできない奴はいっそプロポーショナルのが見やすいが、 C/C++ では固定長だな。
>>539 相手がつかってるかもしれないのか?相手ってどんな奴?
インデントがタブのままソースを渡すやつは白痴
>>542 うん。タブにしようが空白にしようが崩れることはあるって言いたいだけ。
>>543 ソース見る奴
タブのまま渡されたソースを扱えない香具師は白痴
>>546 プログラムのソースコードは固定幅フォントで見る、なんてのは
大前提だろ
海原雄山はプログラマに向いているかも知れない
>>548 まあそうだけどね。
というかテキストエディタは固定長で使うのが一般的だよね。
話すことも尽きたからあずまんが大王の話でもしねぇ?
>>551 C と関係無い話はよそでやってください
おながいします
>>553 わかってるねんでぇ、わかってるねんでぇ、バカにしたらあかん。
>>553 そんなこと言っていたらこの糞スレをうめられねーだろ
タブはタブー なんちゃって(^^)
正直インデント幅の話もスレ違いだけどな。でも固いこというな。
ここはそういうスレなんだ。スレタイをつけた
>>1 が何もかも悪い。
あずまんが大王はおもしろいとは思わんけどなあ。
>>556 自分に厳しい芸術家がコード書いたら永遠に完成しないだろうよ。
いい加減だから納品できるのさ〜。
いいペースだ、みんなんばれ。 ただし、じゅもんはつかうな。
あずまんが読んだ事無いから知らん
#define BEGIN { #define END } とか書き出してフランス料理にもPascal風ソースをかければ美味いとか 言い出すんじゃないだろうか。
次のスレ題 「士郎!甘いわ!〜海原雄山至高のCプログラム〜C言語の腕はここで磨け!-相談にも乗るYO!-43」
おまいら海原雄山が好きなんだな
ERROR:サブジェクトが長すぎます。
俺も読んだことはないがアニメで見た。 正直アニメをみてかわいいと思ったのはこれが初めてだ。
次スレのタイトルは 565 でよろしいか?
「美C倶楽部」
「下司どもにCを与えるな〜海原雄山至高のC」
漏れのせいでとんでもない事になったらどうしよう・・・(;´Д`)
センスがないとはいわんが、もう飽きた
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。つーか/**/だとちょっと一行が長くなる。
「(・ロ・)ホ,('ロ')ホ--ッッ!!!…」 ってな何かアホくさ過ぎる。
C言語なら俺に聞け日記。
「C 相談室」 でいいやん。 俺に聞けはまじで飽きた。
char* c[43];がCぽくていいじゃん。
「C言語なら独りでやれ!!」
場末の C
ん?ポインタ配列か。 じゃあstrってのも変だな。
char const * const にしろよ。
>>588 スレタイで表したいのはあくまでも「C」の「何番目」のスレかということだ。
「if(!you_know(C))ask(me);」
>>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 型!
「C言語相談室日記〜自分でやれ」
600 が正解で終了。
次スレマダー?
じゃあみんなのアイデアを総合して、 あずまんが大王のC言語相談室 char* c[43]; で決まりだな、っと!
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]={"あずまんが大王", "海原雄山"};
>>621 サブジェクト長制限に引っかかると思う。
const 長すぎ
あくまであずまんが大王と海原雄山にこだわってるのがいいな
結局論争と電波で終わったか。
#define c const c char * c c[43] = {...};
const consthar * const const[43] = {...};
>>627 お前が電波。
みんな真面目に議論しているだろうが。
「C言語のことは自分の胸に聞け!!!43」
>>635 別にいいけど、俺に聞けはやめてくれよ。
char *c[43]={"あずまんがC言語"};
【ダッコ】C言語はしぃに聞け!!【ダッコ】
俺に聞けか相談室以外に何がある? あんまり長いと弾かれるし。
なにが俺に聞けだよ。 お前ら馬鹿は聞いても答えねーじゃねーか。
char *c[43]={"暴走C言語特急"};
>>640 32はそんなに正常に会話できません
ニセモノバレバレ
電波キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !!
char *c[43]={"ABC言語殺人事件"};
char *c[43]={"あずまんが山岡C郎"};
strcpy(c+10, "海原雄山");
char *c[43]={}このスタイルは決まり?
訂正します。 char *c[43]={"あずまんが山岡C言語郎"};
>>651 ダサいから却下
#pragma 至高の未定義言語、C言語のスレ
char *c[43]={"C言語相談室(*^o^*)"};
C言語は俺以外に聞け。
>>651 それで逝こう。
653 は却下却下却下却下却下。
サブジェクト長は48文字までだとさ BBS_SUBJECT_COUNT=48
>>651 それだと過去スレもうまく収まるからそれで。
"海原雄山C言語"[43]
Cを求めて三千里
検索用に「C言語」という単語も入れたい。
(藤原)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消費するスレになりました。
*("C言語の質問・論争スレ"+43)
>>693 KY 氏と勘違いされるから下却下却下却下却下。
C言語(≧∇≦) ぶぁっはっはっ!!!
>>695 それいい!! 最高にうけた!!
決まり決まり決まり
決定決定決定
>>693 インターネット繋ぎたての DQN の匂いがするから下却下却下却下却下。
char *c[43] = {"真剣!C言語しゃべり場"};
697はDQN
700
正直スレタイなんかどうでもいい。
char *c[43] = {"必死!C言語ほら吹き場"};
どうでもよくないから執拗に
>>1 が叩かれたんだろ。
真剣!C言語しゃべり場 47期 ++DQN
いっそのことC言語のスレッドは今回で終わりにしてしまわない?
char *c[43] = {"粘着C言語テープ"};
706=1
>>705 あ〜 それもいいかも。どうせ同じ事の繰り返しなんだからな〜。
【今日の日は】C言語のことなら俺に聞け!!![最終回]【さようなら】
「必死!」っつーのはいいな。
新スレたっちゃったぞ・・・
機動言語Cダム
Cの質問はスレッド立てるまでもない・・・でやってくれれば論争も起きないと思うんだよね。
なんだあのクソいスレタイはーーーーーーー!?
とりあえず 1000 取り合戦場の AA 貼っといた。
ニセ次スレ削除依頼出して。
誰か
>>681 のどっちかで立てちゃってよ。俺は立てられないって怒られた・・・
今ある糞43スレは放置で。
>>1 のテンプレに論争の邪魔をする質問厨への対応は未定義とする。と入れてほしかった。
>>719 タイトルに関係なく糞スレになると思うが・・・
どうせ論争ですぐに使い切ってしまうんだろう。
てかこのスレもまだ300レス近く残ってるのに
Cスレ分裂の予感
糞スレ削除依頼終了
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)
とすればもっとクールだとおもうけど、
あんたらには難しすぎますか。
ニセ次スレ、博物館の様相を呈してきた。 ある意味保存版。
新スレが立ったみたいなのでこのスレは終了ね。
736 :
デフォルトの名無しさん :02/11/13 06:54
唐揚げ
次スレの1の心が読めない・・・
荒らしているやつの心は単純すぎてつまらない(^_^;)
正直、1 に載せるリンクで、「comp.lang.c FAQ(英語の原文)」 は要らないと思う。 あと関連スレが 「推薦図書/必読書のためのスレッド」 だけなのも何だか。 もっと揃えるか、またはこれも消すか。 つーかまあ 1 にリンクが溜まるのは良くないのだが。
いちいち食って掛かるところを見ると 740 は次スレの 1 ケテーイ
>>744 泣きそうな顔してるね、どうしたの?(^-^;)
ああDQNスレ立てて悪かったよ もう来ねーよ ヽ(`Д´)ノ ウワァァン
叩かれまくりたい 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() を呼ぶな。
754 :
デフォルトの名無しさん :02/11/13 09:28
testの引数はなんのためにあるんだ?
>>755 宿題スレへ行けと言われる。理由:ここは宿題を教える場所では無いから。馬鹿にされる理由:汚ないプログラムだから。煽られる理由:馬鹿な質問をするから。無視される理由:飽きられたから。
「答えよ」なんて言われてせっせと答えるのは試験位なもの。 普通はそんな糞質問に答える義務等、無い。 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() が
スキップされるのに等しい。
ちなみに MS-C6 では、16 を足すと main() からはみ出てしまうので、 はっきり言って何が起こるか分からない。
今時i386のPCなんかネーヨ で終わりにしたいな(w
もう一つ追加。 VC6 では、無条件の exit() があると、それより後ろを全部カットする。 だから printf() は結局実行されない。
returnはまだしも、単なる一関数にすぎないexitでそこまでしてくれるのか。 まあgccもgetsを使うと危険だと警告してくれたりするけど。
今回も伸びた割には内容の無いスレだったな
まあ、標準ライブラリの関数をネイティブのステートメントとして解釈する処理系は 多いと思うよ。 VC なんか ZeroMemory() をインライン展開したりするし。
>>761 test()の実引数のクリアはどこ行ったのよ?
add esp,16
あのコードを VC に放り込んだ場合、実引数なんてものは出てこないのだが。 最適化 Off の状態で。 ただし、main() と test() を別々にコンパイルするなら別。
実引数って間違った表現だな。パラメータのことね。
>>769 そうだったんか。staticでもないのに?
ちょっとこっちでもやってみるね。
出てくるじゃん
773 :
デフォルトの名無しさん :02/11/13 12:57
「向こう」 が age らけちゃったから こっちも唐揚げ
こっち(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
>>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]();
でいいんじゃないか?
>>775 あれ?もしかして後半も俺向けの返事?
だったら、
> 引数が全く指定されなくても大量に指定されても、動作に影響の無いコードに
> なってるはずだ。
これは間違い。
関数から戻った直後に引数をクリアするコードが
入っているかどうかによって、
s4[401] += 16; した時の戻り先も変わってくる。
(戻り先アドレスは変わらないが、後続の命令の配置がずれる)
さらに言えば、引数の有無だけでなく、
引数のサイズが256バイト以上か未満かでも
add esp,バイト数
という命令のコードサイズは違ってくるはず。
つまり、もろに動作に影響する。
>>782 suitch で評価されるのは int 値じゃなかった?
unsigned char で評価されるのは期待できなかったと思うけど。
>>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の範囲外の数値を入力したんじゃネーノ
798 :
JPS ◆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!
>>798 実行してみそのままだから
何かキーが押されたらそのキー出力して0x1a(^z)だったら終了
804 :
デフォルトの名無しさん :02/11/13 17:51
みんなメアド見ないの? sage のだけクリックしとけば、それ以外が何かしら違うものと色で区別つくから 覗いてみたりするけど。
>>798 while((c=getche()) != 0x1a) {
printf("%x\n", c);
}
こういうコードでも動かしてみて、片っ端から
キーを押せば、どれか分かるんじゃない?
>>804 ボケにマジレスされたからって、いちいち文句言わなくていいよ。
間違えて 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; }
この関数のなかでpos_nodeはなんで必要なの? listをこぴってるから、直接リストをいじるのとかわらないんでないの?
>>808 必要ないです。
かわらないです。
いじょ。
>>810 ( ̄□ ̄;)!!
listの必要性を考えて小一時間ネット上をうろついたオレって一体・・・
>>811 引数を直接いじると何か気持ち悪い、っていう程度の
理由だと思うよ。
>>812 気持ちはわかるね。たぶん808のソースはどっかのコピペだろうから
分かりやすくしてんだろう。
でもオレも後で見たときの可読性を考えれば、いい事だと思う。
814 :
デフォルトの名無しさん :02/11/13 23:26
>>813 あなたの文章には鬱病の人特有の言い回しが見れます。
病院に行ったほうがいいと思います。
鬱は必ず直ります。
817 :
デフォルトの名無しさん :02/11/14 00:03
だれかいますか?
廃れたね。オレが話題をふるYO! お前らコンパイラとエディタなんですか?
またその話題かよ。
廃れたねってお前。チャットじゃねーんだからよ。 そんなあせんなよ。
新スレ立って荒らされてるな(プ
構造体listが { int num; list *next; } みたいな線型リストだとして list == NULLっていうのはどういうことですか? listの要素全部が0,NULL,'\0'ってこと?
あともういっこ! 線型リストのさいしょの構造体には値は入れないんですか?
>>823 それは実装した人次第だが、一般的にはリストが空。
>>824 最初はポインタの方がすっきりするが、プログラムを組むとわかるが
空の構造体の方が扱いやすい。
ある関数が再入可能かそうでないか知りたいのですが、 どうやって調べたらよいのでしょうか? なにかリストみたいなのはありますか? printfは再入可能でないらしいのですが、僕には理由がわからず。 とにかく、リストがあればとりあえずは楽かなと。
830のレスみて思ったけど、次スレタイはCの演算とかうまく使ってよ。 C++ってなかなかいいセンスしてると思うのは俺だけか。
この静けさ。完全にCを語り尽くした。
834 :
デフォルトの名無しさん :02/11/14 01:43
>>833 今度から初心者の質問すれと
上級者の議論すれにわけたいね
>>834 マルチスレッドもありますが、割り込みでprintfを使おうとしてました。
自分なりに調べましたが、
printfはスレッドセーフですが、Async-Cancel-Safe 関数ではないそうです。
いやぁ、よくわかりませんなぁ。素人は割り込むなと言うことですか?w
>>837 シグナルハンドラの中で使いたいのなら、async-cancel safeじゃなくて
async-signal safeなものを探すべきでしょう。
Solarisだとマニュアルに一覧があるけど(90個くらい)。
>>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)
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
863はsizeofが返した値をいちいちintにキャストしているのかな。 わざわざunsignedにしてあるのに(ワラ
869 :
bloom :02/11/14 09:37
(int)strlen(str);
>>ALL (*^o^*)おはよう♪ ヌル文字なんて存在しないよね!? あるサイトに「文字列の終端はヌル文字で・・・」ってあったYO! これマジでネタじゃないから、ちょっと不安になった・・・
もっと面白いネタを用意して出直してこい
>>873 ASCIIの「'\0'」をヌル文字またはナル文字と言うことはありますが何か?
またNULLポインタ「NULL」とは別物ですが何か?
最後にヌルストリング「""」と言うものも存在し
上記三種は全て別物ですが何か?
Type_A object[2] = {[1] = {.member1 = "hoge", .member2 = 3}};
簡潔厨のコード*hoge->str++ = ch;見る人の事まで考えたプロのコード*hoge->str = ch;hoge->str++;
878 :
デフォルトの名無しさん :02/11/14 12:07
>>852 リンクにポインタではなく、配列のインデックスを使うと良い。
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 に関する話ならここでもいいけど、コーディングスタイルは直接関係ないだろ。
889 宛てだった・・・
ネタスレなんだからいいじゃん(*^o^*)
>>888 =一人で勝手に自己完結させる(完結|簡潔)厨
>>885 所詮宗教問題であって間違いなんて無いのにワラなんてつけてるところが
相手の意見をまともに聞こうとしない厨房であることが明らかなのだが。
論争嫌いがCスレに来る資格は・・・・無い!
>>899 質問にどう答えるべきかの考え方が
人によって違うんだから、質問されたら論争になるのは
仕方がない。
ここの論争ってのは大抵簡単な質問から始まる。 簡単な質問が論争につながってしまうのは Cが論争を引き起こしやすい言語だからだ。
>>900 &901
じゃあスレタイ変えたほうがいいしょ?
質問&論争スレとかさ。
質問しにきた香具師が、困るにきまってる。
今ファイル操作をやってるんですが、コマンド引数を使わずに char型の文字列にファイル名をプログラム中で入力させて、 読み込む事とかできますか? また、それを関数に渡して、その関数の中で処理することはできますか?
>>903 だから分けろっつてんの。
質問きて論争になるんだったら、そっから論争スレにうつりゃいい。
>>904 「char型の文字列」では多分できない。
char 型の文字列 美女の女性が馬から落馬した
>>905 そうだね。そっから論争スレにうつればいいね。
頑張って誘導でもしてくれ(w
正直、仕切り厨の方がウザイ
まともなことを言っている奴が叩かれる。2chらしいな(w
914 :
デフォルトの名無しさん :02/11/14 20:39
LINUX(CYGWINですが・・・)上でC++でプログラミングをしています あるプログラムをライブラリ化して、そこから関数を呼び出すということをしたいのですが、 Win32+MFCでの経験はあるのですが、LINUXでのやり方がわかりません。 Win32の場合はDLLを作ってヘッダをインクルードして・・ というやり方だったのですが、それをCYGWINでやるとしたら どのようになるでしょうか?
>>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 今 2ch への書き込みが滅茶苦茶遅いのはお前のせいか?
926 :
デフォルトの名無しさん :02/11/14 21:01
>>896 えー!
じゃああなた本当に(int)strlen(str)なんてやっているの!?
if(strlen("aaa")>-1)が偽になるってやつでしょ?
927 :
デフォルトの名無しさん :02/11/14 21:09
C言語って一日2時間くらいやれば何年ぐらいで「C言語できるよ」って言えるくらいになりますか?
913ですが、どなたか質問に答えていただけないでしょうか?
>>904
>>928 粘着する前に、自分の日本語を確認してくれ。
>>927 本人の能力と、やる気と、環境による。
他にどんなプログラミング言語を知っているかにもよる。
できました。始めはできなかったのに・・・
>>926 まさかキャストしないと言うんじゃ・・・
935 :
デフォルトの名無しさん :02/11/14 21:32
>>934 しないんじゃなくて負の数と比べるなんて馬鹿みたいなことはしないよ。
つーかintと比較するならキャストすべきと言ってるんだが。
size_t の値と int とを比較するってどういう場面か具体的に挙げてくれ。
>>937 intの定数と比べるのが多いと思うが、その定数を負の数にするやつは阿呆。
論争に決着がつくまでは質問の答が決まらない。 だから質問スレは必然的に論争スレ。
>>939 スレ分けには基本的に賛成だが、あなたの日本語はおかしい。
「だから」 の前後が全く繋がっていない。
>>940 スレ分けは無理だと言っている。
質問→論争→答
の順序なんだから。
Ruby>>>>>>>>>>>>>>>>>>C言語
>>941 だからさ、なんでそこで論争するわけ?
分かってる答えも論争のせいで答えられなかったら
質問スレの意味ないべ。
論争になる質問とそうじゃない質問があるじゃん。
質問してくるやつらは関係ないしょ?答えを求めてるだけで、
論争をみたいわけじゃない。
だったら別の場所で論争して、結論でたら、こっちに来ればいい。
そのほうが質問してくるやつもわかりやすくない?
ファイル入出力のオプション(?)で、 上書きするのはなんですか? wでやると、中身がなくなってしまうんですが・・・
>>943 何故議論が起こって、どのように解決したかが分かった方が
質問者にとってもいいじゃん
>>944 a
>>943 現になってるんだからしょうがないだろ。
つか、「みんなが分かってる答」なんてのが
1つに決まる質問ばかりとは限らない。
if文やwhile文の本体が1つの文のとき、{と}でくくらないで コードを書いていたんですが、師匠に必ず{}でくくれと 怒られました。そういうものなんでしょうか?
見事に釣れました。
油断したよ
ん?括る派が多数なのか? 人に強要する理由でもある?
漏れは括らない。 それでトラブルが起こった事は一度も無い。
>>946 >何故議論が起こって、どのように解決したかが分かった方が質問者にとってもいいじゃん
確かにそうだけどさ、議論ばっかでこのスレが死んでいくのもどうかと思う。
943がいうように、論争なんか見たくないやつもいると思うしよ
見たいやつもいるかもしれんが
どっちにしてもスレタイが悪いんだよ
質問スレなんていったら、普通は論争しなさそうだし。
「おまえら!Cの質問一生懸命考えます」って感じにすれば
>>955 ただのコーディングスタイルの問題だから、自分の好きな方を選べ。
師匠の風当たりに耐えられなかったら、師匠の前では括る方を選べ。
>>958 意味がわからん。
何の答えにもなってないぞ
>>944 上書き? wが上書きだけど。
追加ならa
>>956 トラブルがおこったことが無いのは経験が浅いから。
方針が括る括らないか限らず括弧がある/ないと勘違いしてミスったことはあるはず。
>>961 コーディング規約に合わせるという事だろう。わかれ。
>>961 コーディング規約に従うという事だろう。
>>944 あ、もしかして書いた部分だけ上書きして、他の部分はのこしたいということ?
それならメモリにファイルの内容を全て取り込んで、メモリ上で上書きするといいよ。
最後にその内容をwで全て書き出す。
いやー、「質問されたら論争は必須」を実証するために
意見の割れそうな質問してみて、実証できたわけだが、
>>955 の方が上わ手だった。 まいりました(w
>>965 トラブルが起きるのは経験が浅いから。
括弧がある/ないと勘違いしてミスったことなんか無い。
つーか C はかれこれ 10 年書いてますが何か?
見ての通り、結局スレタイは「質問&論争ウエルカム」 ということで
>>971 経験が浅い時期がなくて経験をつんだ奴なんていない。
>>969 えーと、ちゃんと説明します。
まずプログラムAでファイルに500個の1から1000までの乱数を出力して、
そのあとプログラムBで、そのファイルから読み取ったデータを
照準にソートして同じファイルに出力したいんです。
プログラムBは入力と出力の両方必要なんで、はじめはrで読み取って
いったんfcloseしてから、wしてたんですが、これじゃだめですか?
あとファイル操作一回で同じことができたら教えて頂けませんか?
>>971 は10年間、20行以上のプログラムを書いたことがない。
>>976 それで途中を書き換えても大丈夫だったっけ?
すいません。照準じゃなくて昇順でした。 あとプログラムBでのファイル出力は、上書きでしたいです。 元のデータを消して。
今日は日本語が不自由な人がたくさんいますね
>>974 ( ´,_ゝ`)フーン
>>979 そう思いたいならそう思っとけば。
事実は違うから、漏れは気にしない。
誰か次スレ立てて。 間違ってもあのウンコを再利用しようなんて思わないで。
>>984 誰のことよ。お前の理解力がないんだろ(藁
>>988 俺に聞けは嫌だ。
C言語相談室にして。
do { } while (...); の本体も、文が1つのときは{}を外したほうが良いのでしょうか?
>>993 そのほうが見やすければそうしてください
>>988 俺に聞けは嫌だ。
C言語論争所にして。
相談室だけはやめてくれ
個人的には、一行で収まるときは{}をつけないことが多い。 do whileはちと微妙。
1000
1000
>>985 一人でやっている奴には一生分からない。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。