1 :
v(^o^i)d :
04/07/24 16:34
2 :
デフォルトの名無しさん :04/07/24 16:35
3 :
推奨NGワード :04/07/24 16:35
第一群 「頭悪すぎ」「池沼」「バカ」「馬鹿」「ばか」「アホ」「あほ」「まぬけ」「間抜け」 「アフォ」「くず」「クズ」「アフォ」「キモイ」「低脳」「タコ」「クソ」「死ね」 「餓鬼」「バッカ」「香ばしい」「ゲラゲラ」「(プ」「プゲラッチョ」 「莫迦」「逝け」「キモい」「キモイ」「消えろ」「失せろ」「晒し上げ」 第二群 「函数」「scanf」「gets」「goto」「コーディングスタイル」 「コメント」「セキュア」「セキュリティ」 第三群 「空白あけろ」「空白あけるな」「空白のあけかた」「空白の空け方」「空白空けるな」 「空白入れろ」「空白入れない」 「ボ○ケ」「ぼけぇ」「ヴぉけ」「ぼけ」「ボケ」「自己解決しました」 第四群 「;-)」 「;)」「すぎー」「初歩的な質問」「初心者です」「初心者」 「;-;」「異端」「脳内変換」「UNIX厨」「M$」「初心者的な質問」「のー?」 「日下部陽一」「勝利」「敗北」「妄想」「素人」 第一群:言葉自体の有害度が大きい。 第二群:言葉自体は有害ではないものの、使う人の技量や目的によってはフレームの原因になる。 第三群:荒らしが好んで使う言葉。 第四群:その他。主観で分類してください。
真スレ乙
assert(0 && "重複だぼけ");
Cでインクリメンコしたときにキャリーフグリの変化を調べる方法はありますか?
7 :
デフォルトの名無しさん :04/07/24 16:42
if (_iscarry)
scanfを使った書き方が分かりません。 教えてください。 ・数値を一つ入力してそれを表示する。書式は"n=数字\n" ・数値以外のものが入力された場合 ・"quit"が入力されたら終了する。 ・それ以外の文字列の場合はエラーとその文字列を表示する。 ・終了しなかった場合は最初に戻る。
>>9 www.pg-source.net/c/bin/shukudai-wa-zibunde-yare/
12 :
デフォルトの名無しさん :04/07/24 16:47
9に対するレスも定番化すると良いね。C++スレのあれみたいに。
>>8 error C2065: '_iscarry' : 定義されていない識別子です。
>>9 に応えられないこのスレはレベルが低いですね。
>>6-8 , 11
`_iscarry' undeclared (first use in this function)
どうしたらいいんでしょうか?
17 :
デフォルトの名無しさん :04/07/24 19:03
定義してください
文章を比較するソフトを作りたいのですが、いろいろやってみたものの どうもうまくいきません。 例えばこんな感じです。 [問題文] 掲示板へはIDだけが表示され匿名で投稿することができますが、この匿名性は個人の行為、 [自分が打った文] 掲示板へはいdだけがひょうじされ匿名で投稿することができますが、この匿名性は個人行為、 この間違った部分 ○ID ×いd ○表示 ×ひょうじ ○(個人)の(行為) ×の(がない) を抜き出して、元の問題文の長さ - 間違えの数 = 正解した文字数 みたいなソフトを作ろうとしていますが、何かよい方法はありますか?
>>18 awkやperlにデータ渡して受け取る。
21 :
デフォルトの名無しさん :04/07/24 19:35
>>前スレ956 charが8bitの処理系では unsigned char c = 255; c = c + 1; //undefined c = 255; c++; //0 c = 256; //undefined 何でそうなるのかは自分で考えろ
24 :
デフォルトの名無しさん :04/07/24 21:08
>>20 Cでできないことは何を使ってもできない。
>>21 もう解決したのでいいです。
25 :
デフォルトの名無しさん :04/07/24 21:36
>>24 おまえは過去ログを全部読んで
解決済みでないことを毎回確認してから発言してろ
それから自分さえ解決してればいいって考えは改めろ
26 :
デフォルトの名無しさん :04/07/24 21:39
数値計算でiで回したとき(N:適当な変数) (1+(9999/N)*i)/1000 と 0.01+99.99/N*i だとどっちが小数点の精度 がいいですか? あとどっちが計算早く終りますか?
>>18 その仕様の通りに作ればいいだけだろ。
なにが問題なんだ?
31 :
デフォルトの名無しさん :04/07/24 22:18
実測しない香具師: アフォ 考察できない香具師: 低脳 どっちにも該当するな
>>27 そんなことやる前にさ、俺に女子高生を紹介してくれ。
私は女子高生です。
私は好蕎生です
私は死兆星です。
私はぬるぽです。
39 :
デフォルトの名無しさん :04/07/25 11:36
> c = c + 1; //undefined > c++; //0 これはウソ。 ヒント: では c += 1; だとどうなるでしょう?
40 :
デフォルトの名無しさん :04/07/25 12:05
>>39 誰もそんなこと言ってねえじゃん
自分で言いだしたことをウソと言うのを止めはしないが
ギャグとしては三流だよ つまんねー
抽象データ型とはどういったものを指すかおしえて。
>>21 charが8bitじゃない処理系なんかあるんですか?
>>44 探せばあるだろ
コンピュータの歴史をなめるなよ?
ANSI Cではsizeof(char)=1ということになってなかったっけ
CHAR_BIT
>>46 で、ANSI-Cの話を持ってきて何が言いたかったん?
49 :
デフォルトの名無しさん :04/07/25 17:17
/* チョンを殺すプログラム */ #include <stdio.h> int main(void) { int a; int i; do{ printf("何回殺るか入力してください"); scanf("%d",&i); }while(a <= 0); for(i = 0, i < a. i++) printf("テポドンの攻撃!チョンは死んでしまった!\n"); return(0); }
50 :
デフォルトの名無しさん :04/07/25 17:17
>>44 16ビットならそう珍しくない。(いや、今となっては珍しいか。)
9ビットもあるらしいが、俺は知らない。
>>46 確かにsizof(char) は1だが、それとcharが何ビットかは関係ない。
43にレスがつかないあたりにこのスレのレベルの低さがよく表れているな
どーでもいいんだけど、コメントはどうつけてる? 1. /* ふー ふー ふー */ 2. /* ばー ばー ばー */ 3. /* * ほげ * ほげ * ぼげ */ 4. // ふが // ふが // ふが
適材適所
4はエラーが出る
C99ならでない。にしても質問下らなさ杉だな。
>>56 C99でなくとも、大半のコンパイラで通る
ハァ?C99とか大半とか関係無い。俺のコンパイラはエラーが出る。
参考までに、どこのヘタレコンパイラを使ってるのか教えてくれ
>>60 当時の仕様に正しく対応したコンパイラをヘタレと呼ばれる筋合いは無い。
62 :
デフォルトの名無しさん :04/07/25 18:02
C99 準拠と謳ってない製品、特に 99 年以前の製品で通ったら それは例え C99 で認められていてもあくまで非標準拡張 なぜなら、その処理系を C99 として使うことなどないからだ
C99に対応してたら動くはずだが?
LSI Cとかそうだよな
66 :
デフォルトの名無しさん :04/07/25 18:44
GNU C Library の stdio.h ヘッダファイルを覗いてみての疑問。 変数の前にアンダーライン(_) が1つついてたり2つついてたりするんだが これってどういう意味があるの?
ユーザーが使うものと被らないように
エラーを直してください。 #include<stdio.h> main(){ int i,j; /*配列の宣言*/ double result[1000][1000]; double a1,a2; /*a1とa2を掛ける*/ for(i=1;i<=9;i++){ a1 = 3 + 0.1*i; for(j=1;j<=9;j++){ a2 = 2 + 0.2*j; result[i][j]=a1*a2; } } /*表示処理*/ for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ printf("%2d ",result[i][j]); } printf("\n"); } }
アプリケーションエラーなのです。
- double result[1000][1000]; + double* result; + result = (double*)malloc(sizeof(double)*1000*1000); - result[i][j]=a1*a2; + *(result + i * 1000 + j)=a1*a2; - printf("%2d ",result[i][j]); + printf("%2d ",*(result + i* 1000 + j)); 343597385 1546188226 1374389535 -171798692 -1717986918 1030792152 -515396076 -2061584302 687194768 -1030792150 -343597384 171798692 515396075 858993460 1202590844 1546188227 1889785611 -2061584301 1889785610 2061584301 -1030792151 1202590842 -858993460 1374389535 -687194768 1546188226 -515396075 515396076 -2061584302 2061584302 1889785610 1717986918 1546188227 1374389534 1202590843 1030792151 -858993458 -858993459 858993459 -1717986919 0 1717986919 -858993459 858993459 -1717986918 2061584303 343597384 -343597383 -1030792151 -1717986918 1889785611 1202590843 515396076 -171798691 343597384 1546188227 -1546188226 -343597384 858993460 2061584303 -1030792151 171798692 1374389536 -343597384 -1546188227 1546188226 343597383 -858993460 -2061584302 1030792151 -171798692 -1374389535 -1030792151 -343597384 343597384 1030792151 1717986918 -1889785610 -1202590843 -515396076 171798692 こんなのでいいの?
教えて君が来た
よくみると - double result[10][10]; + double result[1000][1000]; だけで良い気もする。
逆だ。 - double result[1000][1000]; + double result[10][10];
>>67-68 レスありがとうです。しかし、分かったような分からないような・・・
もう一回変数名のスコープ(有効範囲)についてきちんと勉強してみるよ
>72 resultをちぇっくしないと69とどっこいどっこいでわ
>>77 スタック溢れで落ちてるから、そこを直しただけ。アルゴリズムの問題は知らない
>>67-68 レスありがとうです。しかし、分かったような分からないような・・・
もう一回変数名のデータ長(バイト数)についてきちんと勉強してみるよ
>72 ぬるぽをちぇっくしないと69とどっこいどっこいでわ
じゃ、こんなとこで。 - result = (double*)malloc(sizeof(double)*1000*1000); + if (!(result = (double*)malloc(sizeof(double)*1000*1000)))exit(1);
>81 ぐっじょぶ
- if (!(result = (double*)malloc(sizeof(double)*1000*1000)))exit(1); + ファイル始め→#define NULLPO NULL if ((result = (double*)malloc(sizeof(double)*1000*1000)) == NULLPO)exit(1);
>83 べりぐっじょぶ
>>81 を書いてから考えてたんだけど、main関数内ではexit(1)とreturn 1のどっちが
いいんだろう。manによるとexitは引数&0377を親に返す、となってる。returnでも
同じ結果になるのかいまいち分からない。
#そういえば、exitのmanを調べてみるとstdlibになってるな。
return文にしておけば、コピペして使えるから吉 動作が予期できないエラーに対処するにはexit()
>>87 今の仕様ではキャスト不要になってるけど、個人的にはあったほうが見通し良いと思う。
メモリ割当先ポインタの型が何だったかのちょっとしたリマインダになるし。
90 :
デフォルトの名無しさん :04/07/25 20:43
環境にも夜と思うのですが、一般的には、メモリ確保って負荷は大きいものなのでしょうか。
(なるべく一度mallocしたものは必要なくなってもプールしておいて、使い回したほうがいいのでしょうか。)
いや、なんかmallocの負荷を気にしすぎて、ヘンテコなコードになっているものを見かけてしまったので、
普通にmalloc&freeすれば良いのになぁ、と思ったもので。
確かに昔はmallocはコストが高い処理だ、ということをよく聞いた気がするのですが…
Javaのものなのですが、こんな記事を見かけました。
http://www-6.ibm.com/jp/developerworks/java/040312/j_j-jtp01274.html できれば(mallocはコストがかかる、といったような)実装に依存したことより、
実際の処理の流れに即したコーディングがやりたいなぁ、と思っています。
>>91 テンプレートを使わない事を薦めるようなヘボガイドを信じちゃいけない。
つーか、古いんだよソレ。98年じゃん
>>90 環境にもよるが、一度mallocしたものは、freeしてもOSには返さないないため、
次回のmallocが高速、ということは実際にある。
自前でプールして使いまわすのは、管理が複雑になるだけ。
それでもそのほうが速い環境で、そうしないと使い物にならないアプリなら、そうすればいい。
>>84 「大半」とか「世界の圧倒的多数」なんて単語で議論するな。
嵐か?
>メモリ確保 スタックから取る場合は気にしないが、ヒープから取る場合は早い者勝ち。 一回取れても二回目に失敗する可能性有り。
世界の圧倒的多数のコンパイラの合計シェアを聞きたい物だが。
>>90 仮想メモリが存在しなかったりメモリの量がよほど制限されていない限りは
最初から小細工に走るべきではないよ。
>>91 おかしな挙動をするコンパイラの例としてMicrosoft Visual C++ 1.5が数回引き合いに出されてるんだが、
こいつらは永遠にWin3.1をサポートしていく気なんだろうか。あまりに古い物、あまりに挙動なおかしなものを
切り捨てず、プログラマ側をおかしな挙動にも対応出来るようにするといくら時間があっても足りないのは
自明だろうに。
>98 どんなスレッドがどれだけ走ってるか把握できるならおけ。 把握できないなら、失敗してもいいものと失敗しては困るものを区別する。
>100 だからこそ、オープンソース化後ほとんどのコードが書き直され、それでもまた どうしようも無くなって(Phoenix->Firebird->)Firefoxが分離した、と。
> Mac では boolean 式での代入について問題がある。 > Mac でウォーニングを引き起こすまた一つのコードの例を示します: > ウォーニングを出す例: > > if ((a = b) == c) ... n n. (ヨ ) /\___/ヽ ( E) | | / ::::::::::::::::\|| 三\ ⌒ ,,-‐‐ ‐‐-、 .::|/,,/ .  ̄| 、_(o)_,: _(o)_, :::|/ 三 | ::< .::| うわあああああああああああああああ (省略されました。続きを読むにはここを押さないでください)  ̄ ̄
105 :
デフォルトの名無しさん :04/07/25 22:40
ちなみに、C99にかぎらず、 C99対応していない古いコンパイラーでも大概さぽーとされてるよ > // 89年ごろから規格外の拡張としてサポートする処理系が増えた。
1000以下の完全数を求めるプログラムなのですが、うまくいかないです。 ご教授お願いします。 #include<stdio.h> int main(void){ int x,y,wa; for(x=0;0<=x && x<=1000;x=x+1){ for(y=1;0<=y && y<=x;y=y+1) { if(x%y==0) wa=wa+y; if(x*2==wa) printf("kanzensuu:%d",wa); return(0); } } }
えーと、宿題スレ行き?
完全数がわからない厨はどうすれば? とりあえずぐぐってみる
宿題スレで解決しといた。完全数とは・・・ぐぐってトップに出るから説明いらないな
>>109 ぐぐって二番目と三番目のが読みやすかった
完全数の問題ですが、スレ違いだと思い宿題スレのほうで おしえていただきました。
112 :
デフォルトの名無しさん :04/07/25 23:23
113 :
デフォルトの名無しさん :04/07/26 06:37
っていうか > それは例え C99 で 漢字ぐらいちゃんと書けよ ぼけ
っていうか > ぼけ 漢字ぐらいちゃんと書けよ 呆け
ボケは兎も角、「喩え」は「例え」じゃないな。
木瓜
僕毛
棒毛
( ゚Д゚)ポケー 納期))))
121 :
デフォルトの名無しさん :04/07/26 15:23
すみません、fopen を使ってローカルにあるファイルを開くことは
できたのですが、ネット上に存在するファイル(
http:// 〜)は開けない
のでしょうか?稚拙な質問ですみません。えらい人教えて下さい。
>>121 もちろん、開けません。
URL で指されたリソースを取ってくる手段はプラットフォームによって
イロイロなので、キミが使っているOSや環境のスレで再質問どぞ。
URL/URIを指定してストリームを開ける実装なら出来るんでは? そんな環境は聞いた事無いけど。
124 :
デフォルトの名無しさん :04/07/26 15:36
ファイルの変わりにソケットを開いてください
fopenがいわゆるディスク上のファイルを開く、と規定されているわけではないと思う。
だからどうした
C言語をやり始めようと思ってる工房ですが とりあえずコンパイラって事で探してるんですが どれがオススメでしょうか OSはXPhomeです 将来はネトゲで使えるtoolでも作ろうと思ってます(まぁ慣れる頃には恐らくゲームやめてますが
>>128 無償のBorland C++ Compiler使うことにします
無償>>>>>>>>激安
時間無駄にするくらいなら、はじめから激安買っといたほうがいいぞ。
133 :
デフォルトの名無しさん :04/07/26 19:44
無償=初心者サポート極小
文字列比較の関数が返す論理値って明らかに逆なような気がするんですがあれは問題ないのですか?
>>134 負 string1 が string2 より小さい
0 string1 と string2 は等しい
正 string1 が string2 より大きい
だから問題なし
0って偽を意味するのが普通でしょ? 等しければ0を返す→偽 ってどう考えてもヘンだろ?
「等しいか」ではなく、「大小」を比較するんだからしょうがない。
>>139 a,bが等しい文字列の場合、
(strcmp(a,b) == 0)
は真ですが?
>>139 あのさ
mainがreturn 0;を返す事が多いけど、これは偽を返してんの?
return 0を返す→0を返す
真なら0を返すのが自然?1を返すのが自然?
>>145 プログラマの社会的地位が低い理由がわかったような気がします。
1を偽、0を真とする論理を負論理と言う
>>146 君の、その超飛躍ロジックを解明したい気もする。
MSDNでも読んでみろ。成功時に0を返す関数なんぞいくらでもある。 ついでに言えばBOOLのくせに複数の値を返すものだってある。 結局は、ドキュメントを読んでそれに従えってことだよ。
お上には絶対服従 論理・理論など入り込む余地もない 奴隷の思考様式そのものだなw 従順な奴隷が多いほど搾取層は嬉しいw おまいらヘンに知恵をつけるなよwww
何時の間にここにはこんなにガキが増えたの?
成功時に0返さないと返り値では失敗要因を区別できないと思うんだが…
コーダを使う立場なんですが・・・ 思考を放棄した奴隷の奇妙な生き様に驚愕の毎日です・・・
>>154 こんな池沼がプログラミング出来る時代なのか・・・。
>>155 お前の脳内部下はきっとお前のあまりの無能っぷりにうんざりしてるぞ
>>156 「返り値で」どうやって区別するのか教えてくれ。
#define TRUE 0 #define FALSE 0 #define SLAVE me
>>159 switch (fuck_off()) {
case 0:
printf("bar");
break;
case 1:
...
...
case 9999:
printf("OK");
}
とか、いくらでも方法はあるだろ
脳内に虫が沸いてる奴隷が書いたコードに虫が沸かないわけがない
if(func()) /*成功時*/ または if(!func()) /*成功時*/ はさせてくれないのね
#ifdef _WINBASE_ #define remove(FileName) (!DeleteFileA(FileName)) #define rename(OldName, NewName) (!MoveFileA(OldName, NewName)) #endif
165 :
デフォルトの名無しさん :04/07/26 21:48
“時と場合によって”真偽値が反転するって素敵やん?w
167 :
デフォルトの名無しさん :04/07/26 21:49
>>139 お前の望み通り
等しい → 非0
等しくない → 0
だったとしたら、
等しくないと判ったときに
どうするの? 何ができるの?
脳内管理職が荒らしてますが無職童貞君ですのでほうっておいてあげてください。
>>167 キミの自由だよwww
キミならなんでもできるさwww
あーあ・・・返せなくなったからって・・・・
まあちなみに “等しい → 非0” こういうことを恥ずかしげも無く書いちゃうところが香ばしさ満点なんだけどね
ふむ。ここまでの議論をまとめると、 >文字列比較の関数が返す論理値は逆だが問題ないのか? ↑文字列比較関数は「論理値」を返さない。 ということで、発端が間違っているわけです。
スルメを見てイカが解るか 議論の内容がズレてるのに正しい答えが出るはずがない
174 :
デフォルトの名無しさん :04/07/26 21:57
イカにも・・・
>>171 真偽判定ってのは
hoge == TRUE
ではなく
hoge != FALSE
ですべきものなんだけど、その辺分かってる?
>>175 それは171の意図を読み取ってないね。
>>176 どこもおかしくないと思うんで、どこがおかしいか指摘して
奴隷カコワルイ
>>178 んー?なんだろうな、と思ったんだが、
等しいということに、非0をあてると決めつけている事を指摘してるのかなあ?
よくわからん。
>>180 等しくない時に0を返すなら、等しい時に非零以外の何を返せばいいのよ
等しくない時に0を返すと大小関係が分からなくならん?
素人ばっかだなここ
結局 strcmp ってさ、 qsort のためにある関数でしょ?
186 :
デフォルトの名無しさん :04/07/26 22:26
改めて言うこともあるまい
>>134 おみゃーはこれつことけ。
#define strequ(x,y) !strcmp(x,y)
189 :
デフォルトの名無しさん :04/07/26 22:36
言語仕様はそのユーザーの思考を規定する。 boolも例外もないからCゲンガーの戻り値に関する認識は恐ろしくでたらめだな。
そういうことは、でたらめの意味を調べてから書けよ。
136は理解できないのか、意図的にスルーしてるのか。 おまいらネタが好きだな。
戻り値に関する認識は恐ろしく場当たり的 ならいい?
↑ 136「を」
上を向〜〜いて歩こ〜〜〜〜う ってお上りさん?
でたらめ【出たら目】 T 事実に合わないことや首尾一貫しないことを出まかせに言ったり したり すること。 用例・作例 ―を言う U ―な ―に いいかげんで、信用の出来ない様子。 用例・作例 ―な男 Shin Meikai Kokugo Dictionary, 5th edition (C) Sanseido Co., Ltd. 1972,1974,1981,1989,1997
しまった。誤爆った。
197 :
デフォルトの名無しさん :04/07/26 23:04
198 :
デフォルトの名無しさん :04/07/26 23:07
> 0って偽を意味するのが普通でしょ? > 等しければ0を返す→偽 > ってどう考えてもヘンだろ? strcmpは「等しくない」ことを調べる関数なんだから、 「等しくない」が偽になるとき(つまり等しいとき)に0になっても ちっともふしぎではなかろう
strcmpの仕様がおかしいんだよ。かなり変態的。 しかしどんなにおかしかろうがCを使う以上受け入れざるを得ない。
CMP R0, R1 R0=R1のとき、R0<R1のとき、R0>R1のとき、 それぞれについてZフラグとCフラグの挙動について述べよ
変態的って、等しいかを見るためだけの関数じゃないんだから。
ここは何が変態的で何が変態的でないかの
区別すらつかなくなった変態的な
>>200 がいるスレですね。
203 :
デフォルトの名無しさん :04/07/26 23:14
strcmp というか、 cmp(comp) ってのは要するに「引き算」だからな。 a-b=0 なら、 a=b ってのと同じだよ。 それの文字列版ってだけだ。
音読してみよう。 「C言語なら俺に聞け!」 もう一度。 「C言語なら俺に聞け!」 はい、その調子で100回音読。
Compareの意味がわからない池沼がいるのは このスレですか?
int cmpfunc(a, b) { return(a - b); } これだけのことでしょ?
207 :
デフォルトの名無しさん :04/07/26 23:22
208 :
デフォルトの名無しさん :04/07/26 23:27
equal()って名前の関数だったらきっと等しいときにtrueだろうけど、 cmpなんだから等しかったらfalseでしょう
>>206 値によっては結果が逆になるのがわからない低脳?
0とfalseは意味合いが違うだろ お前らってほんと馬鹿だな
ぼけ先生登場
いつまでネタやってんだ?秋までか?
このネタだけで100もいくとは異常だ
216 :
デフォルトの名無しさん :04/07/27 00:12
コンペアと聞いて工場でものを運ぶあれを思い浮かべた人は俺だけではないはず。
217 :
デフォルトの名無しさん :04/07/27 00:19
再帰関数で塗りつぶし(迷路探索)プログラムを作るとすぐにstack over flowになるのですが、 いい方法はありますか? #include <stdio.h> int array[10000][10000]; /* 0:空白、1:障害物、2:塗りつぶし */ void set_array(void) { /* arrayに0と1の迷路パターンをセット、スタートが(0,0)、ゴールが(9999, 9999) */ } void fill(int x, int y) { if (x<0 || x>=10000 || y<0 || y>=10000 || array[y][x]!=0) return; array[y][x] = 2; fill(x-1, y); fill(x+1, y); fill(x, y-1); fill(x, y+1); } int main(int argc, char** argv) { set_array(); fill(0, 0);/* スタックがあぼ〜ん */ if (array[9999][9999] = 2) printf("解けます。\n"); else printf("解けません。\n"); return 0; }
>>217 > int array[10000][10000]; /* 0:空白、1:障害物、2:塗りつぶし */
まずはmallocに
>>218 cmpfunc(INT_MIN,INT_MAX);
>>219 #include <stdio.h>
#include <malloc.h>
int* array;
/* 中略 */
int main(int argc, char** argv)
{
array = (int*)malloc(sizeof(int)*100000000);
set_array();
fill(0, 0);/* スタックがあぼ〜ん */
if (*(array+99999999) = 2) printf("解けます。\n"); else printf("解けません。\n");
return 0;
}
で、array[y][x]を*(array+10000*y+x) に変える、という感じですか?
それにしてもスタックが・・・。
>>223 再帰しないで書くと複雑すぎで死亡しますけど・・・。
これじゃ不親切すぎるかな? 状態を保存する変数を確保しておいて、ループで処理進めろ。 それで少なくともスタック消費は無くなっからよ。それでだめ ならまた考えるべし。
>>218 a=2147483647
b=-50000000
※1byte=8bit、sizeof(int)==4の環境を想定
>>226 それが評価される段階まで行く時点でバグ入り
>>225 再帰関数で自動的に行われているスタック処理を手書きで行うということですね。
その説明で分かりました。ありがとうございました。
>>229 キャストしないとWarningが出るんですけど
今、他のスレでvoidのレスを見てて思ったんだが
ここに来てるぼけ先生はひょっとすると本物のvoidじゃないのかと
こんな書き口が
120 名前: Kusakabe Youichi 投稿日: 02/01/17 08:16
In article
>>107 , ぱくぱく名無しさん/107 wrote:
> 今朝9時頃にメンテナンスがあったみたいだ
> アクセス制限かかったのかな?
こわがりすぎー
>>231 あなたは本当のvoidを知らなすぎです。
>>230 どんな警告レベルにしてんだよ。
デフォルトレベルで
void * → int *
の変換にいちいち警告出すようなコンバイラなんて棄てちまえ。
>>232 しばらく前BeckyのMLで暴れて排除されたって話きいたなー
>>233 その警告を無視したらハードディスクの内容があぼ〜んした苦い経験があるので、
キャストは今でも付けてます。
付けない方が見やすいのかも知れませんけど・・・。
237 :
デフォルトの名無しさん :04/07/27 01:40
>>231 「こわがりすぎー」は
すでに「2ch用語辞典」にも載ってるぞ!
>>236 見やすいとか見やすくないの問題じゃない。
藻前はプログラムングにはむいてないのかもしれないな。
>>238 これでも一応専門なんですけど・・・。
それにしても何故そこまでキャストを禿しく嫌うんですか?
240 :
デフォルトの名無しさん :04/07/27 01:52
無駄なキャストはするな。 キャストしたせいで、エラーでなくなってバグがかくれることもある
241 :
デフォルトの名無しさん :04/07/27 01:54
>>240 キャストで隠れてしまうバグもありますけど、キャストしなければバグを防げるんですか?
243 :
デフォルトの名無しさん :04/07/27 02:06
> キャストしなければバグを防げるんですか? はい。
そうですか・・・・・・。
キャストは警告を消すためのものではない。
246 :
デフォルトの名無しさん :04/07/27 02:14
キャストしないで cl -Wx hoge.c すれば、エラーとなりコンパイルできないので、 「バグを防げる」
247 :
デフォルトの名無しさん :04/07/27 02:15
248 :
デフォルトの名無しさん :04/07/27 03:15
この人のプログラムは参考になったってのある?
ちと聞きたいのですが、for文で条件を変えて繰り返しの数値計算をしててcsvでファイルを保存してるのですが、条件を変えたときごとにcsvのファイル名を変えて保存することは可能ですかね? 例えばfor(i=0;i<10;i++) としたとき'ファイル名 1.csv','ファイル名 2.csv','ファイル名 3.csv'・・・のように。 もしご存知ならお願いします。
可能です。
>>251 ぬぉ、まじですか?!
もうちょいがんばって方法探して見ます〜
ありがとうございます♪
#include <stdio.h> int main() { char filename[100]; char name[]="ファイル名"; int i; for(i=0; i<10; i++) { sprintf(filename,"%s %d.csv",name,i); printf("%s\n",filename); } return 0; }
#include <stdio.h> #define NUMBER_OF_FILES 10 int main() { char filename[100]; char name[]="ファイル名"; FILE *fp[NUMBER_OF_FILES]; int i, openfiles; openfiles = 0; for(i=0; i<NUMBER_OF_FILES; i++){ sprintf(filename,"%s%d.csv",name,i); if((fp[i] = fopen(filename, "wb")) != NULL) openfiles++; } if(openfiles == NUMBER_OF_FILES){ for(i=0; i<NUMBER_OF_FILES; i++){ fprintf(fp, "a,b,c,d,e,f,g\n"); } } for(i=0; i<NUMBER_OF_FILES; i++){ if(fp[i] != NULL) fclose(fp[i]); } return 0; }
fprintf(fp, "a,b,c,d,e,f,g\n"); ↓ fprintf(fp[i], "a,b,c,d,e,f,g\n"); orz
おぉぉぉ(ノ´ω`)ノ ↑のプログラムを実行して見たら見事にやりたかったことができましたー 253〜255の方は全員同一の方とみていいんですかね?もし違ってたらごめんなさい。 おかげさまで助かりました〜 まさかこんなすぐに方法まで教えてくださるとは。。。 ほんとありがとうございました〜 参考にさせてもらいます♪
>>217 単にオーバーフローを回避したいだけなら独自のスタックを用意する。
高速化したいなら上下左右に点単位でスタックに積むんじゃなくて
横方向の線単位で積んでいく。
void fill(int x, int y)
{
int i, x1, x2;
get_fill_area(x, y, &x1, &x2); // 塗りつぶせる領域を左右方向に走査する。x1<=x<=x2
for(i=x1; i<=x2; i++)
fill_dot(i,y); // 実際の塗りつぶし処理
for(i=x1; i<=x2; i++){ // 上下の隣接する線を走査してfillを呼ぶ
if(need_to_fill(i, y-1)) fill(i, y-1);
if(need_to_fill(i, y+1)) fill(i, y+1);
}
}
>>217 コンパイラ・リンカのマニュアル読め
どこかでスタックサイズを調整できるはず
>>258 10000^2=100Mピクセルの迷路は調整しても積めないだろ
261 :
デフォルトの名無しさん :04/07/27 11:22
>>258 9x系のWindowsならそれでできるが、
NT系Windowsや最近のUnix系OSは、
足りなくなりゃ自動で制限値までは拡大するだろ。
だからやるならコンパイラオプションじゃなく、
システムの設定で使えるメモリを拡大しろ。
Cの何かいい書籍はありませんか。 基本から載っていて、詳しく書いてあるもの。 いい物を知っていましたら、ぜひ教えてください。おねがいします
つくってわかるC:D
>>267 デフォルトで1MB以上取れるコンパイラなんて知らないけど
どんなOSとコンパイラならできるの?
ろくな理由も書かず無知認定をしてしまう馬鹿な>267ならいます。
>>267 exe に埋め込んだ最大スタックサイズよりスタックが増えることなんて
あったっけ? 初期スタックサイズじゃないよ?
はげしく突っ込まれる
>>267 の明日はどっちだ。
>>268 Windows だったら、リンカで指定できる。VC++ の LINK.EXE とか、GNU
ld とか。
どっちみちスタックサイズは関係ないんだけどな
cl /F10000000 とか
>>268 スタックサイズの上限変えて実行すればいいだけでそ。
デフォルトで1Mとか決ってるのかどうか知らんけど。
現在C言語の勉強をしているのですが、一つ疑問点が出てきました。 まず、前提条件として、ソースファイルが複数あります。 その中のメイン関数の書かれているソースに構造体を宣言し、 他のソースファイルにある関数へ参照渡しをしたいんですが うまくいきませんでした。 そこで、そのファイルにも構造体を宣言したところうまくいったんですが、 もしソースファイルがたくさんあったら非常に面倒なことになると思います。 そこで質問なんですが、メイン関数にのみ構造体を宣言し、 他のソースファイルでもその構造体が使用できるようには出来ないんでしょうか?
posix のプロセス間のデータ共有に使える関数は shmget -> shmat 系以外に、 何かありますか?
int A[10][20][30], B[10][20][30]; 3次元配列でAからBへのコピーはどのようにやれば良いのでしょうか?
280 :
デフォルトの名無しさん :04/07/27 13:53
>>279 memcpy(B,A,6000*sizeof(int));
memcpy(B, A, 10 * 20 * 30 * sizeof(int));
#include <string.h>を忘れずに。
>>280 素早い回答サンクスです!
最悪、構造体にしようかとも思ってました・・・
サスガ!
>>277 どうもありがとうございます。
ヘッダに宣言してしまえばよかったんですね。
287 :
デフォルトの名無しさん :04/07/27 14:58
>>268 手元のメモリ128MB+512MBのマシンでスタック領域500MBくらいまでいけたんで、
がんばればなんとかなるんじゃない?
特定のアルゴリズムの為だけにむやみに スタックサイズを増やすという発想はどうにも馴染めないな
処理系によってはできないことはないというだけで、 スタック食いつぶすやり方を勧めるわけじゃない。
290 :
デフォルトの名無しさん :04/07/27 16:07
DLLの使い方や作り方の書いてあるHPを教えてください。
291 :
デフォルトの名無しさん :04/07/27 16:08
292 :
デフォルトの名無しさん :04/07/27 18:01
加減の+、-じゃなくて、単項式の+、- ってなんですか?
突然ですが、C言語の欠点てなんですかねぇ・・・ 利点としては汎用性や可読性の高さをあげられるんですが、 どうしも欠点っていうものが見えてきません。 まだ、C言語を習ってからあまり時間がたってないからかもしれませんが、 心当たりのある方、宜しくお願いします。
領域破壊を容易に引き起こす プログラマの技量によってとんでもない被害を引き起こす
>よってとんでもない被害 屋根が吹っ飛ぶとか?
アホみたいに1行に詰めたがる奴とか居るからな。
>>292 a = -3;
b = +3;
の+、-。
>>293 ・利用者によるばらつきがおおきすぎ。
・あまり金にならない。
・ぬるぽ
302 :
デフォルトの名無しさん :04/07/27 19:52
>>293 汎用性も可読性も使い手次第で正反対にもなる(現にそれが起きている)
それをあえて「Cの長所」にこじつけるなら自由度の高さってとこだ
俺に言わせればUNIXかぶれの勘違い野郎が跋扈しててC使うたびにうぜー奴とご対面なところか
いまだにインターネットは軍用だから軍の常識が優先だとか叫んでるようなド右翼の相手に無駄なエネルギー使わされるからな
すみません ようかんマン先生のスレはどこにありますでしょうか?
304 :
デフォルトの名無しさん :04/07/27 20:06
union ABC{ char c; int i; }; main(){ union ABC data; data.c=10; この時、data.iは不定ですか?
未定義だったと思う。
>>304 4になったよ。
VCで何回やっても4だった。
307 :
デフォルトの名無しさん :04/07/27 20:12
http://roo.to/antiwmac 当サイトで得た情報、コンテンツにより発生した問題の責任 は一切取りません。
もしあな たが著作権協会などの団体、組合の場合は当サイトに入場することは許されていません。
もし入場した場合はISP、ユーザー、など当サイト管理者、使用者、 関係者を罰することはできません。
これはインタネットプライバシー登録番号431.322.12に違反することになります。
>>304 たとえ初期化済みでも
エンディアンによって違うわな。
初期化なしなら言語道断だが。
>>304 領域は同じなんだから
data.iの1バイト目はdata.cと同じ代入した値
残り3バイトは不定
310 :
デフォルトの名無しさん :04/07/27 20:58
txtファイルを読み込んで配列に格納することって可能でしょうか?
初心者本やってるのですが、 double型の変数にscanfするときは %lf を使うのに、 printfするときは%fなのはなぜですか?
312 :
デフォルトの名無しさん :04/07/27 21:01
>>310 具体的にはどういうことをやりたいんですか?
そのままchar型配列に格納することなら1ステップで出来るし、
タブで区切られたデータをchar型二元配列に格納するんだったら数ステップ必要。
313 :
デフォルトの名無しさん :04/07/27 21:03
>>311 入力の精度が高い方がいいからだと思うけど。
というか、scanfを使わない方がいい。
使うなら、fscanf(stdin, ・・・)を使った方がいい。
2次元配列に格納したいです 12 aa 34 bb 56 cc 67 dd ・ ・ ・ ↑のような内容のtxtファイルを
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] a[3][0] a[3][1] ・ ・ ・ ってことかな? 変態っぽいテキストですね。
a[1][0]=12 a[1][1]=aa a[1][2]=34 a[1][3]=bb a[2][0]=56 みたいにやりたいんですが無理でしょうか?
scanfとfscanf(stdin, ・・・)とで何が違うのか教えてください。
>>309 >1バイト目は
はい不正解。Macでやってみろっつーの。
319 :
デフォルトの名無しさん :04/07/27 21:31
>>313 >というか、scanfを使わない方がいい。
>使うなら、fscanf(stdin, ・・・)を使った方がいい。
ハライテー
320 :
デフォルトの名無しさん :04/07/27 21:31
>>310 初期化だったら
Type array[][4]={{12, aa, 34, bb}, {56, cc, 67, dd}, ・・・}
と書きましょう。Typeはintとかdoubleとか適当に。
あまり数が多いのなら、テキストファイルにデータを書いて読み込んだ方が楽です。
もちろん
>>316 でも大丈夫ですが大変です。
>>317 意味は同じですけど、scanfはトラブルの原因になるので避けましょう。
どうしてトラブルが起こるのかは分かりません。
321 :
デフォルトの名無しさん :04/07/27 21:33
fprintf(stdout ゲラゲラ
322 :
デフォルトの名無しさん :04/07/27 21:33
>>319 fgetsでまとめて読み込んでからstrtokで区切るなりsscanfで読み込むなりでもいいけど。
scanfよりはfscanfの方が問題が起きにくいと思うけど?
323 :
とむ ◆TOM/oiT7jE :04/07/27 21:33
WindowsXPとかWindows2000では、 コマンドプロンプトでエスケープシーケンス(文字の色を変えたりカーソルの位置を変えたりするやつ) が使えないって本当ですか?
>>320 あらかじめtxtにあるデータを読み込んで2次元配列に格納したいんです
fopenとか使ってやるのでしょうか?
325 :
デフォルトの名無しさん :04/07/27 21:34
>>313 が あらわれた!
どうする?
→釣られる
煽る
プ
核爆弾?意味分からない
328 :
デフォルトの名無しさん :04/07/27 21:35
>>321 だから、printfは問題を起こさないけどscanfは問題を起こすからfscanfを勧めたんだってば。
もしかして、Cで大きなプログラム組んだ経験浅いんじゃないの?
329 :
デフォルトの名無しさん :04/07/27 21:35
そうび →やまびこのぼうし じゅもん →ザキ
>>311 可変個引数のパラメータでfloatを渡そうとしても勝手にdoubleへ変換されるから。
(scanfではポインタをパラメータに渡しているので、floatとdoubleの区別がつけられる)
331 :
デフォルトの名無しさん :04/07/27 21:37
どうしてトラブルが起こるのかは分かりません。 どうしてトラブルが起こるのかは分かりません。 どうしてトラブルが起こるのかは分かりません。 どうしてトラブルが起こるのかは分かりません。
>>323 そうだけど、代わりになる関数が用意されている。
333 :
とむ ◆TOM/oiT7jE :04/07/27 21:38
>>332 そうなんですか
ありがとうございました
334 :
デフォルトの名無しさん :04/07/27 21:39
335 :
とむ ◆TOM/oiT7jE :04/07/27 21:40
>>334 そですか どうも
代わりになる関数探し中
336 :
デフォルトの名無しさん :04/07/27 21:40
337 :
デフォルトの名無しさん :04/07/27 21:40
338 :
デフォルトの名無しさん :04/07/27 21:42
>>335 GetStdHandle
SetConsoleTextAttribute
スレ違いスマソ
339 :
デフォルトの名無しさん :04/07/27 21:42
>>336 /* 前略 */
int x;
scanf("%d", &x); /* ここで"abc"とか入力したら変にならない? */
340 :
デフォルトの名無しさん :04/07/27 21:42
>>337 scanfが使えないアフォがコード書くから
341 :
とむ ◆TOM/oiT7jE :04/07/27 21:44
342 :
デフォルトの名無しさん :04/07/27 21:45
343 :
デフォルトの名無しさん :04/07/27 21:46
>>340 scanfの文法くらい分かるけど、
整数入力をする場面で整数でない文字列を入力したらおかしくなる。
プログラムを使う側の入力は予想できないという前提でコーディングする必要があるから
入力によっては問題を引き起こす可能性のあるscanfは使ってはいけない。
344 :
とむ ◆TOM/oiT7jE :04/07/27 21:46
345 :
デフォルトの名無しさん :04/07/27 21:51
>>343 >scanfの文法くらい分かるけど、
いーや、分かってない。 その証拠に「原因不明のトラブル」が続出!
s/分/解/
ふつー fgets して sscanf だろ?
347 :
デフォルトの名無しさん :04/07/27 21:53
348 :
デフォルトの名無しさん :04/07/27 21:54
>>345 だから、
/* 前略 */
int x, y;
scanf("%d %d", &x, &y); /* ここで"12"とか"12 ab"とか"12 34 56"とか入力すると
動作がおかしくなると言っているんだけど。
日本語通じる? */
>>346 禿同。
350 :
デフォルトの名無しさん :04/07/27 21:56
>>349 おかしくなってないっつーの!
マニュアル読め このクレーマーめ
すみません さっぱりやりかたがわからないんですがヒントだけでも教えていただけないでしょうか?
352 :
デフォルトの名無しさん :04/07/27 21:57
> おかしくなってないっつーの! 頭おかしすぎー
353 :
デフォルトの名無しさん :04/07/27 21:59
>>347 だったら今すぐこれをコンパイルして実行してみ。
#include <stdio.h>
int main(int argc, char** argv)
{
int x, y;
scanf("%d", &x); /* ここで"12 34"と入力する */
scanf("%d", &x); /* ここで"abc"と入力する */
scanf("%d %d", &x, &y); /* ここで"12"と入力する */
printf("%d %d\n", x, y);
return 0;
}
動作がscanfのところで変になるから。
354 :
デフォルトの名無しさん :04/07/27 21:59
355 :
デフォルトの名無しさん :04/07/27 22:00
変とかオカシイとかじゃなくて、期待した動作ではないのだろ。
357 :
デフォルトの名無しさん :04/07/27 22:02
アフォばっかだな
359 :
デフォルトの名無しさん :04/07/27 22:03
> 頭おかしすぎー 日下部圭子すきー
360 :
デフォルトの名無しさん :04/07/27 22:09
あーあ、切羽詰ると日下部か・・・ コバンザメの相手なんてこんなもんだよな つまらん
#include <stdio.h> #define MAXBUF 256 #define MAXWORD 4 #define MAXLINE 1024 int main(void) { FILE *fp; char buf[MAXBUF]; char h[MAXLINE][MAXWORD]; int i; if((fp = fopen("de-ta.txt", "rb")) != NULL){ for(i = 0; i < MAXLINE; i++){ fgets(buf, MAXBUF, fp); sscanf("%s %s %s %s", &h[i][0], &h[i][1], &h[i][2], &h[i][3]); } close(fp); } return 0; }
362 :
デフォルトの名無しさん :04/07/27 22:12
>>355 動作環境:WindowsXP
使用コンパイラ:lcc
コマンドラインプロンプトが">"で、実行ファイル名はscanf.exe
実行結果:
>scanf
12 34←入力した文字列
abc←入力した文字列
34 4210736←表示された文字列
>
細かい仕様はどうなっているか分からないけど、動作はこうなる。
>>357 int x;
scanf("%d", &x);
の時に&x(xのアドレス)が渡されるが、入力値が整数でない文字列だと返戻値は未定義、
だと思うんだけど。
本来の仕様はぐぐらないと分からない。
363 :
デフォルトの名無しさん :04/07/27 22:13
またscanfかよ。
スマソ sscanf("%s %s %s %s", &h[i][0], &h[i][1], &h[i][2], &h[i][3]); } close(fp); ↓ sscanf(buf, "%s %s %s %s", &h[i][0], &h[i][1], &h[i][2], &h[i][3]); } fclose(fp);
366 :
デフォルトの名無しさん :04/07/27 22:23
>>363 普段使わないから注意してなかっただけ。
で、本当の仕様は?
367 :
デフォルトの名無しさん :04/07/27 22:23
>>362 >返戻値は未定義
調べろつってんだよ
返戻値なんてどこに書いてあった?
未定義とはどの規格の第何条だ?
# 教えて君の中でも最低ランクだな
368 :
デフォルトの名無しさん :04/07/27 22:26
仕様に従って int x; while (scanf("%d", &x) != 1) {printf("Retry.\n");} と書いて、実行して"abc"を入力したら、 Retry. Retry. Retry. Retry. Retry. ・・・・ となったんだけど。 結論: scanfは仕様どおりに作動しない。
>>310 バグだらけだった。でたらめUPスマソ
#include <stdio.h>
#define MAXBUF 256
#define MAXSTR 3
#define MAXWORD 4
#define MAXLINE 10
int main(void)
{
FILE *fp;
char buf[MAXBUF];
char h[MAXLINE][MAXWORD][MAXSTR];
int i, j;
if((fp = fopen("data.txt", "rb")) != NULL){
for(i = 0; i < MAXLINE; i++){
h[i][0][0] = h[i][1][0] = h[i][2][0] = h[i][3][0] = '\0';
fgets(buf, MAXBUF, fp);
sscanf(buf, "%s %s %s %s", h[i][0], h[i][1], h[i][2], h[i][3]);
if(feof(fp))
break;
}
fclose(fp);
}
for(j = 0; j < i; j++){
printf("[%s] [%s] [%s] [%s]\n", h[j][0], h[j][1], h[j][2], h[j][3]);
}
return 0;
}
370 :
デフォルトの名無しさん :04/07/27 22:27
さあーscanf()に対する鬱憤を晴らすなら今ですよー
372 :
デフォルトの名無しさん :04/07/27 22:29
>>368 おまえには仕様への対処方法と
バグへの対処方法の分別も無いのか
あきれ果てた
>>370 あの例題も結局getsしてからsscanfしてるね
scanfは仕様どおりに作動しない。 =~ s/仕様/素人の期待/g
376 :
デフォルトの名無しさん :04/07/27 22:34
377 :
デフォルトの名無しさん :04/07/27 22:34
いま作ったばかりだが?
379 :
デフォルトの名無しさん :04/07/27 22:35
>>369 それでもなんか動かないです・・・
txtの中身は
aa aa aa aa
bb bb bb bb
でいいんですよね?
>>370 まさにそれです
381 :
デフォルトの名無しさん :04/07/27 22:37
>>374 はぁ?
だとしたらANSIだか何だかの仕様そのものに欠陥があることになるんだけど。
そんな動作を必要とするようなプログラムはこの世に存在しないから。
多分、笑うとこ
>>381 自分の理解力が足りないのを棚に上げて、はぁ?ですかプププ
384 :
デフォルトの名無しさん :04/07/27 22:40
>>377 >調べましたが何か?
まったく不十分
>関数で返却値と言えば返戻値のことだろ。
俺用語で話すなセンズリ小僧
>そもそも間違った入力に対する返却値の定義自体が存在しないのに、第何条なんて言えるわけがない。
まったく不十分と言われる理由から目をそむけている限り明日は無い。
>プログラマの中でも最低ランクだな。
おまえがな
技量以前の大事な資質である調査力に深刻な問題がる
385 :
デフォルトの名無しさん :04/07/27 22:41
仕様の善し悪しは別として、仕様通りですね
386 :
デフォルトの名無しさん :04/07/27 22:42
>定義自体が存在しないのに (核爆
↑うはっ、核爆だってよw
388 :
デフォルトの名無しさん :04/07/27 22:45
で、どの規格の第何条だ? 答えろ
なんだか NG ワードがいっぱい散りばめられているようですね。
390 :
デフォルトの名無しさん :04/07/27 22:51
>>379 scanfで一度エラーを起こすと二度と使えないというのが仕様ですか?
>>383 仕様に対する理解力の問題じゃなくて、そんな仕様を作った動機が理解に苦しむだけ。
>>384 >まったく不十分
そんな仕様は普段必要ないし、C言語そのものの研究をしているわけじゃないから仕様書を読んだことがなくて当然。
仕様書を見れば誰だって分かるだろハゲ。
>俺用語で話すなセンズリ小僧
もしかしてオナニーしたことないの?
オナニーしないとインポになるよ( ´,_ゝ`)プッ
>まったく不十分と言われる理由から目をそむけている限り明日は無い。
リアルタイムで調べられるわけないだろ、ヴォケ。
391 :
デフォルトの名無しさん :04/07/27 22:52
rewind(stdin);
void main(){}
(・∀・)イイヨイイヨー
395 :
とむ ◆TOM/oiT7jE :04/07/27 23:02
なんだか大変だね
396 :
デフォルトの名無しさん :04/07/27 23:05
>>390 >そんな仕様は普段必要ないし
なるほど、俺規格の第1条かw
>仕様書を見れば誰だって分かるだろハゲ。
いーや、唯一例外で分からないヴォケがいる。
>オナニーしないとインポになるよ( ´,_ゝ`)プッ
悪かったな、去年の10月にセフレと寝たのが最後だよ
>リアルタイムで調べられるわけないだろ
これがお前の致命傷
397 :
デフォルトの名無しさん :04/07/27 23:06
ttp://www.open-std.org/jtc1/sc22/wg14/www/docs/n843.htm 7.19.6.4 The scanf function
Synopsis
[#1]
#include <stdio.h>
int scanf(const char * restrict format, ...);
Description
[#2] The scanf function is equivalent to fscanf with the
argument stdin interposed before the arguments to scanf.
Returns
[#3] The scanf function returns the value of the macro EOF
if an input failure occurs before any conversion.
Otherwise, the scanf function returns the number of input
items assigned, which can be fewer than provided for, or
even zero, in the event of an early matching failure.
>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
嘘つき規格。
h[i][0][0] ↑3次元配列?これってどんな機能があるの?
399 :
デフォルトの名無しさん :04/07/27 23:10
>>397 The scanf function is equivalent to fscanfの次の行に
argument stdin interposed before the arguments to scanf.
って書いてあるじゃないか
401 :
デフォルトの名無しさん :04/07/27 23:30
scanfにしろfscanf(stdin, ・・・にしろ、一度でも入力に失敗するとそれ以降の入力は受け付けなくなる。 つまりstdinからの入力が終了してしまう。ファイルで言えばEOFに達してしまう。 入力ミスをした時に再入力を促すようなプログラムには不適。
402 :
デフォルトの名無しさん :04/07/27 23:32
>>401 受け付けさせる方法をしらねーだけのアフォには無理
403 :
デフォルトの名無しさん :04/07/27 23:33
知らない≠知ろうともしない アフォつーたのは後者な
404 :
デフォルトの名無しさん :04/07/27 23:39
fflush(stdin);
405 :
デフォルトの名無しさん :04/07/27 23:39
>>404 ぶっぶー間違い
そーゆーがさつな性格は嫌われるよ
while(scanf("%*s")); あえてscanfで
407 :
デフォルトの名無しさん :04/07/27 23:46
何だ、もう終わりか? つまらん。 ぬるぽ
409 :
デフォルトの名無しさん :04/07/27 23:56
strtokはガッしないが・・・
410 :
デフォルトの名無しさん :04/07/28 00:03
411 :
デフォルトの名無しさん :04/07/28 00:03
>>405 こんなところ?
int x, y;
char str[1000];
while (scanf("%d %d", &x, &y) != 2) {
scanf("%s", str);
printf("Invalid: %s\n", str);
}
412 :
デフォルトの名無しさん :04/07/28 00:10
>>398 char h[J][K][L];
文字列の二次元配列と考えればよい。
まあこの場合、
>>370 あたりのように構造体を使った方があとで楽。
しかし
>>310 が
>>314 >>316 で二次元配列にして欲しいと言ったため、
>>369 の様なソースが出てきた。
これでも後半の for ループ内で
printf("%d %s %d %s\n", atoi(h[i][0]), h[i][1], atoi(h[i][2]), h[i][3]);
と使えばよいこと。
>>410 stdinに対するrewindは未定義じゃなかったっけ。
414 :
デフォルトの名無しさん :04/07/28 00:21
>>411 これでもいい?
int x, y;
char str[1000];
while(1){
fgets(str, 1000, stdin);
if(sscanf(str, "%d %d", &x, &y) == 2) break;
printf("Invalid: %s\n", str);
}
415 :
デフォルトの名無しさん :04/07/28 00:30
>>414 もちろん正解だけど、scanfを使いつつ問題をどう克服するかという趣旨だと思た。
あえて言うなら fgets(str, 1000, stdin); ↓ fgets(str, sizeof(str), stdin);
417 :
デフォルトの名無しさん :04/07/28 01:10
> > 可能ですかね? > > もしご存知ならお願いします。 > 可能です。 お、本当ですかっ! おしえていただきありがとうございます! もしよろしければお名前を教えてください。
418 :
デフォルトの名無しさん :04/07/28 01:13
狩野です。
420 :
デフォルトの名無しさん :04/07/28 01:14
> あえて言うなら f> gets(str, sizeof(str), stdin); strがextern宣言してあったときにエラーでると思う?
>>323 もう遅いだろうが、2000/XPでもANSI.SYSをCONFIG.NTに組み込めば
エスケープシーケンスを使った物を動かす事ができる。
・・・たしか16ビットコードを吐くコンパイラじゃないとだめだった気はするが。
なに、16bitだと。今こそdjgpp復権の時だな。
423 :
デフォルトの名無しさん :04/07/28 01:29
ふつうnnansi.sysだろ
425 :
デフォルトの名無しさん :04/07/28 01:44
VC++も標準で入ってないぞ。 同じことだろぼけ
>>425 JOKEで言ってるんだよね?
そりゃあプログラムの配布にVC++まで配布しないからね。
nnansi.sysを一緒に配布するのは気分わるいし。
428 :
デフォルトの名無しさん :04/07/28 01:58
DLLも同様
429 :
デフォルトの名無しさん :04/07/28 01:59
curses使えよ ぼけ
432 :
デフォルトの名無しさん :04/07/28 07:41
>>411 scanf厨ってどうしてそんなにバッファオーバーフローが好きなの?
近鉄バッファオーバーフロー
>>414 ,416
>str
なんだそのふざけた名前は?
>>432 初級入門書を手にとれば解るけど
何の問題もないかのようにscanfとprintfを乱用してかかれてるからな
>>421 そんなことしなくても
TeraTermなら普通にエスケープシーケンス使えるだろ。
単純に書けるからだろう。 本読み終わる前に挫折されても困るからな。
439 :
デフォルトの名無しさん :04/07/28 08:55
printfは使っても問題ないだろ scanf使ってる本は捨てろ
440 :
デフォルトの名無しさん :04/07/28 08:57
>>439 > printfは使っても問題ないだろ
ネタですか?
fprintf使えって言いたいのか?
442 :
デフォルトの名無しさん :04/07/28 09:01
すまねぇ。頭が混乱していた。
440とかワンパで反応してる奴が粘着してるってが良く分かるな
445とかワンパで荒らしている奴が粘着してるってが良く分かるな
scanf の話題ってほんと間欠泉のような存在だよね
>>443 そこで void セソセイの「つくわか」ですよ。
>>318 Macintosh だろうが1バイト目になると思うけど。
>>309 氏は「下位バイト」とは書いてないことに注意。
451 :
(@u@)ノシ :04/07/28 11:46
今時Cって年寄りと学生しかやってないってことが このスレ見てると良く分かるよ。
今時Cって年寄りと学生しかやってないってことが このスレ見てると良く分かるよ。
455 :
デフォルトの名無しさん :04/07/28 13:07
Borland C++ Compiler 5.5 を「C言語をはじめよう」って補助ソフトを使ってCを動かしてるんですが、 テキストファイルの生成の仕方がわかりません。どうしたらよいのでしょうか? テキストを単にコンパイルするだけじゃいけないのでしょうか?
君の日本語は分かりにくい
言葉の意味をよく知らないで使ってる予感。
すいません、書き直します。 簡単なテキストが書いてあるファイルを開いて、それをコピーしたり文字数をカウントしたりっていうことをしてみたいんですが、 そのファイルの生成の仕方がいまいちわかりません。 Borland C++ Compiler 5.5 を「C言語をはじめよう」って補助ソフトを使ってCを学んでいます。 単にテキストをコンパイルするだけだと思っていたらエラーが出てしまって、どうしたらいいか・・・
>>458 メモ帳でテキスト書いてexeと同じディレクトリに保存しろ
って言うかbccスレ池
>>458 それから、プログラムは書いてコンパイルしたのか?
>>461 テキストそのまんまコンパイルしました
includeとか全くかいてません
bccスレでやれというのに
>>458 データ用のテキストファイルは、コンパイルはいらんよ。
プログラムのソースもテキストファイルだけど、なんか勘違いしてない?
>>465 では普通に保存で実行でいいのですね。やってみます。
みなさんありがとうございました。
コンパイルってのは、大雑把に言ってCで書かれたソースファイルを実行フィルにする処理の事だ。 テキストファイルを開いたりコピーしたり文字数をカウントするのは、 コンパイルして出来た実行ファイルで行う事だ。 というか、「テキストをコンパイル」している時点でコンパイル対象のテキストファイルは既に作成しているわけで、 簡単に言うと基礎的な知識が足りなさ過ぎるんで、出直してきなさい。
468 :
デフォルトの名無しさん :04/07/28 13:27
初心者ですいませんもっと勉強します
このスレはいつから初心者の質問を排除して しかも初心者レベルの奴が回答側にまわるようになったんだ?
>>467 大雑把すぎー
というか、お前それ以上理解してないだろ。
リンクなんて言っても理解不能だと思うけどな。
「テキストをコンパイル〜」と言ってる相手にリンクとか言い出しても仕方ないだろ。 大雑把だと分かる相手には説明するまでもない。 わざわざ「大雑把」と断ってる相手に噛み付いて何がしたいんだ?
テキストファイルってのは ASCII文字のみで構成された バイナリファイルのことだ。
日本語は使っちゃダメなのか。
あたりまえだろ
477 :
デフォルトの名無しさん :04/07/28 14:33
478 :
デフォルトの名無しさん :04/07/28 15:14
ファイルAからデータを読み込んだ後にファイルAを削除したいのですが remove( "ファイルA" ); で削除しようとしていたのですが fp = fopen( "ファイルA", "r" ); とファイルを一度開いてしまっていると 削除できないようなのですが何か他に方法ってありますか? removeを使う前にファイルはクローズしているのですが・・・
480 :
デフォルトの名無しさん :04/07/28 15:19
>>478 removeのあとに
perror("remove");を追加して実行してみて。
閉じていないというオチじゃなかろうな
>>481 > removeを使う前にファイルはクローズしているのですが・・・
って書いてるけど。
あ、perror("remove");を実行したところ remove: No such file or directory と出たので見直してみたところフォルダへのパスが間違ってました・・・ 大変申し訳ないです・・・
ズコー(AA略
n n. (ヨ ) /\___/ヽ ( E) | | / ::::::::::::::::\|| 三\ ⌒ ,,-‐‐ ‐‐-、 .::|/,,/ .  ̄| 、_(o)_,: _(o)_, :::|/ 三 | ::< .::| うわあああああああああああああああ (省略されました。続きを読むにはここを押さないでください)  ̄ ̄
バッファオーバーフローするプログラムが蔓延してるのは 入門書にscanfやgetsが頻繁に使われているのが原因?
scanfやgetsで練習していないからだろう。
馬鹿おヴぇrfぉw
>>486 バッファオーバーフローするとして、
何か問題でも?
>>489 | / _/_
| |_l /\ l l / / \
|  ̄| ) / \ /⌒l / __|  ̄
ヽ_ノ | \ / し ∠ノ\
俺の字より綺麗だ・・・
Cって生産性低いらしいけどVBを100とするとどのくらい?
>>491 ___
ヽ _|_ ヾ ヽ _|_ | ヽ / ._/__ 〃 / /
ノ|ヽ | ヽ ヽ |_ | | / / ― / /
|__、 ノ ノ ノ 」 し ノ //ヽノ / ― ● ●
>>492 プログラムする人の力量とターゲットによる。
>>492 Basic:C 100:110
VB:VC 100:75
くらい
>>492 VBが生産性高いってのは都市伝説。
VBしか使えないPGからすると、VBの生産性が最高ってだけの話。
生産性が高いってどういう意味? 「ヤッターデキタヨー」って声の挙がった件数?
>>497 「ヤッターデキタヨー」って声の挙がるまでの工数
「ヤッターデキタヨー」って言う声の高さじゃない。
500 :
デフォルトの名無しさん :04/07/28 18:52
(・∀・)チンポー!!
VB的生産性=本当は出来てないのに出来たように錯覚させる技
502 :
デフォルトの名無しさん :04/07/28 19:55
随分昔のにレスしてるな
504 :
デフォルトの名無しさん :04/07/28 20:58
>>503 日付も変わってねーだろ
無職の常識でもの言うなよw
1. 100レス近く進んでいて、強い今更感。 2. しかも内容は大したことない。つか一文字ずつ調べろってか。 しかし何で strtol() 使う人少ないんだろうな。 文字列パースするには便利なのに。
506 :
デフォルトの名無しさん :04/07/28 21:18
またループの悪寒
>502,504,506 つまらんレスで上げてるから同一人物だよな? あの関数とは、isdigit()なのか?そうなのか?
509 :
デフォルトの名無しさん :04/07/28 21:35
>>508 いーや、isdigit ではない
scanf をちゃんと理解してる香具師は
例外なく知っている「あの関数」だ
ISO/IEC9899にも規定されている
scanf 自体とは別の関数だ
511 :
デフォルトの名無しさん :04/07/28 21:41
>>510 502=506=509 だが 500 ではない
512 :
デフォルトの名無しさん :04/07/28 21:41
下ネタは好きだが、言うときはもうちっとヒネるぜ
a = b = c = d = 5; とかを実行する場合、 a = 5 と d = 5 のどっちが先ですか?
>>513 結合規則でd = 5から
a = (b = (c = (d = 5)));
516 :
デフォルトの名無しさん :04/07/28 21:47
>>513 そーゆーときは
a = b = c = d = 5;
を
(a = b) = c = d = 5;
a = b = c = (d = 5);
と比べてみればいい
# なるべく複数のコンパイラで
519 :
デフォルトの名無しさん :04/07/28 21:48
520 :
デフォルトの名無しさん :04/07/28 21:50
解釈される順番は右からだが、実行される順番は右からとは限らない。
>>524 ぼけ先生には難しすぎて答えられないから
なぜそんな低脳が居着いてるんだろうかね
そう来たか。
ぬるぽ
530 :
デフォルトの名無しさん :04/07/29 00:02
(;;@u@)ノシ)`Д´)ガッ
533 :
531にガッ :04/07/29 00:09
自分自身を出力するプログラムって書けますか? ファイル読み込みは反則ということで。
>>533 A0プリンタであれば原寸で自分自身を出力する事はできよう。
535 :
デフォルトの名無しさん :04/07/29 00:17
>>534 そういうことじゃなくて(;@u@)
ソースプログラムがファイル名に依存せずに自分自身のソースコードを出力するようなプログラムです。
アヘアヘウヒハ
538 :
デフォルトの名無しさん :04/07/29 00:25
>>533 パルピコかぶれか
板違いだ(・∀・)カエレ!!
539 :
デフォルトの名無しさん :04/07/29 00:28
>>536 #include<stdio.h>・・・・・
と書いて、出力が
#include<stdio.h>・・・・・
となるようなプログラムです。
>>538 純粋にプログラムの問題です。
>>533 でガッとか言ったから変な雰囲気になってしまったんですけど・・・。
>>539 どこに書いて、だよ。つか、幼稚園か?お前の頭は!
ソース読み込み禁止なら逆コンパイラになるだろうが、 シンボルその他をデバッグオプションで残したとしても、 100%同じソースの復元は不可能。
542 :
デフォルトの名無しさん :04/07/29 00:36
>>540 ソースファイルに書いて、です。
ソースファイル self.c の内容が
#include<stdio.h>・・・
であるとき、このファイルをコンパイルした結果
self.exe(UNIX環境ではself)
が生成されたとき、コマンドラインから
self
と入力すると出力結果が self.c の内容と同一になるプログラムです。
>>541 逆コンパイルとかも禁止ということで。
>>539 できるわけねーだろバーカ。
変な雰囲気に見えるかね。見えんがね。見えるんならそうなったのはお前の質問のせいだ。
>>542 全てのソースコードをあらかじめ埋め込んでおけ
無理なものは無理
>>544 そのソースの中に自分を表示する部分があるが、
そこにまた自分のソースを入れるからネストの入れ子で
プログラムは終了しない。
まあ質問も釣りなんだがな。
548 :
デフォルトの名無しさん :04/07/29 00:42
'\n''\r''\t''\a' に該当する部分のフォントを表示するにはどうしたらいいですか? ていうか、とりあえずIBMキャラセットを256文字全部を表示するにはどうしたらいいですか? 厳密には256-1文字ですか。
>>548 フォント用意されてんの?
されてるとして、表示先は何よ。何処よ。
>>548 どうしても見たければ VRAM に直接書き込め
>>548 Windows環境なら、'\n''\r''\t''\a'をファイルに出力してメモ帳で開いてみろ。
'\n'以外はとりあえず表示される。フォント選択を変更すると表示される内容も変わるが。
>>555 表示させたいのは
「IBMキャラセット」
557 :
デフォルトの名無しさん :04/07/29 00:51
いまどきCマガのパズル問題を書く釣り師のほうが驚いた
37 IBM037 IBM EBCDIC (米国 - カナダ) 437 IBM437 OEM 米国 500 IBM500 IBM EBCDIC (インターナショナル) 737 ibm737 ギリシャ語 (DOS) 775 ibm775 バルト言語 (DOS) 850 ibm850 西ヨーロッパ語 (DOS) 852 ibm852 中央ヨーロッパ言語 (DOS) 855 IBM855 OEM キリル語 857 ibm857 トルコ語 (DOS) 860 IBM860 ポルトガル語 (DOS) 861 ibm861 アイスランド語 (DOS) 863 IBM863 フランス語 (カナダ)(DOS) 865 IBM865 ノルウェー語 (DOS)
DATTE やってらんないじゃん scanfより sscanfでしょ
sかんfきたー
>>558 太古の昔からある問題を、Cマガのパズル問題と言い切るのも釣りか?
今月号で出たんじゃない?
564 :
デフォルトの名無しさん :04/07/29 01:05
565 :
デフォルトの名無しさん :04/07/29 01:09
> テキストファイルってのは > ASCII文字のみで構成された > バイナリファイルのことだ。 じゃあバイナリーファイルじゃないものってのはどんなもの? ;-)
binaryを辞書で調べてみろ
567 :
デフォルトの名無しさん :04/07/29 01:16
自己出力プログラム(ソースファイルと同じ内容を標準出力に出す)foo.cのソース #include <stdudio.h> の1行だけ。 で、そのヘッダーファイルの中に、 #include <stdio.h> main(){printf("#include <studio.h>\n");} と2行書けばよい!
569 :
デフォルトの名無しさん :04/07/29 01:19
プリプロセッサ作って通しゃいいだろ?あほらしい事言ってるな
>>567 ダメポ。
stdudio.h
stdio.h
studio.h
572 :
デフォルトの名無しさん :04/07/29 01:20
やーい、こたえられなくてごまかしてるやつ ;-) > binaryを辞書で調べてみろ
573 :
デフォルトの名無しさん :04/07/29 01:22
ソースを丸ごとリソースで埋めればいいんじゃないの?
575 :
デフォルトの名無しさん :04/07/29 01:29
>>571 こいつだめすぎ。
stdio.hと書いたらループしてしまうだろ
(っていうか、stdio.hの中に違うこと書くんじゃねーよ!)
576 :
デフォルトの名無しさん :04/07/29 01:29
577 :
デフォルトの名無しさん :04/07/29 01:37
くだらない釣り禁止
変数とコメントを使え。
質問するな ぼけ 回答するな ぼけ
GWよりも酷い。流石だな。
所詮言語としてもVBより劣るしな。
584 :
デフォルトの名無しさん :04/07/29 07:57
>>581 釣り書き込みするな
釣りには解答するな
ってことじゃない?
>>584 どこをどう読んだらそんな解釈ができるんだ?
586 :
デフォルトの名無しさん :04/07/29 08:00
20.34: さて問題です。どうやれば出力として、自分自身のソースコードを産 み出すコードをどうやったら書けるか。 A: 本当に移植性の高い自己再生プログラムを書くのは大変難しい。これ は特に、一重/二重引用符の使いかた、文字集合(ASCII, EBSDIC...) に何を使うかからくる困難による。 以下は古典的な例である(普通は一行で紹介される。しかし最初に走っ たときに自身を"修正"する) char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}"; main(){printf(s,34,s,34);} (このプログラムは、この種のプログラムの多くと同じように二重引 用符 " がASCIIのように34であると決めてかかっている.)
2次元配列の構造体って出来ますか? 色々調べてみたんですが、1次元の構造体しかなかったので・・・
>>588 色々調べるのもいいが、なぜ試さない・・・
>>588 その前に本当にその設計が妥当かどうかもう一度検討しる
二次元配列を含む構造体、と思っていいのか? それとももっと違うナニカなのか?
struct hoge { int a; int b; } fuga[10][20]; こういう意味?
それは構造体の二次元配列と言わないか?
>>588 の質問は素晴らしい
二つの意味を含むので質問としては最低
釣りじゃないよね?
struct { struct { int foo; double bar; } hage; char hoge[100]; } hige; こういう意味だったりして。
それは二次元じゃなくてネストだよね
1)2次元配列を要素に持つ構造体 2)2次元配列の形をした構造体 3)構造体を要素に持つ構造体を「2次元配列の構造体」と呼ぶならば 他の解釈ある?
4)1次元配列を要素に持つ構造体の1次元配列
>>582 GWより暑いからな。
…いやホント、今年マジ暑い。
>>602 エアコン止めて高層ビル倒壊させれば涼しくなるよ。
604 :
教えてください :04/07/29 19:26
条件判断式に配列をつかえないんでしょうか 例えば for(i = 0; i<10; i++) { for(j = 0; j<10; j++) { switch(arg[i][j]) { case '0': ほにゃららら default : ほにゃららら みたいな感じにしたいのですが 常にデフォルトの処理ばかり処理されてしまうのはなぜ???
int a[2]; int* b; b = ( int* )&a; ってやるとどうなるの?
>>604 てめぇのバグだろ。デバッグもしてねぇくせに。
printfデバッグしろ!!
for(i = 0; i<10; printf("\n"),i++) {
for(j = 0; printf("%d,",arg[i][j]),j<10; j++) {
switch(arg[i][j]) {
case '0':
ほにゃららら
default :
ほにゃららら
とかな。
>>605 *b = 10; としたときに a[0] も 10 になるだけ。
>>605 a[0] == b[0]
a[1] == b[1]
a[2] == b[2]
になります
>>607 for(j = 0; j<10; j++) {
printf("%d,",arg[i][j]);
にしないと最後の一回が危うい
610 :
教えてください :04/07/29 19:47
つーか・・・ かなり平凡なミスでした。 条件判断文の中身は数字なのに case 0:じゃなくてcase '0':とか入れてるから いつもデフォルトになっちまっていた! すみませんですた
ズッコケ(AA略
これにて一件落着(AA略
613 :
デフォルトの名無しさん :04/07/29 19:57
テキストファイルを読み込んで、一次元配列やmemsetで確保した メモリ領域に格納したいのですが、C言語はPerlのように配列が 伸び縮みしないので、どのようにしたらよいのでしょうか?
reallocする
>>613 自分で伸び縮みさせろよマザーファッカー。
616 :
デフォルトの名無しさん :04/07/29 20:17
618 :
デフォルトの名無しさん :04/07/29 20:47
夏休みにC言語を習得したくて、夏期講習みたいなの探してるんですけど、 何日にどこでやってる夏期講習があるとか検索できる総合サイトみたいなのあります?
>>618 お前が感じている感情は精神疾患の一種だ。俺がやってやってやれる俺に任せろ。
>>618 独習。
誰にもマークされないが(独習の)素人には勧められない罠。
621 :
デフォルトの名無しさん :04/07/29 20:54
>>618 本気でプロを目指すんでなければ大枚はたくだけ無駄金だよ
大学のパンキョーでも履修すれ
>>608-609 うお、そうなんだ?
int a[2];
int* b;
b = a;
これと一緒って事?
623 :
デフォルトの名無しさん :04/07/29 21:18
>>622 厳密に言うと違うかな?
配列 a の先頭アドレスを b に代入するが「b = a」
配列 a の 0 番目の要素のアドレスを b に代入するが「b = &a[0]」
C だとどっちも変わらないけど
>>624 b = &a[0];と&aは同等って事かな?
今までずっと勘違いしてたか・・・・・(ノД`)
627 :
デフォルトの名無しさん :04/07/29 21:30
>>625 b = &a[0]; と b = a が同等。
>>626 『int a[2]』に対する『&a』って何型なんだ?
&a[0]とaが同等?っていうか同じような扱いになるのはなんとなく 分かるんだけど更に&aが結果としては同じ扱いになるって所が イマイチ理解できない俺は・・・・・orz
630 :
デフォルトの名無しさん :04/07/29 21:36
>>630 test.c:6: warning: assignment from incompatible pointer type
違うようです
warning C4047: '=' : 間接参照のレベルが 'char' と 'int (*__w64 )[2]' で異なっています。 @VC++
>>630 やっと見つかった
int (*b)[5];
のようです
634 :
デフォルトの名無しさん :04/07/29 21:55
windowsで電源を切るにはどのようなコードを書いたら良いですか? また、休止状態、スタンバイにするにはどうしたらいいですか?
スレ違い。該当スレへどうぞ。 でも、ExitWindowsっていうヒントだけ教えとく。
>>635 >>636 スレ違いなのに解答していただきありがとうございました。
VisualC++スレが妥当だったかな?windowsスレがなかったので・・スマソ
Win32APIスレがいいかもしれない。
今日の日直は誰ですか?
なぜか、APIの方に漏れの質問とそっくりの質問がたってるな。 だれか代わりに質問してくれたのかな。
一応誘導はしたし 重複だタコとか叩かれる事もなかろう
643 :
デフォルトの名無しさん :04/07/29 22:34
アルゴリズムの質問です。 あるx(N)(Nは整数)それぞれが、ランダムな値のuとvについて u≦x(N)≦v の関係をもっている時、ある値yがそれぞれのx(N)の範囲に該当するか調べる できるだけ効率のいいアルゴリズムを教えてください。 例えば、2≦x(1)≦5,5≦x(2)≦8,1≦x(3)≦6というのがあった時 y=2に該当するのは、x(1)とx(3)という感じです。
644 :
デフォルトの名無しさん :04/07/29 22:43
>>643 地道に比較するのが一番早い。
ちなみに N の大きさはどれくらい?
645 :
デフォルトの名無しさん :04/07/29 22:46
Nは10万個くらいです
問題が理解出来てないんだけど、 x(1)は[2,5]の範囲を取りうるの? x()の中身はブラックボックスなの? こんな課題がありうるんだろうか・・・ 正規分布の2σで95%の確率で・・・ とか、何か有るんでないの?
>>643 C言語なら俺に聞け!
アルゴリズムなら他の奴に聞け!
648 :
デフォルトの名無しさん :04/07/29 23:12
>>646 完全なランダムです。
x(1)は[2,5]の範囲ですが、次に実行した場合全く違う値になります。
正規分布とか全くなしの完全なランダムです。
分布形態を調べて、確率閾値を設定して、特定の確からしさのもとで解を出す。
実世界ではよく要求される課題かと。
ただ、
>>643 がそういう課題に直面しているかどうかは、大いに疑問。
650 :
デフォルトの名無しさん :04/07/29 23:17
>>648 x(1)は小さな整数だけ?それならテーブル作ればいいと思うけど。
完全なランダムなら、M回やれば最大最小値の確からしさはは1/Mの関数ですな。
0次ランダムなら、「モンテカルロ法」でぐぐりなされ。 アルゴリズムと呼べるものでは無いよ。
>>650 x(1)は0から1000程度の値のランダム値です。
>>652 モンテカルロ法を調べてみます。
トリッキースレに書いたのですが、 b = a + (a=b)*0; が未定義になるのはなぜでしょうか。
655 :
デフォルトの名無しさん :04/07/29 23:49
>>654 副作用の対象となっているオブジェクトを2度以上参照しているから
基本的にはここでC言語を使ったプログラムなんかは作んないの? お題みたいに例えば「年を入力し、うるう年かどうかを判定しなさい」みたく
副作用でググった。理解できたよ。
ありがとう
>>655 !
しないから適当に宿題を装って宿題スレでやれ
660 :
デフォルトの名無しさん :04/07/30 00:21
>>653 今時のPCは速くてでかいからこんなやり方でもいけそう。
#include <stdio.h>
#include <bitset>
const int N = 100000, RANGE = 1000; std::bitset<N> bs[RANGE];
struct { int lo, hi; } data[] = {
{ 0, -1 }, /* 0 ≦ x(0) ≦ -1 */ { 2, 5 }, /* 2 ≦ x(1) ≦ 5 */
{ 5, 8 }, /* 5 ≦ x(2) ≦ 8 */ { 1, 6 }, /* 1 ≦ x(3) ≦ 6 */ };
main() {
for (int i = 0; i < sizeof(data) / sizeof(int) / 2; i++) {
int lo = data[i].lo, hi = data[i].hi;
for (int x = lo; x <= hi; x++) bs[x].set(i);
}
for (int y = 0; y < RANGE; y++) {
int n = 0;
for (int x = 0; x < N; x++)
if (bs[y][x]) {
if (n++ == 0) printf("y= %d: ", y);
printf(" %d", x);
}
if (n) printf("\n");
}
}
>>660 わざわざプログラムしてくださって
ありがとうございます。
助かりました。
662 :
デフォルトの名無しさん :04/07/30 03:18
いいえ
はい
660はソースコードジェネレーター。
>>643 x(N)が固定なら、
@x(N)を小さい方の数字でソートしたテーブルを作っておく
Ax(N)を大きい方の数字でソートしたテーブルを作っておく
B@のテーブルからyより大きい数x(N)の数を数える
CAのテーブルからy未満の数x(N)の数を数える
DBとCで少ない方から該当するx(N)を地道に検索
でOKだけど、ランダムなら、最初から地道に検索するしかない
今だ!666ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
ベートーヴェン:運命、第三楽章 冒頭のモヤモヤでおもむろにチンポを取りだし、 ホルンのフォルティッシモに合わせてシコシコ開始。 その後、テンポ、楽想の変化に合わせて緩急をつけながら 頂点を目指しつつ、寸止めを繰り返す。 そして、最後のアタッカにねらいを定めて、最終的なグラインド開始。 猛烈なクレッシェンドとともに高まる興奮! そして、4楽章冒頭、 勝利のフォルティッシモと同時にどっぴゅ〜〜〜〜ん!!! これをきっちりシンクロさせるのは至難の業だが、 うまく達成させた時の快感は何者にも代えがたいものがある。 ただし難点は、射精後の虚脱感、敗北感とともに 残りの4楽章を聞かねばならないことだ。 まあ、そこらへんは快楽の代償と割り切って、 粛々と、飛び散った精液の清掃や パンツの洗濯にあたるしかあるまい。
668 :
デフォルトの名無しさん :04/07/30 14:01
年月日からtime_tを作成するにはどうすればいいんでしょうか。 また2038年問題に対応するよい方法はどんなものがありますか?
あー、すいません。年月日だけじゃ無理ですね。 年月日時分秒からtime_tを算出する方法を教えてください。 閏年とかいろいろあってよくわからないんです。 Cに標準で計算する関数はないのでしょうか。
>>669 >年月日時分秒からtime_tを算出する
struct tm を埋めて (年-=1900, 月--を忘れずに) mktime。
>2038年問題に対応するよい方法
64bit に乗り換える。
671 :
デフォルトの名無しさん :04/07/30 16:55
Windows環境(非unix環境)でcrypt関数を使いたいのですが、無いようなので自分で作ろうと思いました。 ぐぐって分かったことは、 ・crypt関数はDESアルゴリズムを25回使用している。 ・DESアルゴリズムの仕様 ・crypt関数はDESアルゴリズムをsaltによって変更している。 ここまで分かったのですが、saltによるDESアルゴリズムの変更を書いたページが見つかりません。 もちろん英語のページも探しました。 以前に見たことがあるのですが、今は出てこないようです。 どなたかDESアルゴリズムの変更(それを書いた場所)をご存じないでしょうか?
673 :
デフォルトの名無しさん :04/07/30 17:35
>>672 2ちゃんねるのトリップを作りたいので、DESでないと無理です。
perlならcrypt関数があるのですが、それだといろいろと問題があるのでCで作ることにしました。
677 :
デフォルトの名無しさん :04/07/30 19:03
かの有名な
http://www.xslisp.com/index-j.html を
読んでいたんですが、その中の eval.c で
object value_stack[VSSIZE], *vs_base, *vs_top;
object *vs_bottom = value_stack - 1;
なんて表記を見つけました。
ここで vs_bottom が有効な値を指していることは
C言語上で保障されているんですか?
BCC 使ってやってるんですが、エラーメッセージで Error: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照) と、出るんですがどうすればいいんですか?
679 :
デフォルトの名無しさん :04/07/30 19:26
ソースへのリンク(検索結果)ありがとうございます。>>crypt.c unixだからソースが公開されているはずだということを見落としていました。 早速コンパイルしてみます。
cryptoapiになんかあるんじゃないかなーとも思うけどスレ違いだし、いいや
>>681 おー、できたできた。ありがとうございましたー。
683 :
デフォルトの名無しさん :04/07/30 20:48
>681 逆だろ、-W オプションを外さないと駄目だろ。
684 :
デフォルトの名無しさん :04/07/30 23:12
このコードの結果は未定義ですか? *s++ = tolower(*s); DEC C V5.9-010 で ctype.h をインクルードすると未定義だと言われます。 gcc-3.3.4 では ctype.h をインクルードしないと未定義だと言われます。 で、どちらの場合もインクルードしない場合が欲しい結果となります。
日本語が変だ。
>>684 tolowerがdefineされているから予想外の結果になっている。
undefすると関数版になるのは保証されてたっけ?
687 :
デフォルトの名無しさん :04/07/30 23:55
>>686 でたらめ言うな
たとえ #undef してうまく動いたように見えても
それは偶然に過ぎない
>>684 *s = tolower(*s);
s++;
にしたら、どうなる?
>>688 別にそういうことを聞いてるんじゃないので…
では、質問を変えます。
*s++ = *s;
これは未定義ですか?
未定義だとしたら何故なのか解説をお願いできませんか?
690 :
デフォルトの名無しさん :04/07/31 00:29
代入に先立って、インクリメントと変数の参照が実行されるけど。 その優先順位が未定義だから。
>>689 俺もそれは未定義には見えんなぁ。なんでだろ。
少なくとも691の解説が間違ってることだけはわかるんだが。
インクリメントは代入の後だよな
>>691
693 :
デフォルトの名無しさん :04/07/31 00:55
バトルロワイアルの禁止エリアをシミュレートしたいのですが、エリアが分断されないようにするには、どうすればよいですか?
すまん、素で読み間違えた。逝ってくる。
>>691 ++ と * では * の方が優先順位は上だからそれはないです。
結局、答は「インクリメントを使った副作用の生じる式で、他の場所でその変数を参照したから」でOKですね?
>>695 そんな話は聞いたこと無い。何かを拡大解釈してないか?
でさぁ、
>>689 は本当に未定義なのか? そうなのか?
みんな、
*s = *s++; と勘違いしてないか? これは紛れも無く未定義なんだが。
697 :
デフォルトの名無しさん :04/07/31 01:15
> そんな話は聞いたこと無い。何かを拡大解釈してないか? 無知なだけー
>>697 煽りはいらんからソース出せ。
煽るだけなら俺でも出来るってことに気づけよ。
>>696 = のオペランドの評価順序は不定だから
*s++ = *s;
*s = *s++;
どちらも不定っぽいけど、C FAQ によれば、
>>695 の理由で未定義です。
>>699 > = のオペランドの評価順序は不定だから
だとすると大変納得できる答えなんだが、
=オペランドの評価順が不定だとする根拠は?
>>700-701 ぶー、はずれ。
出直してきな。
っていうか、根拠も無く適当なこと言うの、好きだね。
せめて同一人物の指定が当たってりゃ、まだ良かったのにね。
純粋にCの話題なのに、自分が説明できないことは釣りにしたいわけね。
704 :
デフォルトの名無しさん :04/07/31 01:33
ディレクトリをツリーごと消したいのですが、 rmdirは空のディレクトリしか削除してくれません。 再帰的に消すにはどうすればいいんでしょうか。 どこかにいいプログラムないですか?
>>702 プログラミング言語C第2版P.65より、
「多くの言語と同様に、Cでは演算子の被演算数に対する評価順序は指定していない。(例外は、&&、?: と,である。)」
||が抜けてるけど、これがです。
>>703 はずれも何も
>>701 は本人なんですが…
× これがです。 ○ これが根拠です。
>>704 ホレ
int rmdir2(const char *path){
char *cmd[8192];
sprintf(cmd, "rm -rf \"%s\"", path);
return system(cmd) == 0;
}
Cだけで再帰的に消す方法が知りたいのですけど。 自分で作ろうと思ったのですが、 どんなサブディレクトリがあるのかを調べる方法がわかりません。 どなたか教えてください。
>>709 マニュアル読めよ。
UNIXならopendirとreaddirを調べろ。
WindowsならFindFirstFileとFindNextFileを調べろ。
Cの標準関数だけでやる方法はないですか?
なんだ。論破されたら荒らしに早変わりか。
すいません、英語読めないんです。
>>711 Windowsなら、
system("deltree c:\");
>>705 評価順序が、左辺が先であろうと右辺が先であろうと、あの式は全く曖昧さを持ちません。
対して、未定義の定義(?)は、
「直前の副作用完了点から次の副作用完了点までの間に、
式の評価によってオブジェクトに格納された値を変更する回数は、
高々1回でなければならない。
さらに、変更前の値は、格納されている値を決定するためにだけ
アクセスしなければならない。」
とあります。
*s++ = *s; は、なんら上記に当てはまらないと思いますがいかがですか?
格納された値を変更する回数は1回である。
変更前の値は、格納されている値を決定するためにだけアクセスしている。
さあ、どうだ?
>>704 >Cの標準関数だけでやる方法はないですか?
たぶん無い。標準関数はディレクトリ構造をもたないマシンもあることを
想定して作られている。
曖昧さを持つじゃん・・・ 左辺が先に、 sに格納準備OK。アドレスは記憶(評価)されたので、sをインクリメントしておきます。ラジャー。 だったら・・・・。orz 回線切って寝ます。
>>704 当然ながら日本語のマニュアルだってある。なぜ自分で探さねーんだ!
*dst++ = *src++; *dst++ = *dst; の根本的な違いを理解しろ。
720 :
デフォルトの名無しさん :04/07/31 02:42
>>719 おじいさん、もうその話題は終わりましたよ
struct HeaderA { int aaa; int bbb; int vol[1]; } TYPE_A; struct HeaderB { int aaa; int bbb; int vol[ ]; } sizeofすると HeaderAは12バイトで HeaderBは8バイトなんですが int vol[ ]; はサイズに含まれないけど vol[0],vol[1],,,,, とかでアクセスできるように出来る書式ってことなんでしょうか。
↑訂正 struct HeaderA { int aaa; int bbb; int vol[1]; };
726 :
デフォルトの名無しさん :04/07/31 03:36
このスレの住人にアミノ酸まとめてドン
727 :
デフォルトの名無しさん :04/07/31 03:39
構造体Nodeに、*dat[N]を宣言し Node *dat{char *(*MyBreak)(char *),char *(*MyFont)(char *),char *(*MyGrid)(char *) ..void MyClass(void)}のような、Node *dat[N];のelementを関数ポインターのアドレスにしたい。 なお、Nodeは typedef struct __node{ char *tag; char num; char *comment; struct __node *pointer; }Node; の自己参照型である。MyClassは、個々の抽象関数である。 Nは、処理系に依存する。 この点を踏まえて、ご教授お願いします。
>>725 まぁその辺は分かるんですが
HeaderB出来ちゃったもんで、
聞いてみたんですが・・・
C++だとOKなんかな・・・
>>728 HeaderAのような書き方をして可変長配列のように使うのは、
規格違反だが全てのコンパイラで移植性が高い。
(と、c-faqに書いてある。)
同じ目的でHeaderBのように書いて、長さ0の配列を宣言できる
処理系もある。前者の方法ほど移植性は高くないと思うが。
どちらの方法も規格違反には変わりないので、コンパイラの
マニュアルに拡張機能として明記されていない限り使うべき
ではないと思う。
>>729 どもっす。
ちょっとコーディングしてて
タイプミスでHeaderBのような構造体つくちゃったんだけど
コンパイルとおったので
サイズ調べたり、色々使ってみてたりしたんですが・・・
こんなこと規格違反ながらもできたんですねぇ
なるほど勉強不足でした。
>>730 追記
HeaderBの書き方は C99では合法になったようだ。
>>733 やっぱり駄目だよな。。。
いや、それなりに名の知れた人が書いているものだから、
「もしかして」と思ったのだが。
735 :
デフォルトの名無しさん :04/07/31 07:17
>>715 おまえ右辺が評価される時点での s が ++ 前だと信じてるだろ?
1. 左辺の格納先アドレスの決定
2. 右辺の読み出し先アドレスの決定
3. 代入
4. ++
1 と 2 に順序依存性はあるか?
3 と 4 に順序依存性はあるか?
ある特定の CPU のレジスタセットを仮定せずに
どうやって順序依存性があると言い切れるのか
拝見したいものだな
>>725 そのFAQはもう古い。
捨てなさい。
HeaderBは正しい。
と書き込んでみたら,スレ伸びてるジャン(><
738 :
デフォルトの名無しさん :04/07/31 08:29
>>723 struct HeaderC
{
struct HeaderA a;
int x[1];
};
struct HeaderC c;
のようなオブジェクトを定義したとき、
c.a.vol[0] へのアクセスは保証されるが
c.a.vol[1] へのアクセスが c.x[0] へのアクセスと同じになる保証はない
(たぶん同じになるだろうし、実用例もあるが)
739 :
デフォルトの名無しさん :04/07/31 10:22
> HeaderB は文法違反。 これは明らかなウソ。 ふつう通りますし、文法的にも問題ありません。
>>739 お前、赤信号を渡る時、
「(見つからなければ)タイーフォされない」という事と、
それが「法律違反である」という事の違いが理解できるか?
妄想で議論してないで 合法・違法の根拠を示すソースを提示しなさい。
C99ならOK
>>743 C999だと int vol[0]; じゃないか
んじゃ漏れはC9999
http://seclan.dll.jp/c99d/c99d04.htm#dt19990726 この記述では、sizeof(info_t) は 多くの場合、attr, num, items[1] の大きさの合計を返します。だから、
例えば、items が一つもいらなかった場合に対応するために、sizeof で大きさをとる時には、
たいていその要素から num-1 といったように 1 を引く必要がありました。
これは、書くのが面倒な上、さらに後からプログラムを見る時にもわかりにくい記述方法となっていました。
今度の C 言語では、[ ] の中の大きさを、構造体の最後のメンバである時に限って省略することが
できるようになりました。例えば、次のように書くことができます。
typedef struct {
int attr;
int num;
int items[ ];
} info_t;
...
info_t *info = malloc(sizeof(info_t) + sizeof(int) * num);
info->num = num;
...
X3010 6.7.2.1
「特別な場合として、二つ以上の名前付きメンバをもつ構造体の
最後のメンバは、不完全配列型をもってもよい。これをフレキシブル
配列メンバと呼ぶ。」
あとは、
http://docs.sun.com/source/816-2454/c99.app.html "For example, in this structure, struct s { int n; double d[]; } S;,
the array, d, is an incomplete array type. The C compiler does not count
any memory offset for this member of S. In other words, sizeof(struct s) is
the same as the offset of S.n. "
とか。
>>734 =677
value_stackから1を引いてしまった段階で未定義だけど、大抵巧くいくね。
巧くコンパイルできるかどうかを確認しながらびくびく使うよりはそんなコード書かないほうがいいのは自明。
>>704 opendir
readdir(NULLまで)
.と..は検索対象から外す
stat
→S_ISDIRなら再帰的に、その後rmdir
→S_ISDIR以外なら、unlink
closedir
のような関数作れば良いです。
>>716 上記例、opendirなどはCの標準、POSIXで定義されている
>>746 そうそう、そうなんです。
データの大きさを計算する書式が見た目でシンプルになるなぁと
一人で納得してたところです。
あとHeader部分のサイズだけが純粋に欲しい時も
sizeof(HeaderB)だけでいいし楽だなぁと。
まぁ、HeaderAを使って
今までどおりnum - 1
とかって書けばいいじゃんって言われると、
まぁそうだね、、、って言うしかないんだけどねw
Cの標準、POSIX
752 :
デフォルトの名無しさん :04/07/31 13:02
753 :
デフォルトの名無しさん :04/07/31 13:09
Cの標準規格上問題ない > (むかしからよくありがちの)サイズ0の配列メンバーを最後にもつ構造体 完全に適法である。
754 :
デフォルトの名無しさん :04/07/31 13:10
struct aaa{ int b; struct aaa *c; } 納得いかない
セミコロン忘れてるからじゃね
>「char」というのはどう発音するのか。 > A: C言語のキーワードの「char」の発音の仕方は少なくとも3通りはある。 「char(チャー)」、「care(ケア)」、「car(カー)」のように発音す > る。どれを使ってもいい。 ・・・・・
俺は無難にしぃえいちあぃあーぅ
758 :
デフォルトの名無しさん :04/07/31 13:14
シャァ
759 :
デフォルトの名無しさん :04/07/31 13:16
> しぃえいちあぃあーぅ なんであぃなんだよ ぼけ
760 :
デフォルトの名無しさん :04/07/31 13:17
761 :
デフォルトの名無しさん :04/07/31 13:19
キャー
764 :
デフォルトの名無しさん :04/07/31 13:34
> アメリカ南部のなまり おいしいよねー > なんぶせんべい
765 :
デフォルトの名無しさん :04/07/31 13:35
> 納得いかない 空白あいてないからいけない
ニャー
767 :
デフォルトの名無しさん :04/07/31 15:06
>>752 >配列の大きさがわからない場合、Nを省略することができる。
これかw
769 :
デフォルトの名無しさん :04/07/31 17:38
でたらめITTENじゃねーよ
質問させてもらいます・・ 文字をウインドウに表示したときに背景が白なんですが、 この背景を変える方法はありませんでしょうか いろいろ調べたんですがまったく見つからず困ってるところです・・
>>770 自分の使ってるプラットフォームのスレへ言って下さい。
C++なんですけど、ここだとだめなんでしたっけ・・? ゲーム画面に文字を表示したときの背景を変えたいのですが
(´・ω・`) CとC++は別のスレがあるってことですか・・? よくわからんけど出直してきます・・
C++スレ今更ながら見つけました どうも失礼しますた
そっちでも同じこと言われてんだろうな
今だ!777ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
volatileを指定するとどういう効果があるのですか? また、どのような場面で必要なのですか?
>>778 コンパイラの知らないところで値が変化する可能性があることを知らせて、
値が変化しても問題ないコードを生成させる。
最適化を受けない。 OSやハードウェア、他のスレッドなどから改変される場合があるときに使う。
>>778 メモリマップされたレジスタとか共有メモリを使う場合の一部のケース。
最適化を禁止するのになんでvolatileなんていう単語を使っているんですか?
changingの意から察すべし
>>778 外部要因によって値が変わってしまう可能性のあるメモリを参照する場合。
マルチスレッドや外部I/Fからの入力がこれに該当する。
もしvolatileを指定しないでポートからの入力を次のように書いた場合、
最適化によって条件判断が省略されてループから脱出できなくなるかもしれない。
volatile char * port = anyMappedIOAddress;
while (* port != 0) {
waitAWhile();
}
って、既に書かれてた・・_/ ̄|○
>>782 まぁ、揮発性って意味やね<volatile
>>782 最適化を禁止するわけではない。
最適化による副作用が出ないようにする指示。
すこしも理解できませんでした。ありがとうございました。
>>786 騙りはやめてください。よく分かりました。ありがとうございました。
>>787 騙りはやめてください。なんとなく分かりました。ありがとうございました。
>>788 騙りはやめてください。明後日の方向に分かりました。ありがとうございました。
>>788 騙り死ねやボケ
このスレは腐ってる。
本物のプログラマは一人もいない。
本物のプログラマはFORTRANを使う
で、volatileを実際に使った経験がある人はやっぱり居ないんですか?
マシン語として使う関係で使ったことはあるが、 本来の目的とは外れるからなぁ・・・。
794 :
デフォルトの名無しさん :04/07/31 22:56
> 最適化を受けない。 これうそ。 各種ある最適化のうち、ある種類のものが適用されなくなるだけ。 ある変数の値がどこでどう参照されてどこで更新されるのかを考え、 そのライフシナリオで問題がないように(実質同じになるように)「もっと効率がいいように」 変更する最適化があるのだが、それが適用されなくなる。 つまり、コードに明示されている「変更」箇所以外でも値が変わるかもしれないことを 前提で考えるようになる (その変数について) そういう「揮発性の」変数に使う。
795 :
デフォルトの名無しさん :04/07/31 22:57
> これうそ。 かわうそ。
>>794 volatile変数が受けうる最適化って何よ?
はぁ〜?
プゲラ
802 :
デフォルトの名無しさん :04/07/31 23:51
>>794 >それが適用されなくなる。
引用符と一行空白、age の特徴を持つ人の発言としては
彼(?)の人格上の障害を差し引いた後のとりえであった
技術的な知見に対する評価を失墜させた痛恨のアフォ発言だな
803 :
デフォルトの名無しさん :04/07/31 23:55
> 引用符と一行空白、age の特徴を持つ人の発言としては 同一人物だと思ってるの、ぼけすぎー つーか、最近騙ってるのは俺だけじゃないはずだ
804 :
デフォルトの名無しさん :04/07/31 23:57
ホントだw
806 :
デフォルトの名無しさん :04/07/31 23:58
>技術的な知見に対する評価を失墜させた痛恨のアフォ発言だな 技術的な知見なんて最初から無い ぼけ
807 :
デフォルトの名無しさん :04/08/01 00:02
は? じじいとして「らしい」としか評価してないが・・・
は?
ぬるぽの出番ですか?
int *ptr = (int *)0; *ptr = 809;
817 :
デフォルトの名無しさん :04/08/01 01:35
つまった
818 :
デフォルトの名無しさん :04/08/01 01:37
質問まだぁ〜?ちんちん
質問 CのコンパイラはCで書かれていますよね(少なくともgccは)。 最初はどうやってコンパイラをコンパイルするんですか?
>>822 16進機械語の前に2進機械語があるはず。
>>823 確かに。
それを言い出せば、2進機械語の前は配線を手で繋ぎ換えることでプログラムを記述していたし、
それより前は歯車式計算機、それより前は計算尺という話になってしまうけど。
そろばんは、日本最古の高性能デジタル計算機という話だ。
指は、世界最古の高性能デジタル計算機という話だ。
二進機械語の前に、トグルスイッチでパチパチする奴があるんでないの? 「シーモア・クレイがそれでOSを入力したスゲェ」みたいな。
829 :
デフォルトの名無しさん :04/08/01 21:06
>>826 そのまんまじゃねーかよ。
デジタル → 指の
Cで、まず関数ポインタを宣言しておき後からその実装を書くというのはどうすれば良いんですか?
>830 プロトタイプ宣言を書けば良いのでは? void func(void); void (*p)(void) = func; void func(void){}
832 :
何かがおかしい :04/08/01 22:22
#include <stdio.h> int main(void) { int counter; char ask; counter = 5 ; printf("これから%d回、処理を繰り返します。\n", counter ); for( counter = 4 ; counter > 0 ; counter-- ) { puts("処理を続けますか? (Y)\n処理を止めますか? (N)"); puts("キーボードから入力してください。 ( Y or N )"); scanf("%c" , &ask ); switch( ask ) { case 'Y': case 'y': puts("処理を行います。"); printf("あと%d回、処理を続けます\n", counter ); break; case 'N': case 'n': puts("処理を止めます。"); counter = 0 ; break; default: puts("もう一度、入力してください。"); break; } } puts("全ての処理を終了しました。"); return(0); }
834 :
デフォルトの名無しさん :04/08/01 23:15
getchar or getc使えって言ってるんじゃないの?
836 :
デフォルトの名無しさん :04/08/01 23:20
getcharを使っても同じ。 fgetsで改行ごと読め。
C使うな ぼけ
839 :
デフォルトの名無しさん :04/08/01 23:28
840 :
デフォルトの名無しさん :04/08/01 23:29
>>836 こいつのオツムん中は gets だな
恥ずかしくて言えない本音w
やはりこうなったか( ´ー`)=3
842 :
デフォルトの名無しさん :04/08/01 23:38
fgets を使うと switch は整数系じゃないとダメだってでるんだけどどうすれば(ry
教えてください。 構造体を定義するのに typedef struct AAAA { ................. } AAAA; というコードをよく見るのですが、2つめの AAAAは何か意味があるのでしょうか? 単に struct AAAA { ................. }; でいいと思うのですが。。。
実は両方とも意味があるんだが、どちらかというと最初のAAAAにこそ意味が無い
>>844 レスども
>実は両方とも意味があるんだが
気になりますw
846 :
デフォルトの名無しさん :04/08/01 23:47
>>843 いちいちstructを書きたくない人は上で書く。
typedef struct tagAAAA { struct tagAAAA*; int idata; char cdata; float fdata; } AAAA; というように、自己参照のために使ったりする
848 :
デフォルトの名無しさん :04/08/01 23:48
おっと、 - struct tagAAAA*; + struct tagAAAA *tAAAA; だ。
自分は常に両方つけるけどね。 先のAAAAはつけないとdoxygenが構造体認識してくれないから。 後のAAAAが無いと変数宣言時にいちいちstructつけないといけないので面倒。
タグ名とtypedef名を別名にするのは何のためなの? いっしょで問題ないような気がする。
852 :
デフォルトの名無しさん :04/08/01 23:55
精神衛生上の問題
端的に言えば一身上の都合
なんつーか、MSDNでそうなってるから。
typedefを使わないのが真のプログラマ
856 :
デフォルトの名無しさん :04/08/01 23:58
Real programmers don't use typedef.
真のプログラマは食いあぶれる
みなさんレスどうもですm(__)m ネタ化してしまいますた(苦笑 >いちいちstructを書きたくない人は上で書く。 あっ、そうでした。最近C++のお手伝いばかりしていて ぼけっとしてますた。 >自己参照型の構造体なら意味がある なるほど! typedef struct AAAA { ................. } AAAA, *AAAA_Ptr; みないなセットばかり見ていたので、たんにAAAA だけなのを見て面食らってしまいますた...orz どうもありがとうございますた。。。
タグ名だけ妙にprivateチックな名前になってると、前方宣言できなくて嫌。 たいした根拠が無いなら、structを明示して使うか、タグ名と同じtypedefにしてほしい。
真のプログラマは明快なtypedefをしばしば用いる
861 :
デフォルトの名無しさん :04/08/02 00:06
すぃげんごならおれにきけぱーとはちじゅうなな
>>861 ん?疑問形にすればいいのか?
s/嫌。/嫌じゃない?/
s/ほしい。/もらえないかな?/
865 :
デフォルトの名無しさん :04/08/02 00:11
private
866 :
デフォルトの名無しさん :04/08/02 00:27
なんか***な響き
インビ インブ
ぷりばてがどーかしたの〜?
うざったいだけだからメール欄にごちゃごちゃ書かないでいいよ
ほら869の機嫌が悪くなった。謝れ868
ごめんなちゃい☆
もう怒った、お前でオナニーしてやる。
えー、やめてくださいよー↓↓
↑↑
875 :
デフォルトの名無しさん :04/08/02 02:10
Real programmers don't use int.
877 :
デフォルトの名無しさん :04/08/02 02:13
実数型のプログラマーは整数を使わない。だろ?
878 :
デフォルトの名無しさん :04/08/02 02:14
むかしvoid先生んちに遊びにいったときに 奥さんのつくったロレーヌ風キッシュがおいしかったのですけどー そんな私でもプログラマーになれますか?
879 :
デフォルトの名無しさん :04/08/02 02:15
Real Programmer v.s. Quiche Eater
881 :
デフォルトの名無しさん :04/08/02 02:17
真のプログラマーは算術IF文を好むんです!
882 :
デフォルトの名無しさん :04/08/02 02:17
ループが10ページにわたっても平気です!
883 :
デフォルトの名無しさん :04/08/02 02:25
うちの学校もこれを教科書にしてる。 (講義は後期のみだが)
884 :
デフォルトの名無しさん :04/08/02 02:25
誤爆か? キッシュイーターといえば、scanf使うやつはもろにそうだな'
885 :
デフォルトの名無しさん :04/08/02 02:27
enumなんかはシンタックスシュガーともいえるだろ?
お前なんかはソサイエティーラビッシュともいえるだろ?
887 :
デフォルトの名無しさん :04/08/02 02:30
わたしも某先生のようにキッシュやクスクスは好きですが、 プログラムのコーディングでめしくってます。
今だ!888ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
社会のゴミが888ゲットおめ
890 :
デフォルトの名無しさん :04/08/02 02:32
あの表面の赤いカブみたいなやつですか? > ラビッシュ
891 :
デフォルトの名無しさん :04/08/02 02:32
いや、ぴょんぴょんはなる耳の長い動物のことだろ。
>875-891
ブラックムーンがちびうさを呼ぶときの名前だろ > ラビット
>>855-857 それ誤訳
Real programmers don't use typedef.
× 真のプログラマは typedef を使わない。
○ 現実のプログラマは typedef を使わない。
むしろ、使って欲しいのにちゃんと使われていないことを嘆いている。
で結局scanf使わずに何使うの
fscanf
// #define バッファ 任意のバッファ用変数 // #define 対象 対象となる変数 fgets(バッファ, sizeof(バッファ), stdin); // Choose. // 対象 = atoi(バッファ); // 対象 = atof(バッファ); // 対象 = atol(バッファ); // sscanf("format", バッファ, ...); 別に自分しか使わないとかならscanfでもええっちゅーの。
第一群 頭悪すぎ,池沼,バカ,馬鹿,ばか,ばーか,アホ,あほ,阿呆,まぬけ,間抜け,アフォ,くず,クズ,アフォ,キモイ,低脳,タコ,クソ,死ね,氏ね,餓鬼,バッカ,香ばしい,ゲラゲラ,(プ,プゲラッチョ,莫迦,逝け,キモい,キモイ,消えろ,失せろ,晒し上げ 第二群 函数,規格票,scanf,gets,goto,コーディングスタイル,コメント,セキュア,セキュリティ,ナル,ヌル,ウォーニング,ワーニング,コンパイラ,コンパイラー 第三群 空白あけろ,空白あけるな,空白のあけかた,空白の空け方,空白空けるな,空白入れろ,空白入れない,キヤストすんな,ボ○ケ,ぼ○け,ぼけぇ,ヴぉけ,ぼけ,ボケ,ぼ け,質問するな,回答するな 第四群 ;-),;),すぎー,初歩的な質問,初心者です,初心者,;-;,異端,脳内変換,UNIX厨,M$,初心者的な質問,のー?,勝利,敗北,妄想,素人,負け犬,ぬるぽ,ヌルポ 第一群:言葉自体の有害度が大きい。 第二群:言葉自体は有害ではないものの、使う人の技量や目的によってはフレームの原因になる。 第三群:荒らしが好んで使う言葉。 第四群:その他。主観で分類してください。
・区切りを「,」にしました。 ・売名行為に荷担することになるので「日下部陽一」は削除しました。 ・言葉をいくつか追加しました。 意見・クレームなんでもどうぞ。
一行が長いですが、改行を入れるかどうかの判断は次スレ立てる方に任せます。
903 :
デフォルトの名無しさん :04/08/02 12:13
sscanfやfscanfの最初の文字のsやfはどういう意味なんですか?
string file なのでは?
それっぽいですねサンクス〜
>>901 >売名行為に荷担することになるので
という電波を受信したのですね?
907 :
デフォルトの名無しさん :04/08/02 13:49
fputcとputcのちがいfgetcとgetcのちがいはなんですか
908 :
デフォルトの名無しさん :04/08/02 13:50
次の質問どうぞ
>>907 fがない方はマクロかもしれない可能性がある。
そんな事はどうでもいい事だ。
911 :
デフォルトの名無しさん :04/08/02 17:17
時間を0.1秒まで取得するのはtime.hじゃ無理ですか?
環境依存
0.1ならclockで出来ない?
914 :
デフォルトの名無しさん :04/08/02 18:06
scanf嫌悪って宗教だよな。 個人でプログラム書くのにいちいち言われちゃたまらん。 仕事で使うとき気をつければ良いだけ。 それとも教育してるつもりなのか?
>>914 最悪はお前だ馬鹿。いつまでも繰り返すな無能。
> それとも教育してるつもりなのか? そうなんだろう。 分かってる人間が、こんなスレで質問したりせんだろ。
clock()がまともに動いてなおかつ一番精度の悪いプラットフォームってなんだろ
思想は漏れは知らんが、 いちいちコードがうpされるたびに脇道にそれるのだけはかなわん。
視姦してやる <●>__<●>じー・・・
>>923 初心者にscanfやgetsを勧めるオバカさんは消えちゃってください。
俺はバッファに64kとってるからまず溢れないんだよ。 だから無問題なの。 まったく馬鹿相手にすると疲れるよ。やれやれ。
クマーーー
scanf scanf scanf scanf scanf scanf scanf scanf scanf scanf
もううざいからさ、scanfとかgetsを使うなという人は、代替となる関数を書いてくれ。 もちろん、強く主張するのだから、バッファオーバーランなどとは無縁だよなw
929は釣りなのか天然なのか……
readline使えよぼけ
readlineってなーに?
調べろよぼけ
半角スペースあけろ ぼけ
空白あけろ、だ ぼけ
readline氏ねカス
>>929 俺は「使うな」派じゃなくて「使い分けろ」派だが・・・
gets: fgets
scanf: fgetsとatoi(strtol),atof(strtod),sscanfなど
代替策は散々掲示されてます。
釣りだと思うけど、そうじゃないならこの話続けないで下さい。
まんこ
誤爆だすまん
( ´д)ヒソ(´д`)ヒソ(д` )
次スレ勃ってる?
#include <stdio.h> int main(void) { int a; char ask; a = 0 ; while ( a == 0 ) { printf(" Y or N ? = "); scanf("%c" , &ask ); switch( ask ) { case 'Y': case 'y': puts("Yesの箱舟"); a = 1 ; break; case 'N': case 'n': puts("Noストラダムス"); a = 1 ; break; default: break; } scanf("%c" , &ask ); } return(0); }
またscanf厨ですか。 インデントくらい合わせろ。な。
945 :
ガンバル初心者! :04/08/02 21:02
だってまだ #include <stdio.h> しか習ってないんだもん。 今日から配列勉強中だよ。 ここってタブ効かない? ここ用にスペースに直したらタブがズレたの。ゴメン。
>>945 stdio.h の中の人にも、もっといいものが沢山ある。
授業で習った関数なんだからscanf厨とか言ってやるなよ。 scanf("型", (&)変数); だけですむぶん教えるのが"楽"なんだろう・・・
949 :
ガンバル初心者! :04/08/02 21:24
優しい言葉、ありがとう! ガンバルよ! でも今日はもう寝るよ!
950 :
ガンバル初心者! :04/08/02 21:27
変なタイミングでレスしちゃったよ。。。
>>948 それじゃあどうすればいいのか、
手取り足取り優しく教えてくれると、どこかの誰かが泣いて喜ぶよ。
と寝言いってみるテスト。いえ、もうホント、明日があるんで寝ます。
>>948 俺は、fgetsと変換関数の組み合わせとかで教えて欲しいが、
始めの段階で難しいとか思われるよりは、
慣れてから問題点と解決方法を教える方が良いかも・・・と思った。
教えてくれるかは別として。
↓これ↓をコンパイルできるフリーのコンパイラってありませんか? #include <stdio.h> #include <math.h> main() { float a,b,c; float d,r,s,bunbo; float x,x1,x2; printf("a="); scanf("%",&a); printf("b="); scanf("%",&a); printf("c="); scanf("%",&c); d=b*b-4.0*a*c; bunbo=2.0*a; if(d>0) { /* 実根 */ x1=(-b+sqrt(d))/bunbo; x2=(-b-sqrt(d))/bunbo; printf("x1= %f \n",x1); printf("x2= %f \n",x2);
上の続き } else if(d==0.0) { /* 等根 */ x=(-b)/bunbo; printf("x= %f \n",x); } else { /* 複素根 */ r=(-b)/bunbo; s=sqrt(-d)/bunbo; printf("x1= %f + %f i \n",r,s); printf("x2= %f - %f i \n",r,s); } }
>>950 起きているうちに寝言言うなや
このスレと一つ前全部読んで来い
957 :
main(void) :04/08/02 22:12
死ね
959 :
main(void) :04/08/02 22:15
死にました。
星厳呉あげ
ごめん。誤爆
ここはエラそうなインターネッツですね
次スレ勃起につき、このスレは終了です。
質問するな 回答するな
>>964 なぜ、質問/回答してはいけないんですか?
雑談スレだからです