1 :
デフォルトの名無しさん :
05/02/11 02:23:56
4 :
デフォルトの名無しさん :05/02/11 12:39:50
1がいつもよりつまらないな
5 :
ビル・ジョブス :05/02/11 12:59:01
さー質問はまだかな?
吉野家の牛丼って旨いの?
今日行列が出来てたけど、わざわざ並んでまで食いたいとは思わないな〜
>今日行列が出来てたけど もうアホかと・・・
今年中にはまた食えるようになるだろう
うん、食ってき・・・・アハヒャヒャハヤ・・・バタッ
「c(半角)」でスレッド検索かけたら、11件しかヒットしなかった。意外。
素朴だけど質問っす! なんでCとC++ではNULLの定義が違うんですかー?
今日売られてる牛丼って狂牛病発生直前に輸入した米国産の備蓄らしいよ いま米国で生産されているものより相当危険
>>12 そんなこと気にするな。
C/C++両方0使っとけ。
はぁ?
NULLなんて使うのは素人
ははぁ
int i; for(i = 0; i < 1001; i++) if(>>i == NULL) ga();
>>12 現在このスレには、漏れも含めてその質問に答えられる人はいません
NULLなんてプログラムを見にくくするだけだろ。
21 :
デフォルトの名無しさん :05/02/11 14:41:38
「言語が違うから」としかいいようがない > 12 「PascalとCで引数の渡し方が違う」のも 「FortranとCで代入式の意味が違う」のも、同様の理由だ!
馬鹿ばっか
23 :
デフォルトの名無しさん :05/02/11 14:42:42
_,, --- 、 , ' ´ `ヽ、 ,/ __,,,,=- 、 ヽ, ノ ,= ̄ i ,__ノ_i、イ ヽ 何このスレ・・・ ~i. ´、i_,,V ,'rヽヽiノ i、 ______i ヽr'rヽ, `'´ |/ヽ人ル' ::::| ______ヽi/ ヽ`' __ u_レト 、ノノ ::::| | |ノi `' --, '´  ̄`ヽ, ::::| | レ ノレ /´ \ ::::| | NULL ,く`ヽ、____,,,,,,, イゝ ::::| | ⊂',⌒ヽヽ/' 〜 〜〜 ~~イヽ ::::| |______ゝr⌒ 、 イ iノ ::::|________i、 /i ,ゝ ___========__ヽ_,/く__,,i,---´iヽ、 ________________________________//
24 :
デフォルトの名無しさん :05/02/11 14:43:07
うちの学校で2年になってからおしえてくれてるせんせーは NULLを「ヌル」って言うんです。どうしましょう?
>>24 ナルなんて恥ずかしくて言えないわ、あーナルか、恥ずかしい
ヌルの方が抵抗ありません
>>24 正確には「ノー」と発音するということを教えてあげましょう。
27 :
デフォルトの名無しさん :05/02/11 14:47:50
1年のときにおしえてくれたv先生は、ちゃんとふつうに「ナル」と読んでましたよ。
うちずっとニュルかと思ってた。
例のアレはなるぽなのですか
30 :
デフォルトの名無しさん :05/02/11 14:48:53
> 正確には「ノー」と発音する いいえ
ヌーだよな。
ノーオゥルッ
33 :
デフォルトの名無しさん :05/02/11 14:49:57
ドイツ語ではヌルっていうんですっ!!!
nil ちゃうん?
36 :
デフォルトの名無しさん :05/02/11 14:52:12
おめーら scullもスクルで gullもグルなのかよ!
37 :
デフォルトの名無しさん :05/02/11 14:53:07
「void & null」は試験によく出る熟語です。
38 :
デフォルトの名無しさん :05/02/11 15:02:32
39 :
デフォルトの名無しさん :05/02/11 15:10:30
ってことはとなりのクラスか
( ´∀`)<BYTE *p=NULL;
41 :
デフォルトの名無しさん :05/02/11 15:14:24
C#>|超えられない壁|>C+>C>|超えられない壁|>Java 論外 J+、ひょっと出言語
42 :
デフォルトの名無しさん :05/02/11 15:16:43
Java=ニート用言語
>41 C#ってひょっと出系では?
44 :
デフォルトの名無しさん :05/02/11 15:21:29
C言語とは関係ないかもしれないけどプログラム関係の知識をつけるに当たって OSのAPIとかメモリ領域に関する知識をつけるにはどうすればいい?お勧めの本ある?
45 :
デフォルトの名無しさん :05/02/11 15:21:53
やーい > C#厨
46 :
デフォルトの名無しさん :05/02/11 15:23:16
C#のコンパイラーが何で書かれているか知っているか?
47 :
デフォルトの名無しさん :05/02/11 15:31:30
ゴゴゴゴゴゴ…
>>44 >C言語とは関係ないかもしれないけど
かする程度に関係はある。が、
>お勧めの本ある?
スレ違いだ莫迦者。
50 :
デフォルトの名無しさん :05/02/11 15:40:38
手で
ほわい
C丼て何?
どうせ定型コードしか書かないんだからDX使えりゃなんでもいいのよ あとは綺麗に書けるかでその点ではCは没
_,, --- 、 , ' ´ `ヽ、 ,/ __,,,,=- 、 ヽ, ノ ,= ̄ i ,__ノ_i、イ ヽ 何このスレ・・・ ~i. ´、i_,,V ,'rヽヽiノ i、 ______i ヽr'rヽ, `'´ |/ヽ人ル' ::::| ______ヽi/ ヽ`' __ u_レト 、ノノ ::::| | |ノi `' --, '´  ̄`ヽ, ::::| | レ ノレ /´ \ ::::| | NULL ,く`ヽ、____,,,,,,, イゝ ::::| | ⊂',⌒ヽヽ/' 〜 〜〜 ~~イヽ ::::| |______ゝr⌒ 、 イ iノ ::::|________i、 /i ,ゝ ___========__ヽ_,/く__,,i,---´iヽ、 ________________________________//
56 :
デフォルトの名無しさん :05/02/11 19:13:18
> DX使えりゃなんでもいいのよ レジスターですね
57 :
デフォルトの名無しさん :05/02/11 19:14:50
> 何このスレ・・・ ナルすれ
>>24 r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ
. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 日記はこれにでも書いてろ
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ な!
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,
http://yuukiremix.s33.xrea.com/chirashi/ :::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
なるぽ
こうして無駄にスレが消費されていく。でも言いや、HDD安いし
無駄に消費されるのはお前らの未来への可能性と寿命
62 :
デフォルトの名無しさん :05/02/11 21:39:41
第102採掘基地
下らない質問でももうしわけありません。 関数の引数で const void *aaa とありますが、これはどういった意味があるのでしょうか? 自分なりに調べたところ、何が入るか決まっていないようにかんじました。
初期化子付でやれば意味よ
65 :
デフォルトの名無しさん :05/02/11 21:59:01
>>63 const なオブジェクトをポイントする「何らかの」ポインタから値を受け取る変数
あと、変更できないポインタとか
68 :
デフォルトの名無しさん :05/02/11 22:01:38
void * const aaa
69 :
デフォルトの名無しさん :05/02/11 22:08:05
>>12 です。
>>21 さんどうもありがとうございます。そこをもう一段掘り下げていただけると嬉しいのですが…
C++ではCのNULLの定義ではなぜまずかったんでしょうか?
知りたいのなら、CのNULL定義を使ってみればいい。
皆様ありがとうございます。 おぼろげながら解った気がします。 何が入っているか判らないポインタということですね たしかにンプルでは、キャストしてから使っていました。
73 :
デフォルトの名無しさん :05/02/11 22:18:13
>>71 サイト主は <stream.h> を知らないようだな
75 :
デフォルトの名無しさん :05/02/12 01:38:46
質問させていただきます 任意の動作をさせながら一定時間たてば他の処理をさせたいのですがどうすればいいのでしょうか? たとえば if (1){ printf("hoge"); } と言うのを5秒間つづけさせたいのですが 時間を指定してループをまわすにはどうするのでしょうか? sleepを使えばできると思っていたのですが実際やってみると sleepで 指定時間止まってしまうのでだめです どうすればいいのでしょうか?
time
上のprintfのループを5秒間動かすものを書いて下さい
80 :
デフォルトの名無しさん :05/02/12 02:07:13
>>75 alarm()
setitimer()
fork()
CreateProcess()
pthread_create()
time_t start; time(&start); while(time(NULL) - start < 5) { printf("Hoge%d", time(NULL) - start); }
僕は英語とC言語を話せます
84 :
おれはこれつかってます。 :05/02/12 02:51:20
time( &1 ); for(;;) { : time( &2 ); if (difftime(t2,t1)>300.0) break; } もしくは、アラームのシグナルハンドラー登録かな? pthread_XXXXは環境が提供されていと使えまへん。
>>86 いやだから、わざわざdifftime()を持ち出す理由を知りたいのだけれど。
わざわざdifftimeごときに粘着する理由も知りたいものだな。
わざわざ1レスごときに粘着する理由も知りたいものだな。 つーか、誰も&1、&2には突っ込まないのかYO!
Cにシグナルなんてあったっけ?
標準 C には無いな。
確認しとくけど標準ってC99のことだよね?
93 :
デフォルトの名無しさん :05/02/12 05:02:19
ほかに標準はない
業界標準といったらVC++に決まってるだろ。
おやおや、シグナルがないとはいかがな物か。もそもそと苦言を呈しておく。
96 :
デフォルトの名無しさん :05/02/12 05:21:11
setenv()もないぞ。
signalはOSというかライブラリの話だ
C言語の話だろ。
99 :
デフォルトの名無しさん :05/02/12 16:30:01
CじゃなくてC言語っていうあたりが厨房だな。
初級〜中級者から抜けられません 入門書→入門書→入門書→入門書… 無限ループ
ループして無いじゃん
初級〜中級者にハマって抜けられねえ( ´,_ゝ`) 月に20行です ウィンドウは全く応答なし スゲーつまんねえ 前一回フレームワーク持ってたやついたけど 見ぬふりをした
103 :
デフォルトの名無しさん :05/02/12 17:03:32
日下部先生の本を読めばばっちりですね。
104 :
デフォルトの名無しさん :05/02/12 17:09:37
>102 本や開発環境の選び方が悪いんじゃないのか? ネットで良い入門書を探せ。 基本が分からないならBASICかRubyでもやっとけ。
105 :
デフォルトの名無しさん :05/02/12 17:14:28
うちのチームでは、移植性を考えて、 #if __STDC_VERSION__ / 100 > 1999 || defined(__GNUC__) #include <stdbool.h> #else enum { false = 0, true = 1, } _Bool; typedef _Bool bool; #define false false #define true true #endif こう書いているんだけど、どう? すごいでしょ。 問題あったら指摘してみて!
106 :
デフォルトの名無しさん :05/02/12 17:15:08
>>104 Basicがでてくるあたりでこいつぼけ
107 :
デフォルトの名無しさん :05/02/12 17:15:56
>>105 enumで末尾の「,」がOKになったのはC99から。なので矛盾してる。
108 :
デフォルトの名無しさん :05/02/12 17:16:38
>>107 あ、そいつは誤植。っていうか書き写しまちがえただけです。
実際にはそれはついてないです。
109 :
デフォルトの名無しさん :05/02/12 17:17:43
110 :
デフォルトの名無しさん :05/02/12 17:20:37
#define false false #define true true これいいの?
111 :
デフォルトの名無しさん :05/02/12 17:21:54
>105 非標準な互換性などポチにやるエサに過ぎない。 <stdbool.h>をインストールするだけ。
112 :
デフォルトの名無しさん :05/02/12 17:23:03
>>110 問題ない。
なぜ「やる必要があるか」はだいたい想像できるね。
<stdbool.h>をインストール
115 :
デフォルトの名無しさん :05/02/12 17:28:59
構造体のbitフィールドで、1bitつかったフラグの場合、 以前までは、 ... unsigned int flag_a : 1; unsigned int flag_b : 1; unsigned int flag_c : 1; ... って書いてたんだけど (C99で、unsignedはつけなくてもdefaultでunsignedになるように なったが、癖でつけてる。 一時期、ここをcharとかshortって書くと、アラインメントに影響があるコンパイラーが あったのだが(gccもたしかそうだったような)、 つまりたとえば、1bitのが2つで合計2bitしかつかってないとき、 shortって書いてると、2バイトだけとって次のをつめてくれてたんです。 これって標準的なものでしょうか? あ、ところで、 bool flag_a : 1; bool flag_b : 1; bool flag_c : 1; って書き方についてはどう思います?
116 :
デフォルトの名無しさん :05/02/12 17:29:52
>>114 過去のソースで #if defined(true) とか #ifndef trueって書いてあるところでも
問題おきないようにするためだ。
118 :
デフォルトの名無しさん :05/02/12 17:34:49
#undef true #undef false
120 :
デフォルトの名無しさん :05/02/12 17:48:25
>115 bitfieldは使いやすいけど嫌われる。 気にする必要があるなら#def,enum,const使え。 構造体アライメントの設定には<pshpack?.h>,<poppack.h>を使え
121 :
デフォルトの名無しさん :05/02/12 18:23:00
>>120 > 構造体アライメントの設定には<pshpack?.h>,<poppack.h>を使え
標準にそんなんあったっけ?
122 :
デフォルトの名無しさん :05/02/12 18:30:11
>121 事実上の標準。他は死刑
123 :
デフォルトの名無しさん :05/02/12 18:34:31
事実上の標準? Windows上のBorlandとVC++だけでは?
124 :
デフォルトの名無しさん :05/02/12 18:39:50
>123 おまいのGCCは古い。それらのヘッダがなければ、自分で用意しろ
125 :
デフォルトの名無しさん :05/02/12 18:49:58
> bitfieldは使いやすいけど嫌われる。 嫌うやつって厨房なおやじだけだとおもうが
けちけちすんなよ。ビットなんぞ使わずにint使えよ
127 :
デフォルトの名無しさん :05/02/12 19:11:11
いや、intに詰め込んで |= でセットして &= 〜 でリセットして、 & でみるのが おやじ厨 なわけ。 そんなことするぐらいならbitフィールドのほうが100倍よい。
>127 コンパイルして終わりのおまいとは業界が違うんだ、ほっとけ。
129 :
デフォルトの名無しさん :05/02/12 19:24:54
保守するからこそビットフィールドにするべきだろうが。ぼけ
130 :
デフォルトの名無しさん :05/02/12 19:39:35
まともな組織はCゲンゴなんて使わないけどなwww
>>130 そういうからには理由があるのだろう。理由は?
まあ今時Cなんて見ないしな 圧倒的に使いにくいし
>>132 恐らく
1.自分の周りはまともな組織
2.自分の周りは使ってない
>>134 なるほど。井戸の中のカエルくんだったか。
「CはC++にM&Aされたから」(14字)
137 :
デフォルトの名無しさん :05/02/12 21:07:31
Cしかわからない前世紀の遺物たち哀れだなw
>>133 可愛そうに・・・会社に飼い殺されてるプログラマなんだね。
ちょっとでもオープンソースの世界に触れているなら、
絶対に聞けない天然記念物級の言葉だねw
そういや、GNU系でC++のもの見たこと無いな
Cしか使えない暇人が暴れてるようですね
>>140 あ、面白い。
使える言語列挙して頂けます?
Ruby
知っている言語の数を引き合いに出している時点で低能確定。
スレがのびてると思ったらキチガイが沸いてたのか。
Cスレでなにやってんだか
>>143 この質問が言語の数を引き合いに出すためのものだと
思い込んでる時点で〜以下そのままお返しします。
まああなたには一生かかっても目的が読めないかもね
じゃあ目的を言ってみろよ
一つに、Cしか使えないといっている時点で、 二つ以上は使えると宣言しているわけだからその確認。 別に二つ三つあれば、後はいくつあろうと知ったこっちゃ無いけど。 そしてその中にCと「まともな組織が使う言語」が含まれているかどうか。 Cと「近代的な言語」を知らずしてCを時代遅れと評価することは出来ない、と。 質問した目的はこんなところ。
151 :
デフォルトの名無しさん :05/02/12 22:30:27
>まあ今時Cなんて見ないしな プ
152 :
デフォルトの名無しさん :05/02/12 22:38:55
GNUって三流ホスティング屋が群がってるあれですかwww
釣られてる奴ウザ杉
Cで書かれたGNUの成果物ってプログラムとしてはド汚いのばっかだよな
それはつまり、もう反論できないわけだな では以下何事もなかったかのようにC言語の質問と回答をどうぞ
つーか当たり前過ぎることを聞いてる割に >あ、面白い。 >使える言語列挙して頂けます? これはなんだと
>>152 最近上り調子の楽天とライブドアを三流扱いする神キター?
>>156 その当たり前すぎることを単刀直入に聞いて
まともに答えが返ってくるとは思えなかったから、
質問の仕方を変えたわけだけど・・・逆効果だね。悪かった
結論:聞く術無し
159 :
デフォルトの名無しさん :05/02/12 23:08:16
ポインタや配列のコンパイル結果みてシェーしたことないやつ幸せ過ぎ
160 :
デフォルトの名無しさん :05/02/12 23:10:45
あたしだって幸せになりたいわ。
gcc (GCC) 3.3.3 を使っているのですが 最適化の指定をしないのと -O2, -O3をしていするのでは バイナリを実行したときの結果が違います、 こういうことってあるのでしょうか? また、なぜ変わるのでしょうか?
たぶんプログラムにバグがある。
>>161 貴方のプログラムにバグがあるから。
多分メモリ回りだろう。
>>161 バイナリが違うんじゃなくて実行結果が違うのか。
ならプログラムが変だよ。
うぅーーん、バグか・・・ 私にはわかり兼ねます・・・ 一応、 ウインドウを作ったときの横幅が変わるので 横幅を決めてる変数の値を変えてやれば 修正はできるのですが 最適化しないときのサイズにしといたほうがぶなんですかね?
変数の初期化し忘れとかでゴミ値を読み取ってしまっていて そのゴミっぷりが最適化オプションによって変化しているんだろうな。
gccならとりあえず -Wallつけてみれ。
-Wall したら ぞろぞろと出てきました・・ これを全部修正したら直る雰囲気ですかね?
-Wall は最初からつけとけって 直るかどうかは分からんが、ぞろぞろ 出てきてるんだったら直る予感
xhoge.c:308: warning: suggest parentheses around assignment used as truth value ってどういう意味ですか?
その質問を全警告削り終わるまで続ける気か・・・
173 :
デフォルトの名無しさん :05/02/13 00:28:38
-藁all
対応する括弧がどうたらこうたら? C始めたばっかで 英語はわかっても意味がわからんけど
英文そのままGoogleに突っ込んでみれ
if (ptr = hoge()) { } みたいなのを if ((ptr = hoge()) != NULL) { } みたいにしろ
>>176 普通に間違えて代入してるんじゃないのか
gccは、parentheses around assignmentするだけで warning消えるんだね。 知らなかったよ。
F(T)=6.72*10^-4*(1000-T)-5.67*10^-8*0.5*(T^4-600^4) をCでのはさみうち法のプログラムを教えてください
parse error at line 2
shukudaiha,shukudaisure
183 :
デフォルトの名無しさん :05/02/13 07:36:20
> 一生同じ処理系で終わるつもりですか 同じ処理系じゃなくてもうごくようにするためのビットフイールドだろうが ぼけ 直接 |= や & してたら移植性なくなる
184 :
デフォルトの名無しさん :05/02/13 07:40:17
> 対応する括弧がどうたらこうたら ぼけ。ぜんぜんちがう。 truth valueとしてつかいたいなら代入は括弧でくくことをおすすめする。だろ
185 :
デフォルトの名無しさん :05/02/13 07:41:58
っていうか、その-O2でうごかないソースだせよ ぼけ
186 :
デフォルトの名無しさん :05/02/13 09:25:24
Cプログラムをする上で「構造化」ってどこまでやっていいと思いますか? たとえば、「関数細分化しすぎてかなりデカイプログラムなのにmain関数はほんとに数行しかない」 っていう状態はどうなんでしょうか?
>>186 >たとえば、「関数細分化しすぎてかなりデカイプログラムなのにmain関数はほんとに数行しかない」
>っていう状態はどうなんでしょうか?
それが理想形。
190 :
デフォルトの名無しさん :05/02/13 10:13:18
>直接 |= や & してたら移植性なくなる へぼ宣言すんなやw
191 :
デフォルトの名無しさん :05/02/13 11:29:58
教えてください。 if( c=='A' ) の 'A' 部分を "A" とするのと、どうちがうのですか? お願いします。
>>191 'A'はASCIIコードを表す
"A"はその文字列が格納されているアドレスを指す
>>191 'A'はAという文字そのものを意味し、"A"だとAという文字列を意味する。
194 :
デフォルトの名無しさん :05/02/13 13:02:03
こんにちは、質問させてください。 フォルダをプログラム内で作成したいのですが、 そのような関数はないのでしょうか。 WindowsAPIでもいいです。 よろしくお願いします。
フォルダ 作成 Win32API
mkdir
link
199 :
デフォルトの名無しさん :05/02/13 14:00:43
****** 重要 ****** バレンタインデー中止のお知らせ 2005年2月14日に開催予定のバレンタインデーは諸事情により中止になりました。 この決定により、ホワイトデーも中止ということになります。 中止、ならびにこの告知が遅れたことにつきまして、 楽しみにしておられた方々・関係者各位には謹んでお詫び申し上げます。 ****** 重要 ******
200 :
デフォルトの名無しさん :05/02/13 14:35:11
良スレ晒しage
201 :
デフォルトの名無しさん :05/02/13 14:57:32
202 :
デフォルトの名無しさん :05/02/13 15:02:52
24位って随分と下だな。おい!
203 :
質問です。 :05/02/13 15:54:12
Write a C language program that inputs an ASCII string and converts the number decimal point as in the following data protocol: First byte: number of unpacked BCD digits before the decimal point Second byte: number of unpacked BCD digits after the decimal point Third byte: unpacked BCD most significant digit Fourth byte: unpacked BCD next-to-least significant digit ETC: Ninth byte: unpacked BCD most significant decimal digit (N+1)th byte: unpacked BCD next-to-least siginificant decimal digit ETC: An unpacked BCD char(byte) digit contains 0000nnnn, where 0000<nnnn<1001 Here is an example for the protocol. If the string is 894.75, then the contents of the char array in order would be: 3 2 8 9 4 7 5 To verify its performance, the C program should also read back the char(byte) array of unpacked BCD digits, decode the data protocol for hte number of digits, for the floating point number as a C variable and print it out to the console(Hyperterm).
宿題丸投げか できの悪い学生を持つ講師も大変だよな
ASCII文字列を10進法の数字に換えるC言語プログラムを以下の仕様に従って書け。 まで訳した。
206 :
デフォルトの名無しさん :05/02/13 16:11:53
>>188 mainが関数じゃないと思っているやつ発見!
functionは手続きと訳すのが常識つまりmain手続きが正解 分かった?
誰?
おれおれ!
210 :
デフォルトの名無しさん :05/02/13 16:26:57
> functionは手続きと訳すのが常識 procedure厨、つまりVB厨か ;-)
211 :
デフォルトの名無しさん :05/02/13 16:30:27
212 :
デフォルトの名無しさん :05/02/13 17:01:17
> ASCII文字列を10進法の数字に換える 誤訳だ。decimal pointは「十進法の数字」ではない
213 :
デフォルトの名無しさん :05/02/13 17:03:47
ASCII文字列を入力して以下のデータプロトコルに従って10進小数点数に変換する Cのプログラムを書け 1バイトめ: 小数点の前のの桁数 (非パック化BCD) 2バイトめ: 小数点の後の桁数 (非パック化BCD) 3バイトめ: 最上位数 (非パック化BCD) 4バイトめ: 最下位数の次の桁等 (非パック化BCD) 9バイトめ: 最上位数10進数 (非パック化BCD) N+1バイトめ: 最下位数の次の10進数等 (非パック化BCD)
214 :
デフォルトの名無しさん :05/02/13 17:03:58
英語なんかわかるかっつーの。問題は簡単そうだけどな。
215 :
デフォルトの名無しさん :05/02/13 17:09:17
いうだけばんちょー
216 :
214 :05/02/13 17:13:49
>>203 俺は解けたよ。簡単だった。20行くらいかな
219 :
デフォルトの名無しさん :05/02/13 17:22:17
宿題でわからないところがあったので教えてください。 マージソートでデータ(乱数1〜10)を10用意してソートしたときの配列の動き方がわかりません。 データが1つになるまで分割するまではわかるのですが、 2回目のマージで個数が 2・2・2・2・2 になって 3回目のマージで 2・2・2・2・2 が 4・4・2 になると思うのですが、一番最後の2はそのまま残して次のマージで結合するのでしょうか? いろいろなサイトを見て回ったのですが要素が8個のとこばかりでよくわかりませんでした。 マージの板がなかったのでここで質問してしまいました、よろしくお願いします。
220 :
デフォルトの名無しさん :05/02/13 17:25:15
おまえ、コーディング以前にアルゴリズム理解してないじゃん。 ちゃんと教科書みろよ。 のってないならアルゴリズム事典でもみろ ぼけ
221 :
デフォルトの名無しさん :05/02/13 17:27:27
ファイル名を自動作成する方法ってありますか? プログラムの実行毎にその時刻などをファイル名にしてDATで保存したいです。
222 :
デフォルトの名無しさん :05/02/13 17:29:40
Microsoft Visual C++ Runtime Library Runtime Error! Pogram: C\Program Files\Common Files\Symantec Shared\ccProxy.exe This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. このエラーわかる?
C言語と関係無い話題ばかりだな
225 :
221 :05/02/13 17:36:29
>>222 > Microsoft Visual C++ Runtime Library
C++って書いてあるじゃねーか厨房
>>225 たとえばこう
system("rm -rf /");
>>227 初心者スレでそういうレスはマジでやめとけ
>>221 こんなのをプログラムの冒頭に入れるんじゃダメなのか?
#include <stdio.h>
#include <time.h>
FILE* make_file_of_time(void)
{
time_t t = time(0);
struct tm* currtime = localtime(&t);
char filename[32];
FILE* fp;
strftime(filename, 32, "%Y%m%d%H%M%S.dat", currtime);
fp = fopen(filename, "w");
return fp;
}
int main(void)
{
FILE* fp = make_file_of_time();
fclose(fp);
}
>>226 1000歩ゆずってC++だとしても、CとC++は別物
Microsoft Visual C++ でCのソースがコンパイルできるじゃねえか
>>221 char a[]="touch hoge";
system(a);
前から言いたかったんだ・・・ ほげ
char a[]="touch hage"; saytam(a);
>>233 いまはayayaとhoyoyoが流行り。
rootで動かすバカはいないと信じたい。
これでshortのoverflowを検出できないのって仕様通りなんですか? $ cat a.c #include <stdio.h> int main() { int count; unsigned short num; char string[] = "111111"; count = sscanf(string, "%hu", &num); printf("%d %d\n", count, num); return 0; } $ gcc -o a a.c && ./a. 1 45575
239 :
221 :05/02/13 18:36:47
>>223 ありがとうございました。
あと、ファイル名を時間じゃなくて、たとえばフォーループのループの回数で出力するにはどうすればいいですか?
for(x=0;x<=N-1;x++){
ez[x][0]=sin(10*s*3.1415927/180.0);
}
1.dat
2.dat
って形で出力して、ファイルの中身はEZの値が1個入ってるってプログラムも作りたいです。
>>239 手順は同様。sprintfを使ってファイル名を作ってfopen。
ちょっとは調べなさい。
241 :
製作 :05/02/13 19:31:39
友達やらでMMORPGを作ろうとおもっているんです。 ぼくはグラフィック係なんですが・・ どうやってつくればいいのかわからないです。 なのでツールとかをどこからとったらいいかおしえてください
そういう板があるからそっちでやれ。お友達がたくさん出来るぞ。
>>241 >なのでツールとかをどこからとったらいいかおしえてください
買えないのか? 引き篭もりめ
ゲームグラフィックをCで描くのか……すごいな
>>244 そうかぁ?3Dの手書きは量があると辛いぞ?
246 :
デフォルトの名無しさん :05/02/13 22:48:18
gdbでargvに値渡す事ってできますか
>>222 実はノートンのバグでシマンテック自身もよく分からないらしい。
249 :
デフォルトの名無しさん :05/02/14 00:36:38
>>246 >gdbでargvに値渡す事ってできますか
> run arg1 arg2 ...
で、どないだ?
>>246 set arg arg1 arg2
だったかなぁ…
独り言は道端の小石にでも向かってしろよ
お前がなw
253 :
デフォルトの名無しさん :05/02/14 01:15:34
どうやって、C言語について学べばいいか教えてくだはい。
254 :
デフォルトの名無しさん :05/02/14 01:24:25
>>253 C言語の実行環境を手に入れてくだはい。
>>238 すまん。仕様は知らん。
が、とりあえずオーバーフロー検出したいならstrtoul()とか使っとけ。
256 :
デフォルトの名無しさん :05/02/14 02:47:01
Mac miniを買え! たった5万8000円だし、小さいし、ふつうにccってやればCのコンパイルできるぞ。
高すぎ。3万で十分。
玄箱なら1万程度だ。玄箱にdebian入れてgccでいいだろ。
>>256 miniいいよなあ。
冷静に考えれば必要性薄いわけだが、激しく物欲をそそる。
ちなみに職場の上司はMACをコーディング環境に使ってる。
俺はWindowsマシンを使ってる。
実行環境はLinuxなわけだがw
260 :
デフォルトの名無しさん :05/02/14 09:27:03
3万であの性能だせるPCは組めない。
261 :
デフォルトの名無しさん :05/02/14 09:38:41
よく分からんです。 ;ASCII文字列を入力して以下のデータプロトコルに従って10進小数点数に変換する ;Cのプログラムを書け 1バイトめ: 小数点の前のの桁数 (非パック化BCD) 2バイトめ: 小数点の後の桁数 (非パック化BCD) 3バイトめ: 最上位数 (非パック化BCD) 4バイトめ: 最下位数の次の桁等 (非パック化BCD) 9バイトめ: 最上位数10進数 (非パック化BCD) N+1バイトめ: 最下位数の次の10進数等 (非パック化BCD)
Ninth byte は Nth byte の間違いじゃない?
↓このサイト逝ってみなよ
http://www.cute-girl.net/cream/ ページの中ほどにあるEnterをクリックすると、
今警視庁のHPでも警告されている「いきなり請求サイト」に逝くよ
↓へ42000円振り込めって、でも警視庁のHPで絶対に支払うな!って
書いてあるからこのまま遊んじゃっていいんじゃない?
銀行名 東京三菱 銀行
支店名 渋谷 支店
口座種別 普通口座
口座番号 3563488
口座名義 タクボ シンイチ
振込金額 ¥42000
振込人名 あなたの振込ID番号 pc011376 を必ず入れてください。
バカだなーこいつら
265 :
デフォルトの名無しさん :05/02/14 13:24:36
266 :
デフォルトの名無しさん :05/02/14 18:51:49
はさみうち法のC言語でのプログラムを教えてください。
269 :
デフォルトの名無しさん :05/02/14 20:20:30
>>266 クロスポストすればきっと 268 が教えてくれるぞw
270 :
デフォルトの名無しさん :05/02/14 22:07:22
C覚えたてって感じの初心者なんですが、Cでメーラー作りたいと思います。 参考になる日本語のHP教えてもらえませんか? 一応調べたんですが、手がかりになるような所ににヒットしません。
やめとけ
あるいみすごいなw
276 :
デフォルトの名無しさん :05/02/14 22:17:31
>>270 間違ってもプロバイダのメールサーバでテストするなよ
損害賠償払う気があるなら何も言わないが
>>270 自分でいろいろ探せる能力がないと、これから解からないことがたくさん出てきて手に負えないよ。
まずは検索力を上げることから始めてね。
281 :
デフォルトの名無しさん :05/02/15 00:18:47
age
検索力というよりももっと一般的な情報収集力と言った方が良いのかな。 情報はWEBだけではないし、WEBでも検索エンジンを使う以外の探しかたもあるからね。
この場合、まずは一般常識から身につけるべきだと思われ
284 :
デフォルトの名無しさん :05/02/15 01:04:19
まずはprintfから。
286 :
デフォルトの名無しさん :05/02/15 01:58:45
質問させて下さい。 あるデータファイルをバラバラにして、部分的にintにして、ある部分はcharのまま、 構造体に入れて返す関数を考えてるんです。 ですが…charを可変長にしようとmallocで確保して構造体に入れたはいいですが、 returnする前にfreeで開放しちゃうとせっかく構造体に入れてても無意味になって しまいそうに思ってます。 どうすればいいでしょうか。私のような素人にもわかる説明を希望します。 よろしくおねがいします。
>>286 どうして返す前にfreeしちゃうわけ?
その構造体の中身が必要なくなった時にfreeするべきでしょ?
returnの前にfreeするのが間違い。
>287 いーじゃねーかよぉ〜自由()になりたいんだよぉ〜
289 :
288 :05/02/15 02:30:07
returnで構造体を返そうと思ってたんですが。 returnの後にその関数の中でfreeしていいんでしょうか?
290 :
286 :05/02/15 02:31:03
失礼しました。 ↑は288じゃなくて286です。
291 :
286 :05/02/15 02:33:31
こうなると、あらかじめ大き目のcharとか入れた構造体をポインタにして引数にして渡した方がいいのでしょうか。。。 いや、これじゃだめじゃん。うーん
>>289 「その関数」というのが、構造体が返される関数ということである、と判断した上で、
はい。
>289 心意気は買うが、やめとけ。
構造体を返す関数、じゃなくて、構造体が返される関数…でいいんですか?
>>291 入出力引数にすればいいでしょ。
typedef struct {
int* a;
char* b;
} ayaya;
hoge(ayaya* foo) {
*foo.a = (int*)malloc(...;
...;
}
void func(struct X *x){}
(*foo).a
いっそのこと、構造体もmallocしてしまえ
>>298 俺は昔からayaya,hoyoyo,hoge,fooなんだよ。
ありがとうございました。 なんとか295さん(改)の方法でやってみたいと思います。
あーあ構造体ごとmallocしたほうがすっきりするのに
プッ そりゃお前だけだろうよ
strdup(string.h参照)やintdup(自前で定義)を使ったら見た目判り易くなるんでは?
ayaya *make_ayaya() { ayaya *aya = malloc(sizeof ayaya); if (!aya) return NULL; aya.age = 19; aya.uta = strdup("love! namida-iro"); if (!aya.uta) { free(aya); return NULL; } return aya; }
309 :
デフォルトの名無しさん :05/02/15 07:30:09
> returnする前にfreeで開放しちゃうと 「開放」するなよ ぼけ
310 :
デフォルトの名無しさん :05/02/15 08:18:59
関数内でmallocしたら関数外ではどうやっても見えなくなると誤解しているようだ。 それでメモリリークを防ぐためにreturnする前にfreeで開放しちゃわないと、となるのだろう。
312 :
310 :05/02/15 08:30:28
>>311 >お前はアホか
では
>>286 が「returnする前にfreeで開放しちゃうと」という奇妙な考えに至った過程は如何なるものかね?
313 :
デフォルトの名無しさん :05/02/15 08:38:26
> 286が「returnする前にfreeで開放しちゃうと」という奇妙 「開放」するなよ ぼけ。
314 :
デフォルトの名無しさん :05/02/15 08:39:10
> メモリリークを防ぐためにreturnする前にfreeで開放しちゃわないと 「開放」するなよ ぼけ。
315 :
310 :05/02/15 08:44:05
解放、開放、会報、回報、介抱、快報、快方、懐抱、かいほう、カイホウ、カイホウ、どれでも好きなのを選べ。
316 :
デフォルトの名無しさん :05/02/15 08:48:59
ツッコミどころを間違えた揚げ足取りか…哀れ
317 :
デフォルトの名無しさん :05/02/15 08:49:58
へんな考えに至ったのは実は簡単なこと。 まずmallocの戻り値のNULL検査をしていないこと。 それをすれば、しぜんにどこでfreeすべきか実感がわく
318 :
デフォルトの名無しさん :05/02/15 08:56:11
> ツッコミどころを間違えた揚げ足取りか…哀れ とか言えば自分の間抜けさかげんをごまかせると思っているぼけ
319 :
デフォルトの名無しさん :05/02/15 09:00:51
>318 >とか言えば自分の間抜けさかげんをごまかせると思っているぼけ はいはい、執拗なぼけ
わざわざ括弧をつけて指摘してくれてるのに 一人だけ顔真っ赤にして必死に反論してる方が ボケに見えるのだが
322 :
あげ :05/02/15 10:16:16
>>320 はんろん【反論】
相手の意見・議論に対して、反対意見を述べること。
323 :
真性 :05/02/15 12:23:54
>>321 >変換間違いの原文引用で、変換間違いの部分の指摘を認めてもらおうと執拗に繰り返し繰り返し「ぼけ」を連発する輩に言っている。
変換間違いは本質ではない。
ま、C言語と無関係な煽りに乗せられた真性(わて)の負けでいいや。
324 :
デフォルトの名無しさん :05/02/15 13:38:25
Cを使ってRS232Cの制御を行おうと考えています。 環境はRedHat or Fedoraです。 基本的にはwrite関数とread関数を使えば良いと思うんですが、 接続先装置に送信するコマンドに戻り値がある場合、 それは単純にread関数で読んでやれば良いんでしょうか。 それとも、接続先装置から何かが送られてくるメッセージを、 whileで待って受け取るような関数があるんでしょうか。 Winのハイパーターミナルを使うと、 戻り値があるコマンドに対しては戻り値が画面に表示されます。 これと似たようなものを再現したいのですが。 制御関連の質問はスレ違いであれば、 誘導お願いします。
>>324 それ以前に、RC232Cの勉強からした方が良いよ。
ついでにスレ違い。
「本質」とか言ってるところがまたボケだな
>>324 > 制御関連の質問はスレ違いであれば、
そう予想してるんなら、「制御」でスレタイ検索ぐらいしろ。
あと、「linux rs232c 制御」でググった結果を100字以内にまとめろ。
328 :
デフォルトの名無しさん :05/02/15 14:29:00
Cで、内部決めうちユーザー&パスワードで、ftpする プログラムを作りたい。 参考になるプログラムが 見つからず、四苦八苦、七転八倒してます。 参考になるWEBとか知ってる人、教えてください。 ftp部分は、OS標準で付いてるやつを直接呼び出す イメージです。(OS:solaris8、コンパイラ:上記osにつ いてたgcc)
UNIX板の方がいいと思うが、 ptyp? と対応する ttyp? を開いて fork して、 子供は tty の方を stdin/out/err にくっつけて ftp を exec して、 親は pty でごそごそする感じかのう。 参考にするなら expect のソースとか。
>>328 ftpコマンドのマクロだけでできる気がするのだが…
参考にするも何も、マクロでできることをわざわざやる香具師いねぇべさ。
ftpのマクロって、条件分岐とか書けるのか?
333 :
デフォルトの名無しさん :05/02/15 18:16:44
>>330 >>332 いわゆるバッチ(シェルスクリプト)ですと、FTP時のユー
ザID、パスワードが、そのまま「見える」形なので、業務用
件的に ×です。
(コンパイルした実行ファイルの中をエディタで見ると、
文字列として見えしまってるんですけどね。。。)
>>329 今のところ、
ret=system("ftp -i -n hostname << END \n user hoge hogepass ・・・ END");
を考えています。 しかし、これで FTP先を不正な名前にした場合でも
ret=0(正常終了)の値が帰ってきました。 ご指摘のように
>子供は tty の方を stdin/out/err にくっつけて ftp を exec して、
>親は pty でごそごそする感じかのう。
を参考にして、エラーハンドリングがうまくできれば、こっちを使って
みたいと思います。
皆さんのすばやい対応、本当に感謝します。
>>328 標準 C の話じゃ済まないから。
取り敢えず簡単にやりたいなら
"ftp -n ホスト名" を system() か popen() で実行汁。
ユーザ名/パスワード/コマンドは標準入力か
ファイルから喰わせる。
(ちゃんとやるなら自分でパイプ2本作ってfork())
…リロード シテナカッタ orz カッコワル…
337 :
デフォルトの名無しさん :05/02/15 19:50:45
LINUXで動作するアドレス帳プログラムを作りたいのですが全く手も足も出なくて困っています。 条件は編集、検索、ソート、ファイル入出力、氏名、電話番号、住所、郵便番号の機能をもつプログラムです。 行数は200行以上で、リンク形式をとらないプログラムです。 どなたかお願いします。
>>337 宿題なら宿題スレへ。
ネタならネタスレへ。
>>334 >コンパイルした実行ファイルの中をエディタで見ると
ふつーstrings
うまくいきました。ありがとうございました。
340 :
デフォルトの名無しさん :05/02/15 21:03:11
>>322 不十分な説明だな
それでは反発との区別ができない
少なくともどこが「論」なのかが聞く側にわかることが最低条件
結論 return前にfreeしてもその領域が汚されない限り問題なく読み取れる。 ただしビビリにはオススメできない。
C++を使うことにしてコンストラクタ・デストラクタを書けばいいのに。
>>341 プログラマはみんなビビリさ。
バグが一つあるだけでもビクビクしてる。
345 :
デフォルトの名無しさん :05/02/15 21:45:45
>その領域が汚されない限り問題なく読み取れる。 何が言いたいのかわからん
(゚Д゚)ハァ?
>>341 C言語の仕様ではfreeしたら読み取れる保障は無いだろ
結果的に読み取れる事が多いだけで、まともな人は別の方法を考えるべきだと思うがな
348 :
デフォルトの名無しさん :05/02/15 22:05:42
マルチタスク環境でなければfree直後の領域にアクセスしても問題なし
>>348 問題無しという保証はどこに書かれていますか?
「開放」したらゴミの値で埋めるfreeに差し替えとけ
352 :
デフォルトの名無しさん :05/02/15 22:20:33
>>348 メモリスワップが起きる環境じゃ駄目だろ
>>351 つまり、こう書くだけで保障されなくなるわけだな
マルチタスク環境であってもfree直後の領域にアクセスして問題ない、という保証は無い
358 :
デフォルトの名無しさん :05/02/15 22:26:52
360 :
デフォルトの名無しさん :05/02/15 22:29:14
363 :
デフォルトの名無しさん :05/02/15 22:46:10
意図しない書き換えが起きていなければ大丈夫ってのは free とは何の関係もないぜ
364 :
デフォルトの名無しさん :05/02/15 22:53:36
ワロス
>>359 あなたはOS書くときに標準Cのmalloc(), free()を使うんですねwwww
>>366 あなたはOSレベルでfree()を実装するんですか?
malloc/freeってOSのメモリ管理機構使ってないの? 知らなかった。
>>368 プロセスの中でどうメモリ管理しようがOSは知らんよ。
371 :
デフォルトの名無しさん :05/02/15 23:20:41
>>370 malloc/free がプロセスローカルって法はどこにもねえぜ
というか、malloc/free自体環境依存だからスレ違いな訳だが。 #事実malloc/freeが無い環境でも作ってるよ・・・
>>373 mallocとfree自体は規格にあるが?
無い環境が規格外
375 :
デフォルトの名無しさん :05/02/16 00:44:34
うちのmallocは、最初の呼び出しで、そこそこまとまった量をシステムコールでOSからもらい、 小さくmallocしても、その塊を使いつくすまではそれで管理する(足りなくなったらまたシステムコールで)。 で、その塊の中のが全部freeされたら、OSに返してる。
C99にあるからスレ適合
>>373 いや、すまんC99にもちゃんとあるな・・・
自分の作ってた環境のほうが狂ってたわけだ(つд`)
うちのmalloc "is a" malloc()仕様を満たした実装
>>375 全部freeされてもOSに返さないような実装も結構ある。
てゆうか、K&Rに載ってた実装もそうじゃなかったっけ?
380 :
デフォルトの名無しさん :05/02/16 01:10:41
>malloc/free自体環境依存 氏ねw >無い環境が規格外 おまえは既知外
381 :
デフォルトの名無しさん :05/02/16 01:26:10
K&Rのは返してます。
煽
383 :
デフォルトの名無しさん :05/02/16 01:48:20
malloc(200);
385 :
デフォルトの名無しさん :05/02/16 03:42:16
カンマの入った文字列を(1,000,000とか)を 数値に変換する関数教えて
知ってるが お前の態度が 気に入らない
>>385 int owari = 0;
long suuti = 0;
const char *mojiretu = "1,000,000";
while (!owari) {
switch (*mojiretu) {
case ',':
break;
case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
case '8': case '9':
suuti *= 10;
suuti += *mojiretu - '0';
if (suuti < 0) {
errx(-1, "too large number");
}
break;
default:
owari = 1;
break;
}
mojiretu++;
}
printf("Get %ld\n", suuti);
>>388 最初の1byteをチェックすりゃよい
といっても
>>385 が厳密な仕様を提示していない以上
何突っ込んでも意味無いわけだが
>>389 数値なんだからマイナスがあるくらいは当たり前だろう
391 :
デフォルトの名無しさん :05/02/16 05:11:26
s/,//g;
初歩的な質問で申し訳ないんですが。 参考書のサンプルプログラムでは main() { ・・・ } とか int main() { ・・・ return 0; } と書かれています。 前者もreturn型はintと思うのですが なぜintで0を返しているのでしょうか? voidにしてreturn;でもいいと思うのですが、 int型にするのが一般的なんでしょうか?
>>392 仕様です。
C FAQくらい読んでください。お願いします。
>>385 カンマの入っていない文字列に変換して(1000000とか)を
数値に変換する関数atoi、atofに渡す。
他にはロケールの設定で関数atoi、atofやsscanfの挙動を変えることが出来るかもしれない。
>>392 mainはOSの中の人から間接的に呼び出されます。
その中の人はmainが整数を返してくれると信じているので、
ちゃんと整数を返してあげるのが仁義というものです。
>>395 >その中の人はmainが整数を返してくれると信じているので、
>ちゃんと整数を返してあげるのが仁義というものです。
Java は void ですが、これは仁義が無いからなのでしょうか?
>>396 >Java は void ですが、これは仁義が無いからなのでしょうか?
(´・ω・`)知らんがな。
Javaの仕様やがな。
VCの実行速度について聞きたいんだけど、ここでOK?
連続ですまん、聞きたかったことは、 「一つのファイルのソースの行数が増えると実行速度が低下する」 というようなことを聞いた気がしたのだが本当? 2000だか3000だかそれぐらいだったような・・・
NG
まあ普通は行数が増えれば処理も増えるから、結果的には行数が多い方が遅かったりするけどな
>>402 ド素人か?
おまえはループとか書かずに、全部 ; だけで文を列挙してるんだろ。
>>402 main() {
goto A;
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
A:
}
VCの実行速度ってなんだよ? コンパイル速度のことか?
書き方が悪かったな 行数が多い方が、行数が少ない場合より処理の数が多い可能性が高いから 結果的には行数が多い方が遅いことがよくある ってことda
そんな可能性高くないっつうの
>>406 だとしたら、世のプログラムは例外だらけだな。
なんどもすまん VC6.0でビルドしたプログラムの実行速度のことです。 連立方程式を解くプログラムでただ実行すると1秒ぐらいなんだが、 そのプログラムを他のプログラムに組み込んで、 全く同じ問題(連立方程式)を解く部分の時間を計ると 5,6秒かかるんだわ。 メモリは十分あるんでページングは発生してないし・・・ 、何でかなとおもってさ。
情報小出しかよ
>>409 別スレッドで重たい処理動かしてるとか?
>>409 それって・・・どれだけ大きな連立方程式解いてるんだ・・・
変数数万個あったり?
測り方が間違っていたりとか
>>409 ゴチャゴチャ書き込んでるヒマがあるなら
とっととプロファイル取って
いい加減適切なスレに移動しろよ。
416 :
デフォルトの名無しさん :05/02/16 18:13:59
ファイルを読み込んで部分的に書き換えたり追加したりするにはどうしたらいいんですか? ファイルを読み込んで中身を置換するプログラムを考えてるのですが、fopenでw+を指定すると、ファイルが消えてしまいます
418 :
デフォルトの名無しさん :05/02/16 18:45:30
>>417 r+でも書き換えられないとです
if ((fp = fopen("smpl.txt", "r+")) == NULL) {
printf("file open error!!\n");
exit(1);/* (3)エラーの場合は通常、異常終了する */
}
fseek(fp, 0L, SEEK_SET);
fputs("wfdxf", fp);
として先頭から書き換えようとしてもかきかわってないです
419 :
デフォルトの名無しさん :05/02/16 19:12:06
fflush、fcloseを使うかfputsの戻り値を調べてみたらどうでしょう
>>393 >>395 レスありがとうございます。
そうするべき事柄のようですね。
もっと精進します。
421 :
デフォルトの名無しさん :05/02/16 20:17:25
>>419 ありがとんございます!
やってみますです
>>395 環境依存の話でスマンが、俺の知りうる限り
関数の返り値って実態は関数から戻った際の特定のレジスタの値
ってことはそれがmain関数でも同じであるなら
関数の型がvoidだったところで返り値は不定ながら存在する筈
なので拘る必要はないかと
>>422 呼び出し規約持ち出してまで拘る理由が知りたい。
>>422 OSによっては、戻り値が0でないと余計な警告を出してくれる。
te
はげしく遅レスすまん。 アライメントされたmallocしたいというねた。 Linuxというかglibcでは posix_memalignで望みどうり128bit境界にあわせられそうです。 使う予定ないけど、Win32は_aligned_mallocということですな。 doubleは64bitっすけど、 128bit境界に合わせたいのは、XMMレジスタに アライメント合ってる時用のload命令使いたいからっす。 ただ、FreeBSDでもうごかしたいんだけど、 こっちにはpsiox_memalignはなさげなので、 POSIXといいつつメジャーなバージョンのPOSIX規格ではなさげ。 とりあえずglibcのソース見てみます。
FreeBSDだとページサイズ以上のmallocしたら、 ページ境界にalignされるって書いてるけどな。 ローカル規格だろうけど。
>>427 手元のFreeBSD4.9でgetpagesize()すると4096byteとか返ってくるので、
ちょっと大きすぎます...(^^;
んで、ちょっとglibc 2.3のソース見たら、
自分で最初に書いたコードとあんまかわんなくて、
malloc/malloc.cで、
(((unsigned long)(m)) % alignment) != 0)
とかやってて、
sizeof(viod*) <= sizeof(unsigned long)
を仮定してるようで、なんだかなぁってかんじです。
64bit CPU になっても、
LP64 とか ILP64 以外の実装あんまなさそうなので、
だいたい問題なさそうですが、やっぱかっこわるいきがする。
>>427 ああ、アライメントとりたいサイズじゃなくって、
mallocしたいサイズですね。勘違いすまそ。
これはこれでいけそうです。
430 :
デフォルトの名無しさん :05/02/17 00:11:47
はさみうち法のプログラムを初心者でもわかるように教えて下さい。
google先生はなんとおっしゃいましたか?
>>431 Results 1 - 10 of about 338 for はさみうち法. (0.15 seconds)
433 :
デフォルトの名無しさん :05/02/17 01:01:51
簡単なパターンマッチング関数はありませんか。 昔LatticeCについてたようなやつ。名前は忘却 command.com よりは高機能でcsh ほどは無用 compしてから使うのは勝手が悪い
command.comより高機能って、単純一致以上ならOKなの? strstr? ワイルドカード扱えるような標準のは知らない。
435 :
デフォルトの名無しさん :05/02/17 01:44:45
lattice のはよく覚えてないしアセンブラで書いてあったような気が。 名前を思い出せばどこかにCで書いた椰子がいそうなのじゃが。 実際使うのは \s* \s+ くらいかな。
もうちょっと具体的に仕様いってみ
stcpmパターン文字列のマッチング2-228LATTICE #include <string.h> int size = stcpm(char *string, char *pattern, char **match); stcpma先頭文字列のパターンマッチング2-228LATTICE #include <string.h> int size = stcpma(char *string, char *pattern);
それくらいなら手書きしてもいいんちゃう? 要するに、パターンが綺麗に消費されるかどうかってことでしょ。
stcpmググってみたけど、?=., +=+, *=* で、[]と()のない正規表現じゃないか。
load_files() { char *ls[200]; int count; ls[] = system("ls -1 "); for(count = 0; count == NULL; count++){ printf("%s", ls[count]); } } と言うものを作ってみたのですがうまくいきません エラーは x.c: In function `load_aafiles': x.c:98: error: parse error before ']' token x.c:99: warning: comparison between pointer and integer です まだ、プログラミングがよくわからないのですが 文字列を複数渡す場合はどのようにすればいいのでしょうか?
442 :
デフォルトの名無しさん :05/02/17 03:43:26
3次元配列A[5][10][10]をアドレス渡しで関数に渡したいんだが 関数のプロトタイプと引数として渡すときの書き方がわからん。 たすけてぴ
>>442 先頭のアドレス渡すだけでいいよ
必要なら個々の要素数
すいませんありがとうございます FILE *f; f = popen("ls -1 ", "r"); printf("%s", f); pclose(f); とやってみましたがうまくいかないです サンプルを書いていただけないでしょうか?
446 :
デフォルトの名無しさん :05/02/17 07:45:28
>>444 www.aihara.co.jp/~junt/program/Fpopen.html
447 :
446 :05/02/17 07:55:01
間違いました。 www.aihara.co.jp/~junt/program/popen.html
448 :
デフォルトの名無しさん :05/02/17 08:24:09
regexつかえ
教えてください。 C言語でmsecのウエイトってどうやってやればいいんですか?
usleep
>>449 標準Cではできないので該当スレへどうぞ。
ぬるぽ
#include <stdio.h> #define MAXLINE 1024 int main() { char s[MAXLINE]; FILE *fpin, *fpout; fpin = popen("ls", "r"); fpout = popen("sort -r", "w"); while(fgets(s, MAXLINE, fpin) != NULL){ fputs(s, fpout); } pclose(fpin); pclose(fpout); return 0; } これの意味がわかりません また、fgetsでfpinからs[]にいれてるんですよね? この時 MAXLINEは何の最大桁数なのでしょうか? 10にしたりしてためしたのですが 10行以上出力されるし 1行に10桁以上表示されます fputsは fpinの値をfpoutに渡していると言うことですよね? ようするに ls | sort -r 見たいにしてるって事ですよね? すいませんが、 上のwhileの当たりを解説していただけないでしょうか? すいませんがおねがいします
めるぽ
>>453 fgets()のマニュアル読め。
fgets()は改行文字か指定されたサイズを満たすまでのどちらかまで読み込む。
改行文字で終わらなかった場合は次のfgets()で行の残りを読み込む。
従って、MAXLINEを小さくしても(そのコードの場合は)情報は失われない。
456 :
デフォルトの名無しさん :05/02/17 14:01:45
今、不思議なバグにあったんだけど、 //\ if() って感じの文章を書くと、if文はコメントとして見られるのが仕様? それとも、これは環境依存?(bccでは、 コメント内に\があるって警告出たのはどういう意味かと思ったけど、こういうのがあるのね…
>>457 文章じゃなくてソースでした
bccではコメントとしてみなして、問題なければコンパイルは通り
警告 W8010 2ch.cpp 15: 継続記号 \ が // コメント内に見つかった(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
って感じの警告が出る
>>457 ・\
物理行を結合し一つの論理行を生成する。
この処理はプリプロセッサにて行われる。
[結論]
仕様です。
規格ではこういう順に処理することになっている。 1. トライグラフなどを置き換え。 2. バックスラッシュの直後に改行文字がある場合、その2字は削除され2行が連結される。 3. コメントの削除 4. #defineや#includeなどのプリプロセス。 (以降省略)
461 :
デフォルトの名無しさん :05/02/17 22:43:04
>>457 今、不思議な注釈に見えたんだけど、//以降がコメントとなるのはC99以降の仕様?
それとも、これは環境依存?
>>461 //でのコメントはC99で加えられたがBCC自体はC99非対応なので、
BCCでの位置付けとしては独自拡張ということになる。
>>462 BCCでは拡張子cでも(もちろん-Pはなしでも)//形式のコメントは使えるようになっている。
>>460 2. バックスラッシュの直後に改行文字がある場合、その2字は削除され2行が連結される。
が原因ですね。良くわかりました、ありがとうございます。
他にレスくれたかたもありがとうございます。
>>462 .cだとコンパイル時に.cまでファイル名指定するのが面倒なので、cppファイルでコンパイルするようにしてます(互換性のある範囲で使う場合)
//コメントに関しては既にレスがありますね
#include<stdio.h>
int main(void){
//\
if(1){
puts("");
}
return 0;
}
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
2ch.c:
警告 W8010 2ch.c 4: 継続記号 \ が // コメント内に見つかった(関数 main )
警告 W8070 2ch.c 7: 関数は値を返すべき(関数 main )
エラー E2040 2ch.c 8: 宣言が正しく終了していない
エラー E2190 2ch.c 9: 不要な }
*** 2 errors in Compile ***
466 :
デフォルトの名無しさん :05/02/18 00:16:41
複数行マクロ書いたことないわけ? あったとして何を考えて書いてたの?
>>466 複数行のマクロ内でコメントを書いた事は無い
警告を抑制していて色分けの無いエディタを使っていたら //\ if(0) puts(""); は一見、字下げがされている分だけ見付けにくいバグになりそう。 ただのうっかりミスだけど。
すいません。質問なんですが int A (int h){ /*処理部*/ return r; } のサブルーチンは、引数を二つ返すのでしょうか? hとr。(^_^;)
Aに代入されてる値っぽいなぁ(^_^;) hは
471 :
デフォルトの名無しさん :05/02/18 03:21:37
否。rのみ。hは呼び出し前後で変化無し、と思う。
まず日本語を勉強してください
AL-Mail32 (www.almail.com) というWindows用メーラがあり、 その公開仕様(Cのコールバック関数群)に沿ってpluginを開発してます。 既に多数のpluginが公開されていて、自分でも作ってみましたがちょっと 問題があります。 こういう場合ってここで質問してもおKですか? 最適な板があれば教えて下さい。
問題の内容による。
ちょっと書いてみます。
コンテキストメニューの「全メールの振り分け」を無効化したいのです。
仕様は
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/9970/inside/mkplug32.html この APCFolderInitMenu() をオーバーライドして
if (type == APMENU_FOLDER_CONTEXT) {
::EnableMenuItem(hMenu, 32825, MF_BYCOMMAND | MF_GRAYED);
}
を追記しました。.dll(plugin)自体は正しくロードされるのですがグレーアウトせず。
EnableMenuItem() の戻り値も成功。
MF_BYPOSITION でメニュー項目を指定しても変わりませんでした。
何が考えられるでしょうか?
>>479 いやあの・・・
そのスレを伺ってるんですよ(´・ω・`)
>>476 Windows用ソフトの話なのに、
何故最初にWindows関連のスレに行かないのか?
使っている環境と起こっている現象から、
適切なスレを選ぶ事も出来ないようならやめた方が良いよ。
484 :
デフォルトの名無しさん :05/02/18 14:20:05
memsetについてですが クリアする配列名に&を付けてる人と付けていない人が居ます。 どっちが正しいの?
SDKの元々は確かにWindowsソフトですけど・・・ VCのスレって意味?
どっちでもいいんでない? どっちみち同じアドレスだし。 個人的には配列をmemsetでクリアするのを止めろと言いたいが。
>>485 ここはCスレ。あんたはC++でWindowsで動くアプリ(プラグインか)を書いている。
2重にスレ違いだってば。
488 :
デフォルトの名無しさん :05/02/18 14:25:59
>>488 スレ違い。書籍スレに行け。
つーか、続けることを主眼において、自分が読みやすいと思った本がいいよ。
>>478 ありがとう。スレ汚しスマン。
VCスレへ移ります。
P.S.
最後に言わせてもらうと、C++じゃなくてCです
だからまずココでいいか聞いただけなんです・・・
つか、
>>1 に
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
と書いてあるのに。
492 :
488 :05/02/18 14:42:01
>>489 書籍スレなんてあるんですか? 知りませんでした。
本当にすみません。
アドバイスありがとうございます。本屋に行って実際見て来たいと
思います。
>>490 おいおい、Cにいつから::なんて追加されたんだ? 自分が何書いてるかさえ理解してないのか?
>>493 自分が知っていることが全てだと勘違いしている恥ずかしい人発見
取り敢えず、C で関数名の前に :: を置くとどうなるのか >494 に解説してもらおう。 (>478 では「オーバーライド」とも言ってるんだが)
気になって実験してみた。(bcc) #include<stdio.h> int main(void){ ::printf("aaaaaaaaa"); return 0; } aaaaaaaaa Cでコンパイルしたら通っちゃったんですけど…… まぁ、オーバーライドって時点でC++なんだろうけど
501 :
デフォルトの名無しさん :05/02/18 17:26:20
>>501 2byteの型はshort
charは1byte
503 :
デフォルトの名無しさん :05/02/18 17:48:12
>>502 shortを使えってことでしょうか?わざわざこんな回りくどい言い方をするのかと思いますが
short変数を
unsigned int型で表・・・(意味不明)
>>503 intが2バイトな環境でプログラム作れってことでしょ。
>>501 上位8bitが8〜15bitなら、この場合intは16bitだろ。
つまりは、
unsigned int eucsj(unsigned int);
unsigned int sjeuc(unsigned int);
自作自演乙
(・∀・)ヘイヘーイ!! (・∀・)イイヨイイヨ-
509 :
デフォルトの名無しさん :05/02/18 18:27:03
そもそもEUCとJISとShift-JISは1文字を2バイトで表すというキマリがありますか?
511 :
デフォルトの名無しさん :05/02/18 20:56:23
unsigned int eucsj(unsigned int euc){ euc=euc & 0xff; /* とでもしとけばいいんでない? */ }
0xffffだろ?
>>512 >BE:23404649-#
これ何?
517 :
デフォルトの名無しさん :05/02/19 01:36:04
処理の部分はどうなるんでしょうか include <stdio.h> int main() { FILE *fp cで任意のファイルから1文字読み込み unsigned int sjeuc(c); return 0; } unsigned int sjeuc(unsigned int x) { 処理 return (x); }
ふざけてるの?
519 :
デフォルトの名無しさん :05/02/19 02:15:22
なんだと cで任意のファイルから1文字読み込み unsigned int sjeuc(c);
522 :
デフォルトの名無しさん :05/02/19 08:25:04
つーか、最低限やってみてから聞けよ
ワロタ
>>517 >unsigned int sjeuc(unsigned int x)
その「x」はワイド文字なのか?
Cって関数内で関数宣言出来たっけ
宣言はできる 定義はできない
うーんと出題者はおそらくsizeof(int)==sizeof(short)な環境で 問題作ってから更新してないんじゃないかと。
528 :
デフォルトの名無しさん :05/02/19 14:25:27
うちもその環境だよ! どっちも4になる > sizeof(int) == sizeof(short)
>528 やー、どっちも16bitってなら分かるんだけど。
530 :
デフォルトの名無しさん :05/02/19 14:54:44
sizeof(int) == sizeof(char) とかね 「で、開発言語は C なんだけどさ・・・」と聞いていて 回ってきたのは C ライクだったなんて珍しくも何ともない
分かりにくくてすまなかったが、実は>529では sizeof(short)が4ってところがツッコミどころだったんだよー。
532 :
デフォルトの名無しさん :05/02/19 15:02:16
あげます。
>529っす。調べてみたら>531で書いたのはこっちの間違いだった。 スマソ。
534 :
デフォルトの名無しさん :05/02/19 15:16:56
こういう状況は解決できるのでしょうか? aa.hとbb.hとcc.hがあって, aa.hがbb.h,cc.hをインクルード.bb.h,cc.hはそれぞれaa.hをインクルードしたい. と言う状況なのですが,普通に書くとincludeが循環してしまってエラーになります. #ifndef...#include...#endifをすると,bb.hがaa.hをインクルードできても,cc.h がaa.hをインクルードすると,aa.hの中の変数やら関数やらが再定義されたとして コンパイルが通りません. 解決策はあるのでしょうか?
>>534 ヘッダファイルには定義しないで宣言だけ書いてね。
>>534 一度しかインクルードしてないのになぜaa.hの中の変数が再定義されるんだ?
537 :
デフォルトの名無しさん :05/02/19 15:31:17
>>534 ちゃんと全体をインクルードガードしてるか?
#ifndef - #endif の外に何か書いてあるってのは新米にありがちなポカだが・・・
そんなこと悩む前に設計変えろぼけ
aa.hだけインクルードガードかけて、あと二つは放置されてる余寒。
ヘッダファイルをコピーしてほかのヘッダファイルを作ったのはいいが、 インクルードガードで使うdefineを変更しないで失敗… 実はエラーの内容が再定義ではなくて未定義だったりして。 ちと厳しいな…大穴か。
541 :
534 :05/02/19 15:45:38
回答ありがとうございます. 回答の内容をもう一度検討して考えてみます...
どこかにstaticって書いてあるんだろう
543 :
デフォルトの名無しさん :05/02/19 21:37:15
> やー、どっちも16bitってなら分かるんだけど。 は? かえってくるのは4だよ。
分裂症?
yahooオークションで宿題やってあげたら1000円っていう取引無いかな
547 :
デフォルトの名無しさん :05/02/20 00:18:50
>>543 sizeof(short)が4な環境ってどんなのがあるの?
>>546 まともな大学の宿題だと専攻受けてないとわからんのが多いんで、
見ず知らずの相手に1000円なんかじゃ請け負いたくないな…
1000円安すぎ
10分ぐらいでできる宿題なら請け負ってもいいが…
つーか、宿題自分で出来ない程度ならマジで留年したほうがその人のためになる
卒業してプログラミングと全然関係無い職に就くような大学の学生にそんなこと言っても無駄かと 文系とか
>>551 そんなことはない
宿題できない程度なら最短距離で卒業証書もらうのが
もっともその人のためになる
すいません。ポインタの学習になる、課題ってなんかありませんかね?
>>554 よし、俺が与えてやろう。
まずは、俺の下半身に付いているこのポインタをしゃぶるんだ!
>>553 留年させるか中退させたほうがマシなんじゃね?
リスト構造と、2分木、ファイル暗号化のソースは持ってます。(^_^;)
>
>>555 じゃぁ、モザイクを除去するプログラムからつからないといけませんね(^_^;)
×つからないと ○つくらないと
>>557 ほぅオマエは大学時代全ての単位を取って卒業したんだな(そんな暇で真面目な奴、まさに100人に1人いるかどうかのエリートだな藁)
東大の奴ですら苦手な授業は友達の宿題移してなんとかやりきるのが普通なのによ
オマエは全て自分の力で卒業したと?
あ、もしかして高卒だった?( ´_ゝ`)プゲラ
562 :
デフォルトの名無しさん :05/02/20 00:51:57
煽り君age
564 :
デフォルトの名無しさん :05/02/20 00:54:38
>>554 double strtod(char*, char**) みたいなのを作ってみるのはどうでしょう
便利って思うのはオレだけか
なんか一生懸命な人が出てきましたねw
FAQの4.2が為になる
>>564 あ。ちょっと参考にさせて頂きます。
ありがとうございます
>>553 >宿題できない程度なら最短距離で卒業証書もらうのが
>もっともその人のためになる
それはその人にとって"ためになる"んじゃなくて"都合がいい"だけでは?
>>567 関数にポインタを渡してアドレスを受け取るってことで
そのアドレスを同じポインタに返すので
char buf[] = "12 + 3";
char *p = buf
double d;
d = strtod(p, &p);
こうするとポインタが進みますので
便利じゃないかなぁと思っただけです
> そのアドレスを同じポインタに返すので じゃなくて そのアドレスを同じポインタで受け取るようにすると
>>566 4.2ってmallocのヤツで合ってる?
>>553 レポート写させてもらえる知り合いもいない状況を何とかした方がいいのでは?
>>575 つまり大学は社会に出る前に人生経験を学ぶ場所でもあるってこと?
いかにして世の中をうまく乗り切っていくか、時には卑怯と思えることも必要になりますからね社会では
>>561 東大生というだけで優れている訳では無し
学歴≠優秀というのは、ソニーが証明している
>>576 >時には卑怯と思えることも必要
常にせこい行動ばかりとる人も多いのですが……
最初から他人をあてにして、自分で努力しない人とか多いね……教えてもらうなら、自分が理解できるだけの能力は身に着けておいて欲しい
>>561 さすがにこれは社会人の文章ではないよな。
まあ頑張って卒業してくれ。
要約すると\1,000で卒業証書が買えるのか?
ていうか、社会人は人脈がすべて 2ちゃんねるに聞かないと宿題の答も教えてもらえない奴は 結局落ちこぼれるな
2ちゃんねら=落ちこぼれ というイメージがあるのですが。 そうでもないのですか?w
>>583 自分がそうだから皆がそうだと思うってるの?
もうちょっと現実世界で人と交流して常識を身につけたほうがいいよw
あぁその通りだな
視野の狭い奴が多いのは事実だが、実際はそうでも無いと
>>583 は視野が狭いヒッキーだから真実に気付かないんだろう
そうムキになるなよ
ムキーっ!
ムキムキ
突然ガバチョ!
30 :仕様書無しさん :04/01/07 11:40
>>24 構文解説なんてロクにしない。独学でやれといわれる。
ちょっとだけ説明するが意味不明で急いで説明するので
本読んでやったほうが速い。
まずアルゴリズムとデータ構造について学ぶが
渡されたC言語のコードが難解で誰も理解できないまま
DQNになってそれでも単位をとれてしまうという始末。
皮肉なことに、プログラミングが全くできなくても
情報工学科を卒業できてしまう香具師もいるのだ。
みんなポインタ演算で混乱する。教えている側の教官ですら
配布したソースコードを理解していない。
なんつーか、TAに書かせたスパゲティコードを配布しているみたいな。
その次の年Prologをやらされる。まあなんとか理解できた。
その次の年はC++とAdaをやらされた。ぜんぜんわからんかった。
オブジェクト指向がなんたらいうんだが聞いてもさっぱり理解できずに
頭に無理やり詰め込んだだけで単位を取れた。
あとから独学でJavaをやって初めてオブジェクト指向を理解することになったのであった・・・。
とはいえ、大学の授業でプログラミングに関するものというのは
週に一回、90〜180分だけだった。ほかは数学、電気回路、電磁気学などばかり。
http://pc5.2ch.net/test/read.cgi/prog/1072681425/30
63 :仕様書無しさん :04/12/17 02:04:11
>>62 いまからでも大学いった方が良い。
64 :仕様書無しさん :04/12/17 02:22:03
それは長い目で見て?何が何でも行ったほうがいいですか?
65 :仕様書無しさん :04/12/17 02:36:33
>>62 長い目で見るとな、学歴は高いに越した事は無いんだよ。
RPGで強い敵が出てくるダンジョンに入る前にはそれなりに装備を整えるだろ?
まともに戦えるようにしっかりレベル上げてくだろ?
そのためにはゴールドと経験値稼ぐために地道な反復作業が必要になるだろ?
それと同じなんだよ。
就職してそれなりに稼ぎたければ地味に見えるが勉強して経験値上げておけ。
高校中退のままPG目指してもなれるんだがやっぱり大卒の奴らに比べると
その先で稼げる金がまったく違ってくる。
金がないと心に余裕がなくなるし、しょうもないことでセコセコしてしまうし自分に自信がもてなくなる。
ある程度余裕のあるぐらい稼げていると、それだけで自信が持てるようにもなる
まぁ金が全てって訳でもないが、世の中金持ってるほうがエライんだし、周りもそういう基準でみるのでしょうがない。
大学は、ものごとを整理して表現することを学ぶ場所だと思え。 レポート、発表会、何らかのサークル活動、研究室に入って以 降の意思表示、人の力を借りる能力、人の言いたいことを理解 する能力、本から必要な情報を得る能力、それから実行力。 何学部でもいいが、まず、大学に入ったら、自分の思っている ことがそれほど具体的じゃないことは必ずどこかで思い知らさ れるだろう。レポートや発表、調査などを通して、自分がなにを したいか、そのために何をしなければならないのか、それから、 何かを達成するために必要なものを組み立てる力、それを学べ。 専門学校卒と大卒の大きな違いはそこだ。社会に出たら、誰 も教えてくれないので、慣れに頼るようになる。プログラマは、 自分で何をやっているか理解できない場合はただの力作業で 終わってしまう。力作業しかできないプログラマはもう必要ない 時代だからね。 人の言葉を理解し、すべきことを整理し、実行し、人に必要な ことを伝え理解してもらうこと、これが一番大事だよ、どんな 仕事にしてもね。
>>593 それ大学に行かなくても出来ることばっかりだなw
>>594 なら自分の妹相手にやってろ それで就職のとき評価されるか?
重みが違うだろ
学歴ネタは喰い付きいいな。莫迦まっしぐら。 他所でやれ。
社会に出て大分経つ私の見聞きした感じで言えば、 専門学校から落ちこぼれてくる香具師よりは大卒で必死な香具師の方がましだ。 同じ年齢なら、高卒でも実社会経験の豊富な香具師の方が大抵もう少しましだ。 いずれにしても、私の周辺にはエリートなんぞは来るわけがないから、 エリートでもない限り高卒だろうと大卒だろうと、本人次第だ気にするな。
>>593 残念ながら、社会で必要なのは人脈と権力者に気に入られる
ノウハウですから、それらは二の次でいいんですねー
>>593 あのさ、お前馬鹿だろ?
大学は職業訓練所じゃないんだよ。
>>599 あのさ、お前馬鹿だろ?
なんのための下っ端なんだよ。
生産性を支える要だぞ。ちゃんと勉強しろ。
>>601 生産性を支えるより、偉い人のご機嫌を取る方がより良い
収入が見込めるのが普通
603 :
デフォルトの名無しさん :05/02/20 12:44:02
>>601 USSボイジャー機関主任ベラナトレスの先祖ハーケン!
>>602 一部の人間に収入があったとしても全体的には下がる。
問題は一部ではなく全体だ。
生産性を高める方が重要だよ。
_,, --- 、 , ' ´ `ヽ、 ,/ __,,,,=- 、 ヽ, ノ ,= ̄ i ,__ノ_i、イ ヽ 何このスレ・・・ ~i. ´、i_,,V ,'rヽヽiノ i、 ______i ヽr'rヽ, `'´ |/ヽ人ル' ::::| ______ヽi/ ヽ`' __ u_レト 、ノノ ::::| | |ノi `' --, '´  ̄`ヽ, ::::| | レ ノレ /´ \ ::::| | NULL ,く`ヽ、____,,,,,,, イゝ ::::| | ⊂',⌒ヽヽ/' 〜 〜〜 ~~イヽ ::::| |______ゝr⌒ 、 イ iノ ::::|________i、 /i ,ゝ ___========__ヽ_,/く__,,i,---´iヽ、 ________________________________//
609 :
デフォルトの名無しさん :05/02/20 12:58:18
>>605 頑張ってババ引いてくださいw
生産性高めたって誰も見てませんよw
611 :
デフォルトの名無しさん :05/02/20 13:03:18
>>610 頑張ってババ引いてくださいw
生産性下がったら誰も見向きもしませんよw
質問なんですが、今C言語を勉強してますが とりあえず何を抑えておけばいいでしょうか? (ポインタとかビット演算とか・・・) 後、C言語の次に進むとしたらC++かC言語でWin32APIか、 どちらがよいと思いますか? (GUIで何か作りたいです)
Delphiならタダで簡単にGUIでソフト作れるよ
>>610 う〜ん、私に対する個人的な感想なんて期待していないんですけどねぇ^^; ハハハ
なんて言うか、感想ですけれど、この人はもうダメだなって気がしました。
あ、ちなみに私はプログラマではありませんので、あしからず。
>>612 作りたいものが先だよ。
作りたいものが決まって、そしてそのユーザインターフェースとしてGUIが本当に
最適かどうかを考えてください。
GUIプログラミングは難しい事ではないのですぐできるでしょ。
>>612 まずは、やりたい事をやってみる。
分からないところがあれば、そのつど調べる。
そして、その時たまたま見つかったやり方
(MFC なり Win32 なり)を使えばよい。
617 :
デフォルトの名無しさん :05/02/20 13:12:50
>>612 回答なんですが、今C言語を勉強しているなら、とりあえず上司のご機嫌取りの方法ではなくポインタとかビット演算とか苦手なものを抑えておけばいいでしょう。
GUIで何か作りたいのなら、C言語の次に進むとしたらC++がよいと思います。
C言語でWin32APIはよいと思いません。
618 :
デフォルトの名無しさん :05/02/20 13:20:25
c言語勉強したいんすけど どっかで無料でプログラムするのと コンパイラをダウンロードできるとこってあります? なるべく早く知りたいんでageます
しね
621 :
デフォルトの名無しさん :05/02/20 13:23:11
>>618 いくつでも。MSのVCTK2003使ってもいいしBorlandでもGCCでも。
>>618 質問がおかしいのは許してやろう。
俺はエスパーだからお前の環境がWindowsXPだっていうことも知っている。
無料でプログラムするの、というのはエディタのことだな。
xyzzyでググれ。すぐにみつかる。
Cygwin gcc でググれ。すぐにみつかる。
624 :
デフォルトの名無しさん :05/02/20 13:26:49
>618 Cの本を買えば付いてるよプログラムソフト入ってるCD-ROMが。
>>617 解りました、参考にさせていただきますm(_ _)m
>>614-615 そのやり方いいですね、入門サイトあさりの毎日でうんざりしてました・・・
早速作ってみますね。
ご返事ありがとうございました。m(_ _)m
626 :
デフォルトの名無しさん :05/02/20 13:35:19
>>623 がおかしいのは許してやろう。
俺はバカだからお前の環境がVIC-1001だっていうことは知らない。
コモドールでググれ。もう存在しない。
Amiga でググれ。もう存在しない。
うおぉぉぉぉぉぉぉぉぉぉぉ、学歴学歴学歴学歴学歴ぃぃぃ!!
628 :
デフォルトの名無しさん :05/02/20 14:37:40
とり合えず「はじめてのC」読み終わったんですけど、次にお勧めの本ってありますか? できるだけツマヅカナイのがいいです。 「独習C」はだめでしょうか? あと、テキトーにcgi作ったりはしてるんですけど。
_
.. //.|
//./.|. / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
//./ | | | すんません。すぐ処分しますんで・・・・・。
//./|/:.| .| \_ __________________
□/ / //| |. |/
| |/.;;;;//. | ||.
| | ;;;;;;// | ||| l⌒)=|ニ二フ
| |.;;;// | |.|| ∧.|.∧
. ∧ ∧ | |.//. | | ||. ( ・∀・)
( ・A・).| |/. | |. || | ) ワイワイ ガヤガヤ
__( ).| |___. | | || __.| | |____
| | | | |. //.| ̄ (__(__). /.| ∧_∧ ∧_∧ ∧ ∧
(__)__)| |. // |. //| (´-`;)(@・ )(;´∀)(
| |.//∧井∧イヤァァァ--- // .| ∧∧ ∧ ∧. ∧_∧ ∧∧
(..| |/ (;´Д`)←
>>627 .//. | (∀・ )(ー゜* )( )(´∀`
(⌒ .| | / ̄ ⊂.⊃. .// / ∧_∧ ∧ ∧ ∧ ∧. ∧_∧
..∧ ∧  ̄| | / └─┘// / <_` )(´・ω )(д ゜` )( )(
( ・A・) | |/ // / ∧_∧ ∧ ∧ ∧_∧ ∧_∧ ∧
( ). ~~ // / ( )( ゜∀゜)(` )( )(゜д
. | | | // / ∧_∧. ∧_∧ ∧_∧ ∧_∧ ∧_∧
(__)__). // / (д- )( )(*゜ー゜)(T дT )(∀` )
>>628 まず、何か作れ。そこから必要に応じて勉強。
632 :
デフォルトの名無しさん :05/02/20 16:15:23
すみません。ちょっと教えてください。 struct hoge_t { char foo[1024]; char bar; int boo; }; このような構造体があるとして、 struct hoge_t h = {<???>, 0, 10}; のように宣言と同時に変数を初期化したいとした場合、 hoge_t.foo を全て0埋めすることは可能でしょうか? また可能の場合、<???>はどのように記述すればよろしいでしょうか?
>>632 memset(&h,0,sizeof(hoge_t))
struct hoge_t h = {0};
struct hoge_t h = {{0}, 0, 10};
みなさん、どうもありがとうございます。 634さん、635さんの記述形式(={0})から推測するのですが、 「省略分は全て0埋めされることが保障されている」ということでしょうか?
637 :
デフォルトの名無しさん :05/02/20 16:42:21
いちいちコンパイラーダウンロードしているようではだめ。 そんなやつは見込みない。
それ、省略というよりは 一つのキーワードみたいなものだからな。 {0} のときだけ特別扱い。
639 :
デフォルトの名無しさん :05/02/20 16:43:39
> hoge_t.foo を全て0埋めすることは可能でしょうか? というか、そうしようと思うことがそもそも間違い。 考え方がまちがっている証拠。
640 :
デフォルトの名無しさん :05/02/20 16:45:38
以前みたやつでは、こんなのがあったな。 char a[MAX]; menset(a, 0, MAX); strcpy(a, const_string); あげくのはてには、 int i; i = 0; i = 10; ...みたいに。本人いわく「初期化してから上にかさねていれたほうが、きれいにはいるんでしょ?」 だと...
>> 638 どうもありがとうございます。 >> 639 おっと、そうですか・・・。 fread、fwriteで使用される構造体で、こいつに対するPTHREAD_MUTEX_INITIALIZERもどきを用意したいなあ、なんて考えまして。 で、極力、安全側に倒しておきたい、とも考えました。 よろしければ、どのように間違っているか教えていただけませんか? (本当にわかっていないんです)
>>640 後者は意味無いが、前者はバッファオーバーランしてるときとかの
デバッグ時に効果がある場合も無い訳ではない。
char foo[1024] をゼロ初期化するのに何の問題があるのか漏れも分からない。
ノートPCをタダで合法的に入手する方法を書いてください。
くれる人を探す
>>644 ・「予め初期化してあるから大丈夫」という無意識の甘えが生じてきちんとナルターミネートしないコードを書くなどの弊害が生じる。
・開発環境が折角意図的なダミー値を入れてくれるような場合に、それをわざわざ無にしてしまってデバッグの効率を落としかねない。
以上のような観点から「無闇と」memset()するコードは、私は推奨していない。
勿論、char foo[1024]; memset(foo, 0, 1024);のように数値を直接書くようなコードは論外である。
int main(void) { return find("ノートPCをタダで合法的に入手する方法"); }
FreeBSDで今まで作ってきたプログラムをwindows用に書き換えているのですが Windowsでは、sleepとforkはどのようにして実現させるのでしょうか? 適当に検索してみたのですが 不可としか見つけることができませんでした sleepはtimeをループでまわすしかないのでしょうか? ですがそうするとかなりの負荷になってしまうと思うのですが・・ みなさんはどうやっているのでしょうか?
>>647 文字列限定ならそうかもしれんが、
構造体とか配列を適当な値で初期化したいことってあるじゃん。
>>650 sleepはあるSleep
forkはCreateProcess
>>651 少し勘違いをしていたかも試練。
私は、無闇なmemset()をすべきではないと書いたが、初期化については言及していない。
0だろうと適当な値だろうと、初期化は適宜行なえばいいと思う。
memset()(など)で0クリアしないと(アライメントによる)構造体のメンバの隙間をクリアできないが、
そもそも気にすることが殆どないので問題にはなっていない。
>>653 誘導しているんだからレスつけるなや。
>>654 もがくもなにも、私は今日は647の前には書いてないよ。
>>655 初期化することの問題について聞いているのに、
「初期化については言及してない」と開き直られても困る。
>>657 すまん。>655で書いたように勘違いだったようだ。
659 :
デフォルトの名無しさん :05/02/20 19:10:36
> 構造体のメンバの隙間をクリアできないが するなよ ぼけ
C はプログラマを信頼する言語だ。 > ・「予め初期化してあるから大丈夫」という無意識の甘えが生じてきちんとナルターミネートしないコードを書くなどの弊害が生じる。 普通そんな事で甘えない。 ナルターミネートしないコード、とは具体的にどういったコードか? > ・開発環境が折角意図的なダミー値を入れてくれるような場合に、それをわざわざ無にしてしまってデバッグの効率を落としかねない。 ダミー値は初期化されていないことを示す。 自分で初期化しているなら問題ない。 デバッグの効率を落としかねない、とは具体的にどういったコードか?
661 :
デフォルトの名無しさん :05/02/20 19:20:25
linuxでCを勉強しています。 関数上から普通にターミナルを使うようにコマンドを 実行できますでしょうか? 実行結果(標準出力?)を引数で得るような関数を知りたいです。
>>661 「普通にターミナルを使う」ということがどういうことなのかいまいちわからんが。
プログラム内から別のプログラムを起動してその出力結果をもらいたいのならpopen使え。
>>649 読み返してみた・・・
で、気づいたんだけど、JIS(X3010) の「要素指示子」って何? これ?
こんなのあった?
int a[MAX] = { 1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0 };
が、規格準拠なの?
こんなコード、見たこと無いぞ?
664 :
デフォルトの名無しさん :05/02/20 19:52:44
文字列の配列name[20]、整数型のkokugo、整数型のsansuuをメンバとする構造体struct studentを宣言し、宣言した構造体型の変数seitoを宣言している。←この問題わからないんですけど、解いてもらえますか??
問題?どの問題?
666 :
デフォルトの名無しさん :05/02/20 19:54:38
>>664 struct student{
char name[20];
int kokugo;
int sansuu;
} seito;
668 :
663 :05/02/20 20:12:14
本当に何? これ? コンパイルは通らないし、google でもヒットしないし・・・ こんなもん、シレッと平気で規格に載せるなよ。 誰か、ここら辺の事情を知っている人いない?
669 :
デフォルトの名無しさん :05/02/20 20:16:12
666さんありがとうございます。
>>668 コンパイル通りますけど
古臭いコンパイラ使ってないでバージョンアップしたらいかがですか
知らなかった・・・ まだまだ勉強不足を感じる今日この頃。
単にC99じゃないの?
gcc -std=c89でも通るからANSI準拠だと思う
gccは独自規格持ち。
675 :
デフォルトの名無しさん :05/02/20 20:26:53
まだあるんですけど、次のプログラムは配列tenの内容をポインタpによって参照し、入出力するプログラムである。ってゆう問題なんですけど、解いてもらえなでしょうか??
だからどこが問題なのかと。そもそも宿題なら宿題スレにいけ
>>673 いや、C99 みたい・・・(Designated Initializer)
どうやらJIS の規格が、中途半端な立場を取っているみたいだね。
>>678 JISが中途半端なのではなく、世の中に中途半端な実装をしたコンパイラしかないんだよ。
↓10個どころか1個も無いんだ。ぐだぐだ言うな。
ぐだぐだ
質問なのですが 例えば XCreateFontSet(display, "-mona-gothic-medium-r-normal-*-16", &miss, &miss_cnt, &defi); 等を行うとき -mona-gothic-medium-r-normal-*-は固定で フォントサイズだけをそのとき毎に変えたいときはどうするのでしょうか? XCreateFontSet(display, "-mona-gothic-medium-r-normal-*-"size, &miss, &miss_cnt, &defi); //sizeは 16が入ってるとします ようするに ダブルクォーテーションで囲む文字列の中に変数の値を紛れこましたいときは どうするのでしょうか?
迷ったらsprintf
あ、今の JIS って、C99 に合わせて しっかりと改定されていたんだ・・・ (当たり前といえば、当たり前だけど)。 そこら辺を勘違いしていた。 スミマセン >> JIS の中の人
>>659 誰も「する」なんて書いてねぇよぼけ。
>>660 >ナルターミネートしないコード
memcpy()かなにかでナルキャラを伴わないコピーをした場合など。
>デバッグの効率を落としかねない
それこそ構造体の隙間も0クリアされてしまうため、char foo[5]のようなメンバに
strcpy(foo, "01234");したような場合にその検出がしづらい。
どっちみち、そう言うコードを書くほうが蛸な訳で、どう書かせようともバグを出す香具師は出す。
その意味で、「プログラマを信頼する言語」であるという点は同意。
プログラマっていうかC言語のほうがタコだってことに気付けよ。 タコな言語でミスをしないためのノウハウを偉そうに語る 更年期親父・・・
>char foo[5]のようなメンバにstrcpy(foo, "01234"); バッファオーバーラン
688 :
デフォルトの名無しさん :05/02/20 21:29:00
>>685 > memcpy()かなにかでナルキャラを伴わないコピーをした場合など。
極めて発生しにくいミスだね。
あなたはそんなコードを書くのだろうか?
> それこそ構造体の隙間も0クリアされてしまうため
構造体の隙間は { 0 } で初期化されるのか?
されないだろう?
> char foo[5]のようなメンバにstrcpy(foo, "01234");
687 も突っ込んでるけど、それは初期化に関わるミスではないだろう?
>>686 > 更年期親父・・・
親父に更年期はあるのだろうか?
char ss[]="MPA T01 DELAY -24ms.wav" char ss2[]="MPA T12 DELAY 234ms.wav" char ss3[]="MPA T DELAY 21ms.wav" この文字列から XXmsの XXの数値を 得るにはどうすれば良いんでしょうか? それとss3はエラーで出力したんですけど 教えてください
>>690 >それとss3はエラーで出力したんですけど
>教えてください
何を?(w
ひょっとして;か?
693 :
デフォルトの名無しさん :05/02/20 22:55:12
宿題スレに出したら直ぐ答えがくると思うぞ。
>>690 #include <stdio.h>
void ParseMS(char *ss)
{
int d;
if (sscanf(ss, "MPA T%*2[0-9] DELAY %dms.wav", &d) == 1) {
printf("%d ms\n", d);
} else {
printf("ERROR! (%s)\n", ss);
}
}
int main()
{
char ss1[] = "MPA T01 DELAY -24ms.wav";
char ss2[] = "MPA T12 DELAY 234ms.wav";
char ss3[] = "MPA T DELAY 21ms.wav";
ParseMS(ss1);
ParseMS(ss2);
ParseMS(ss3);
}
WOW!
宿題スレに出しちゃいました(テヘ
>>696 すごいプログラミングっすね
ありがとう
698 :
デフォルトの名無しさん :05/02/20 23:20:50
>>661 はい、その通りです。
さらに付け加えるとプログラムを実行中の入力待ち状態(単にscanfでも)
に文を入力、出力を返り値とするような関数を知りたいです。
pipeとかforkでしょうか?いまいち分からなくて///
おねがいします!
700 :
デフォルトの名無しさん :05/02/20 23:28:56
>>698 つまり、C インタプリタを作りたいのか。
パーサやらコードジェネレータやら大変だけど、頑張れな。
俺、そういう若造は嫌いじゃないぞ。
cout << "some debug message" << endl; をまねて bmpout << "some debug message" << endbmp; みたいな形でbmpファイルに書き出すにはどういったプログラミングをすればいいでしょうか? 意外と難しくて困っています。
いやbmpファイルと書くのは間違えた。 単にデバッグメッセージをログファイルに書き足したいだけ。 ファイル名とか時間とか自動的に入れてデバッグメッセージをファイルに落とす。 dbgout << "some debug message" << enddbg; // これ一行で一ファイルとして出力 と書くと main.cpp: 16: 2005.02.20: some debug message みたいな。
703 :
デフォルトの名無しさん :05/02/20 23:42:29
スレ違い C++ スレ池
すいません sscanf(ss, "MPA T%*2[0-9] DELAY %dms.wav", &d) == 1の T%*2[0-9]これの意味が分からないのですが T%*2は2桁 [0-9]は何なのでしょうか?
>>704 %[]はscanset
たとえば%[abc]ならaまたはbまたはcから成る文字列にマッチする
%[0-9]は%[0123456789]の省略
>>705 あー申し訳ない
今、規格を見直したらscansetの中の"-"の意味は実装依存と書いてあった
だから、%*2[0123456789]の方が良いみたい
[0-9]でたいてい動くと思うけど
今モーレツにナタデココが食べたいんですが、近所のコンビニで売ってません。 どうしたらいいですか?
710 :
デフォルトの名無しさん :05/02/21 01:08:05
scanfで数値を入力した後、EOFで終了してその数値を掛け算と割り算するプログラムを作りたいのですがうまく動きません。 数値入力で^Zで終了まではうまく動くのですが、その後printfで結果を出してくれません。何が問題なのでしょうか? #include <stdio.h> void main(void) { int dat,sum,n; sum=n=0; while (scanf("%d",&dat)!=EOF){ sum=sum+dat; n=n+1; } printf("gokei = %d\n",sum); printf("heikin = %d\n",sum/n); }
712 :
デフォルトの名無しさん :05/02/21 01:18:57
>>710 scanfをgetcharに直したら使えました。
謎だけど
713 :
デフォルトの名無しさん :05/02/21 01:20:28
あれ?やっぱり使えないや
何が問題なのかようわからん
改行に注意☆
このスレは質問を日本語で記述デキナイ奴が多いな
自分で何が問題か分かってないから説明出来ないんだろう。 まともに整理して質問出来る香具師は自己解決出来る。
719 :
デフォルトの名無しさん :05/02/21 03:34:14
> gcc -std=c89でも通るからANSI準拠だと思う こいうつはc89年以降にansiが改訂されていないとおもってる おおぼけ
こいうつ
ヘッダファイル #define ABC( a,b ) .cファイル ABC( c,b ) 変数名は仮ですが、こういう記述があったのですけれど これはどういう意味でしょう? cをaに置き換えるのでしょうか?
722 :
デフォルトの名無しさん :05/02/21 07:39:04
>>668 > コンパイルは通らないし、google でもヒットしないし・・・
とかいっている時点でこいつかなりの厨房決定。
そんな基本的な文法通らないようなにせものコンパイラー使うなよ。
うちにある何種類かのコンパイラーでそれがエラーになるのは1つもない。
723 :
デフォルトの名無しさん :05/02/21 07:39:39
>>721 括弧のすぐうちがわに空白あけるなよ ぼけ
ヘッダファイル #define ABC(a,b) .cファイル ABC(c,b) これでお願いします
725 :
デフォルトの名無しさん :05/02/21 08:08:17
>>722 だからC89じゃ基本文法じゃないでしょ。
コンパイラ通れば基本文法だと思ってるあんたの方がよっぽど厨房。
726 :
デフォルトの名無しさん :05/02/21 08:13:56
そんなものはCではない > C89じゃ基本文法じゃないでしょ C89なんていう呼び方をすると、いまだにそういう規格が許されているのだと 思い込む馬鹿も続出
727 :
デフォルトの名無しさん :05/02/21 08:14:52
ただしくは「C89じゃ基本文法じゃない」ではなく、 「C89じゃ基本文法ではなかった」だな。 すでに16年も前の話だ。
世の中のコンパイラのほとんどがC99のフル規格をサポートしてない 以上、現時点でC99を標準Cと呼ぶのは時期尚早だと思う。
729 :
デフォルトの名無しさん :05/02/21 08:24:19
> 世の中のコンパイラのほとんどがC99のフル規格をサポートしてない 以上 お、またでたなVC厨 ;-) よのなかの大概のコンパイラーがサポートしてるんだよ > 位置指定初期化 してないのはVCぐらいじゃない?
どれが標準か、よりどの標準に合わせるか、でしょ。 ユーザーの立場としては。
>>729 ほう、VCは位置指定初期化はサポートしてないのか。知らなかった。
ところであんたのコンパイラはC99の規格は全部サポートしてるのか?
>>722 > うちにある何種類かのコンパイラーでそれがエラーになるのは1つもない。
VCぐらいもってないんですか?w
>>729 引用までしておいて位置指定初期化限定の話…莫迦ですか?
VC厨必死
gcc厨も必死
標準って言ってもどこまでサポートしてるかはコンパイラによって違うし、文句言ってもしょうがない
UNICODEって言ってもどこまでサポートしてるかはOSによって違うし、文句言ってもしょうがない
今、俺がいいことを言った!
739 :
デフォルトの名無しさん :05/02/21 12:54:51
移植性を考慮すると現時点ではできるだけC99での追加機能は使わないのが 妥当。多分コーディング規約で縛っている所も多いはず。 遊びでプログラム書いてるんなら何やってもかまわんが。
snprintf()だけは使えるなら使ったほうがいい様に思う。
742 :
デフォルトの名無しさん :05/02/21 13:28:52
>>741 だから遊びでプログラマやっている人には何にも言いません。
仕事で C 使ってるけど、C99 使いまくりだよ。 お前らみたいな old type がいるから俺らが苦労するんだ…_| ̄|○
744 :
デフォルトの名無しさん :05/02/21 13:57:43
>>739 long long intも使えんな。組み込み系オールドタイプか?
で、結局関数呼び出し以外でポインタてどこで意味あるの。
J
>>721 それだけだとプリプロセス後は何も残らない。
昔は何かする必要があった(or 将来何かする必要が出てくる)ということだろう。
750 :
デフォルトの名無しさん :05/02/21 16:05:31
>>745 long longはデファクトに近いし簡単に代替できんから、使ってもいい様
な気がする。でも移植性についての注記をコメントで入れなきゃならん。
/* 移植性についての注記 */ /* long longはデファクトに近いし簡単に代替できんから、使ってもいい様な気がした */
752 :
デフォルトの名無しさん :05/02/21 18:09:48
やり方わかんないです 教えてください 泣きそうです 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブと フォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib"
754 :
デフォルトの名無しさん :05/02/21 18:14:23
どこに行けばいいのでしょう?
756 :
デフォルトの名無しさん :05/02/21 18:16:36
まじめにお願いします
>>752 1. freecommandlinetools.exe を実行します。無料の C++Builder 5
コマンドラインツール開発システムをインストールしたいドライブと
フォルダを選択します。
2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib
>>752 なぜ”C言語”のスレで”コンパイラの設定”について質問してるのかと
コンパイラの仕様について聞くなら分かるが
759 :
デフォルトの名無しさん :05/02/21 23:10:02
760 :
デフォルトの名無しさん :05/02/22 01:15:11
> 移植性を考慮すると現時点ではできるだけC99での追加機能は使わないのが なにぼけたこと言ってる
761 :
デフォルトの名無しさん :05/02/22 01:16:26
> long longはデファクトに近いし っていうか標準文法にあるだろ ぼけ
int64_t使えよ まったく・・・
a<b || b>c a<b && b>c みたいに評価する場合ってどんなコンパイラでも確実に左から右へ評価してくれますか?
いいえ
それは何故ですか?どうやって順番を決めているんですか?
なんかどこかで見たような木がする。歴史はくりかえされる。 まぁいいか
if(a<b){ if(b>c){ } }
768 :
デフォルトの名無しさん :05/02/22 03:47:18
[1] 授業単元:基本情報処理の言語対策 [2] [3] 言語:C [4] 期限:2月7日朝まで [5] その他の制限: 特になし 0だと、条件式で偽と判断される理由が分かりません。 #include <stdio.h> int main(void) { int sum = 1; while(sum){ printf("整数を入力してください。(0で終了)\n"); scanf("%d",&sum); printf("%dが入力されました。\n",sum); } printf("繰り返しが終りました。\n"); return(0); } 変数sumを宣言した後、1を代入していますが、その後、whileの条件式に入っています。 そして、この条件式では、0を入力すると、条件が偽と判断されて、条件から抜け出します。 この時、なぜ0だと条件から抜け出すのでしょうか。仕様ですか? お願いします。
769 :
デフォルトの名無しさん :05/02/22 03:48:21
0だと、条件式で偽と判断される理由が分かりません。 #include <stdio.h> int main(void) { int sum = 1; while(sum){ printf("整数を入力してください。(0で終了)\n"); scanf("%d",&sum); printf("%dが入力されました。\n",sum); } printf("繰り返しが終りました。\n"); return(0); } 変数sumを宣言した後、1を代入していますが、その後、whileの条件式に入っています。 そして、この条件式では、0を入力すると、条件が偽と判断されて、条件から抜け出します。 この時、なぜ0だと条件から抜け出すのでしょうか。仕様ですか? お願いします。 マチガイタ。
真であり続ける限りループする 1 = 真 0 = 偽 while(1){ } 真なのでループ while(0){ } 偽なのでループ脱出
771 :
デフォルトの名無しさん :05/02/22 03:58:13
>>769 Cではそういう決まりだからとしか言いようがない。
括弧内の条件式を省略すると ゼロでないかどうかと比較される。 while(sum){ } と while(sum != 0){ } は同じ
773 :
デフォルトの名無しさん :05/02/22 03:59:52
>>770 一応なのですが、1以外の数字も代入できます。
ですが、0を代入すると、条件を抜け出す形になるのですが…。
774 :
デフォルトの名無しさん :05/02/22 04:00:38
>>771 あああ、仕様ですが、それならOKです。
>>772 一応、それだと理解は出来るのですが、仕様かどうかで迷ってました。
ありがとうございます。
仕様かどうかって迷って決めるものか?
決めるって何を?
777 :
デフォルトの名無しさん :05/02/22 07:12:07
>>763 規格は、規格に合致しない処理系の不存在を保証しない
むしろ、省略しなくてもゼロでないかどうかと比較される、と 考えておいたほうがよいかも while (sum != 0) -> while ((sum != 0) != 0) while (sum < 0 || 0 < sum) -> while ((sum < 0 || 0 < sum) != 0)
>>763 「必ず評価する」とは言わないが、
おそらく「評価した結果と等しくなる」のだろう。
if (1 < 2 || 2 < 3)
while (sum != 0) ↓ while ((sum != 0) != 0) ↓ while (((sum != 0) != 0) != 0) ↓ while ((((sum != 0) != 0) != 0) != 0) ↓ while (((((sum != 0) != 0) != 0) != 0) != 0) ↓ while ((((((sum != 0) != 0) != 0) != 0) != 0) != 0) ↓ while (((((((sum != 0) != 0) != 0) != 0) != 0) != 0) != 0) ↓ while ((((((((sum != 0) != 0) != 0) != 0) != 0) != 0) != 0) != 0) ↓
↓ ぬるぽ
if (A || B) は必ず A、B の順で評価される。 A が真の場合は B は評価されない。
&&も右から左への順で評価することが保障されてて偽があるとそこで評価が 終わる。この規則がないと条件式の評価をコンパクトに書きにくい。
まちがえた。左から右、だった。
785 :
デフォルトの名無しさん :05/02/22 09:12:32
アラビアのC言語は逆から > 左から右
testtest
BCC5使ってます。 struct { int x, y; } a; struc { int x, y } b; a=b; が出来ないのはなんでですか? C++だと出来るのに・・・。
structの間違いだからじゃなくて?
>>787 これがC++だとできるだって?
規格のどこにそんなこと書いてあるか言ってみろ
>>789 メンバのみコピーするコピーコンストラクタは省略可能
型が違うのにコピー?
792 :
デフォルトの名無しさん :05/02/23 10:15:15
782、783は、 じゃあ if (A || B && C) や if (A && (B && C))の場合はどういう順になるのかを 実は知らない ;-)
>>793 無根拠に煽りたいだけの
>>792 が知っている筈がないだろう。
今確かめてる最中だろうから少し待ってヤレ。
A() || (B() && C()) A B C r 0 0 - f 0 1 0 f 0 1 1 t 1 - - t A() && (B() && C()) A B C r 0 - - f 1 0 - f 1 1 0 f 1 1 1 t A() || (B() || C()) A B C r 0 0 0 f 0 0 1 t 0 1 - t 1 - - t A() && (B() || C()) A B C r 0 - - f 1 0 0 f 1 0 1 t 1 1 - t
ソースも貼っとこう。 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> bool A() {int foo; printf("A():"); scanf("%d", &foo); return foo;} bool B() {int foo; printf("B():"); scanf("%d", &foo); return foo;} bool C() {int foo; printf("C():"); scanf("%d", &foo); return foo;} int main() {if (A() || (B() && C())) printf("true\n"); else printf("false\n"); return 0;}
&& と || の評価については規格で決まってるだろ?
配列を渡す関数の仮引数は [] と * どっちがいいですか?
配列を受け取るでした。
unsigned char, unsigned int, unsingned long とかあるのですが、 typedef unsigned size_t のようにunsinged しか書いてないときはどれを 表してるのですか?教えてください。
unsigned int
>>801 intは省略可能なので、
unsignedと書いたらunsigned intの意。
勿論、unsigned longはunsigned long intの意だね。
>>806 #define N 16
void f(int (*foo)[N]);
int main() {
int array[N];
f(&array);
return 0;
}
下をtypedefなしで書くと上の意味になることから上の書き方も認められている。
typedef int T[N];
void f(T *foo);
int main() {
T array;
f(&array);
return 0;
}
>>805 それは配列ではなく配列へのポインタを受け取っているような。
だからと言って、>798は配列の要素へのポインタでしかないけど。
>>808 806が(*)[]をなにそれって言うから例を示しただけ。
あふぉばっかりのすれはここれすか?
一箇所からしか呼ばれない関数は作らないほうがいいですか?
>>812 それで処理の流れが理解しやすくなるなら
がんがん作ってください。
どこからも呼ばれない関数は作らないほうがいいですか?
>>814 ステップ数稼ぎですか?好きにしてください。
#ifdefのようなやつや、 デバックのやり方を勉強したいのですが、 なにか良いサイト教えてください。
>>814 いつか呼ばれる日が来るまで
がんばってください
LINUX環境で、ファイルの検索をしたいのですが、 FindFirstFileに変わるものってないですか?
>>819 FindFirstFileってなんですか?
普通にfind(1)を使えばいいんでないの?
あと、スレ違い。
バッチファイルを実行するコマンドを教えてください。 お願いします。
>>823 system()
Cにコマンドなんぞない。
826 :
デフォルトの名無しさん :05/02/24 21:54:23
*.BAT → *.EXE のコンパイラを見たことあるが・・・
BAT2COMなんてもあるな。
クリップボードの文字列を参照することってできますか?
829 :
デフォルトの名無しさん :05/02/24 22:32:02
標準Cではできないのでスレ違い。 Win32APIスレとかへ行け。
831 :
デフォルトの名無しさん :05/02/25 00:39:40
コンパイラの環境設定の時点で躓きました・・ 説明書には、 >インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 こう書いてあるんですが、既存のパスってのが そもそもどこにあるのかわかりません・・
>>831 コマンドプロンプトでPATH=〜を入力
Numerical Recipes関連の質問もOKでしょうか?
834 :
デフォルトの名無しさん :05/02/25 00:55:27
>>832 コマンドプロンプトってどうやって出すんですか?
binフォルダの中にあるんですか??
836 :
デフォルトの名無しさん :05/02/25 01:45:16
世代の隔絶を感じますねぇ。 ほんこないだ迄、手回し計算器だったのに…
彼の国はいまでも手回しでつ
算木の時代をようやく脱したか。
ココで聞いていいのかわかりませんが・・・ 処理速度について教えてください。 例えば tmp = x << 3; for(i = 0; i < 1000; i++) func(tmp); と for(i = 0; i < 1000; i++) func(x << 3); ってコンパイラの最適化を考えない場合 全体としてどちらが速いのでしょうか??
コンパイラの最適化に依存する。 考えないと、答えはでない。
最適化を考えない=最適化されないものとする、ということであれば、 当然前者の方が計算量は減る。 しかし、速いかどうかは環境依存になるため一概には言えない。
842 :
デフォルトの名無しさん :05/02/25 03:26:56
> ココで聞いていいのかわかりませんが・・・ だったらわかってから聞け! なんでわからないうちに聞くんだ? 「あなたを殺しても法律的にいいのかどうかわかりませんが、とりあえず殺しておきます」 とかいいそうだなこいつ
843 :
デフォルトの名無しさん :05/02/25 03:27:40
そもそも答えちがってくるだろ > 839 比較にならない。
ありがとうございます。 それでは環境によって逆になりうるということでしょうか。 あと、上の例のtmpのように、変数を使う使わないで影響はありますか?
>>842 すいません・・・
一気に聞いてしまいました。
VC++2003 x86 最適化無しのアセンブリリスト出力(ループ内のみ抜粋) //tmp = x << 3; //for(i = 0; i < 1000; i++) //func(tmp); movedx, DWORD PTR _tmp$[ebp] pushedx call_func addesp, 4 //for(i = 0; i < 1000; i++) //func(x << 3); movecx, DWORD PTR _x$[ebp] shlecx, 3 pushecx call_func addesp, 4 下の方が1命令だけ多い。 これで満足かい?
ちなみに最適化かけると、両方全く同じコードになるぞw
848 :
デフォルトの名無しさん :05/02/25 06:49:40
849 :
デフォルトの名無しさん :05/02/25 07:37:28
> それでは環境によって逆になりうるということでしょうか。 ぼけ。それ以前に2つのコード、ぜんぜんロジックちがうじゃないか? これの答えが同じになる環境なんかねーよ 同じもの比べないと意味ないだろ?
ちがわないぞ?
851 :
デフォルトの名無しさん :05/02/25 08:25:57
違わない
func()の引数の型とtmp,xの型が違ったら、違ってくるか・・・ でも、そういう話じゃ無さそうだしなあ。 843,849 判らないから説明してくれよ。
853 :
デフォルトの名無しさん :05/02/25 08:38:25
x <<= 3 と混同しているのではないかと
俺だったら今日1日このスレ見れない
856 :
デフォルトの名無しさん :05/02/25 09:12:38
すみません。visualC++の演算、分岐、ループ、再帰などにかかる計算時間 を知りたいのですがどこかにありませんか。 よろしく願いします。
158 :仕様書無しさん :05/01/31 12:18:57 俺は1ではないですけど 入学卒業はメチャクチャ難しいとは思いますけど 仮に1さんがそのプログラマに関係ある修士号もしくは博士号取れちゃったら経験者扱いにならないんですか? 取れたらの話しですが 大学院じゃなくて学部でも、一流大でプログラム学んでも無理なんですか? 勿論これも1さんが入学出来たらの話ですが 理系って朝早く学校から出てきてボールペン持って走ってたりしてるのよく見ました 泊り込んで猛烈に研究してるなら毎日プログラマと同じような事やってるんじゃないんですか? もしくは普通のプログラマより遥かに高度な研究やソフトの作製 なんか天才が物凄いソフト作ったりしてそうなイメージあるんですが 大学院で高度な研究するなら卒後経験者として職探し出来ないんですか?
859 :
デフォルトの名無しさん :05/02/25 09:41:59
alt+Eでプロファイラー動いたのですがどうやって調査したら正確な計算量わかりますか。 よろしくお願いします。
860 :
デフォルトの名無しさん :05/02/25 09:45:06
再帰とか、関数呼び出しとか、変数マクロとか、演算とか、分岐とか のコストを正確に知りたいのですが。ソースください。 よろしくお願いします。
862 :
デフォルトの名無しさん :05/02/25 09:53:29
懸命にスレを流そうとする849であった・・・・・
864 :
デフォルトの名無しさん :05/02/25 10:23:25
プロファイラをやってみたのですがifにかかるコストが全く無いのですが。 おかしいんでしょうか? これと int i;for(i=0;i<=300000000;i++)if(i==0)if(i==0)if(i==0); これが同じ位の時間なんですが。ホントに合ってるのかな? int i;for(i=0;i<=300000000;i++);
865 :
864 :05/02/25 10:25:51
なぜなんだー。よろしくお願いします。
868 :
864 :05/02/25 11:26:22
なぜgよりiの方が速いのか詳しくお願いします。 void f(void){ int i;for(i=0;i<=30000000;i++); } void g(void){ int i;for(i=0;i<=300000000;i++); } void h(void){ int i,s=0;for(i=0;i<=300000000;i++)if(i>=0)s++; } void i(void){ int i;for(i=0;i<=300000000;i++)if(i>=0); } main() { f();g();h();i(); } プロファイラ結果 1034.895 41.2 h(void) (test.obj) 702.974 28.0 g(void) (test.obj) 693.421 27.6 i(void) (test.obj) 80.726 3.2 f(void) (test.obj)
869 :
864 :05/02/25 11:28:26
void i(void){ int i;for(i=0;i<=300000000;i++)if(i>=0)if(i>=0)if(i>=0)if(i>=0);} にしたらさらに高速化しました。 >648.068 26.7 i(void) (test.obj)
>>864 いいかげん、寿司屋でカレーを注文するような真似はやめろ。
871 :
デフォルトの名無しさん :05/02/25 11:32:39
分岐にかかるほんとのコストを教えてくれたらいなくなるので教えてください。
>>864 だからスレ違いだって言ってるだろうが!
873 :
デフォルトの名無しさん :05/02/25 11:36:09
それではなぜスレ違いなのか言ってみて。
>>873 環境やコンパイルオプション等に激しく依存するから。
なんかもう荒らしですね
>>873 自分の要求ばっかり。ハッキリ言ってうざい。
言えないんだ。役たたずだね。
荒らすのが目的だったか。以後スルー
>>873 ニモニック見てクロック数を計算する。
なんでC言語とは直接関係ない
コンパイラが生成するマシン語やCPUの話
すし屋に行ってカレーを注文。 カレーなんかあるかボケと突っ込まれ カレーも作れないのか役立たずとのたまう。 なんだかなもぅ
現在無職ですがマルチに答える暇はありません
885 :
デフォルトの名無しさん :05/02/25 15:15:50
すみません、ソート方法についての質問なのですが、 構造体の複数の項目をソートさせたいです。 項目Aでソート 項目Bでソート : : をしなければならないのか それとも 項目A,B,・・・でソート というやり方はできるのでしょうか?
できる。
888 :
デフォルトの名無しさん :05/02/25 15:20:51
889 :
デフォルトの名無しさん :05/02/25 15:22:34
こんな感じのコードなのですが 同じ処理を何回もやるのは嫌なので 巧い方法はないか教えて頂けませんでしょうか #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char aaa[7]; char bbb[7]; char ccc[11]; char ddd[3]; char eee[3]; } AA; int main(void) { AA *pg_ar, g_war; int i, j; int irows; int gap, k; irows = 10; pg_ar = (AA *)malloc(sizeof(AA) * irows); if ( pg_ar == NULL ) { return(1); }
890 :
デフォルトの名無しさん :05/02/25 15:23:17
memcpy(pg_ar, "aaaaaa\0bbbbb1\0AAAA000001\0dd\0B2\0", sizeof(AA)); memcpy(pg_ar+1, "aaaaaa\0bbbbb2\0AAAA000004\0dd\0F2\0", sizeof(AA)); memcpy(pg_ar+2, "aaaaaa\0bbbbb3\0AAAA000012\0dd\0A2\0", sizeof(AA)); memcpy(pg_ar+3, "aaaaaa\0bbbbb4\0AAAA000000\0dd\0D2\0", sizeof(AA)); memcpy(pg_ar+4, "aaaaaa\0bbbbb5\0AAAA000009\0dd\0A2\0", sizeof(AA)); memcpy(pg_ar+5, "aaaaaa\0bbbbb6\0AAAA000004\0dd\0B2\0", sizeof(AA)); memcpy(pg_ar+6, "aaaaaa\0bbbbb7\0AAAA000003\0dd\0A2\0", sizeof(AA)); memcpy(pg_ar+7, "aaaaaa\0bbbbb8\0AAAA000004\0dd\0A2\0", sizeof(AA)); memcpy(pg_ar+8, "bbbbbb\0bbbbb9\0 A259\0dd\0A2\0", sizeof(AA)); memcpy(pg_ar+9, "bbbbbb\0bbbb10\0 A1\0dd\0B2\0", sizeof(AA)); for ( gap=(irows/2); gap>0; gap/=2 ) { for ( i=gap; i<irows; i++ ) { j = (i - gap); while ( (j >= 0) && (strcmp((pg_ar+j)->aaa, (pg_ar+(k=j+gap))->aaa) == 0) && (strcmp((pg_ar+j)->ccc, (pg_ar+(k=j+gap))->ccc) > 0) ) { g_war = *(pg_ar+j); *(pg_ar+j) = *(pg_ar+k); *(pg_ar+k) = g_war; j -= gap; } } }
891 :
デフォルトの名無しさん :05/02/25 15:23:57
for ( gap=(irows/2); gap>0; gap/=2 ) { for ( i=gap; i<irows; i++ ) { j = (i - gap); while ( (j >= 0) && (strcmp((pg_ar+j)->aaa, (pg_ar+(k=j+gap))->aaa) == 0) && (strcmp((pg_ar+j)->ccc, (pg_ar+(k=j+gap))->ccc) == 0) && (strcmp((pg_ar+j)->eee, (pg_ar+(k=j+gap))->eee) < 0) ) { g_war = *(pg_ar+j); *(pg_ar+j) = *(pg_ar+k); *(pg_ar+k) = g_war; j -= gap; } } } free(pg_ar); return(0); }
>>885 >項目Aでソート
>項目Bでソート
>:
>:
と
>項目A,B,・・・でソート
は結果が違うだろ。
>項目A,B,・・・でソート
>というやり方はできるのでしょうか?
出来るに決まってる。
894 :
デフォルトの名無しさん :05/02/25 15:44:22
SQLで書くと ORDER BY AAA,DDD DESC,EEE をしたいです。 qsortを使って一度にソートさせるように したのですが、ソート結果が意図しないものになったので 自作しました。比較用の関数を巧くするとqsort一回で 複数項目をソートできるのですか?
>>894 >比較用の関数を巧くするとqsort一回で複数項目をソートできるのですか?
そうだよ。
>ORDER BY AAA,DDD DESC,EEE
の例でいくと、
1:項目「AAA」を比較
・不一致の時→比較結果を返し終了
2:項目「DDD」を比較
・不一致の時→比較結果を返し終了
3:項目「EEE」を比較
4:3の結果を反転して返し終了
こんな感じ。
って言うか、ソートの基本から勉強し直した方が良いよ。
896 :
デフォルトの名無しさん :05/02/25 15:53:04
>>895 ありがとうございます
頑張ってみます。
>>894 逆に、qsort()は安定ではないから一発で決めないといけない。
安定なソートなら条件を変えて何度もソートすればいいけどね。
898 :
デフォルトの名無しさん :05/02/25 17:23:23
安定ではないとは?
そんぐらいググれや 手拍子で聞いてんじゃねーよ
900 :
デフォルトの名無しさん :05/02/25 17:42:23
C言語意味不明。 なんでこんなのがわかるの?
君には向いていなかったんだよ、違う道を進め。
>>897 正直、安定か?安定でないかを気にするようなプログラムは作らんよ。
純粋にcompare( (void *) elem1, (void *) elem2 );関数を作った方が間違いが無い。
>>898 安定ソート
出典: フリー百科事典『ウィキペディア(Wikipedia)』
安定ソート(あんていソート)とは、ソート(並び替え)のアルゴリズムのうち、
同等なデータのソート前の順序が、ソート後も保存されるものをいう。つまり、
ソート途中の各状態において、常に順位の位置関係を保っていることをいう。
>>900 あきらめないでください。
あなたは慣れていないだけですから、もう少しがんばってみましょうね^^
×天子 ○天使
907 :
デフォルトの名無しさん :05/02/25 18:59:57
二つ質問させて下さい。 下記のプログラムを実行すると、画面には 10 と表示されました。 void main() { char mbStr[] = "あいうえお"; printf( "%d", _mbstrlen(mbStr) ); } 最初僕は文字の数である 5 が返ってくると期待したのですが、実際には文字列のバイト数である 10 が返ってきました。 この関数は文字列のNULL文字を除いたバイト数を得る関数と理解して良いのでしょうか? でもそれだと strlen() 関数と全く動作が同じになると思うのですが・・・ どのように理解すれば良いのか教えて下さい。 もう一つの質問です。下記のようにして、ワイド文字をマルチバイト文字に変換し表示しようとしたのですが、全くデタラメな文字列が表示されてしまいます。 void main() { char mbStr[256]; wcstombs( mbStr, L"ああああ", 256 ); printf( mbStr ); } ワイド文字をマルチバイト文字に変換し、表示するにはどのようにすれば良いのでしょうか? 質問は以上の二点です。 どちらか一方でも解る方がいらっしゃいましたら返信お願いいたします。 使用している環境は下記のとおりです。 OS = WindowsXP Home Edition SP2 コンパイラ = Microsoft Visual C++ .NET
>>907 #include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
char mbStr[256];
setlocale(LC_ALL, "Ja");
wcstombs(mbStr, L"ああああ", 256);
printf(mbStr);
}
>>897 qsort()がstableかどうかはライブラリ依存でqsort()だからstableでは
ないとは言えない筈。でも規格では保証してないのでstableであることを
前提にプログラムを書かないほうがよい。
「安定であるとは言えない」ということで一つ。
7.20.5.2 The qsort function 4 If two elements compare as equal, their order in the resulting sorted array is unspecified. どっちか分からないってことで。
912 :
907 :05/02/25 20:41:27
>>908 おかげさまで二つとも解決することができました。
ありがとうございます。
913 :
デフォルトの名無しさん :05/02/25 20:51:18
教えない君は小さい奴。職人に多い。
wcstombs()とかって環境によってはバグだらけだよね 使い物になるの?
915 :
デフォルトの名無しさん :05/02/25 22:54:38
バグと仕様は切り離せ #ifdef で
916 :
デフォルトの名無しさん :05/02/25 23:36:20
>>842 殺すしかなければそうするだろう
自分で法律を持ち出しながら法律の知識が幼稚園児なみだなこいつ
俺の環境(Metrowerks CodeWarrior for Windows v8.3)では、L""自体が 使い物にならない。ワイド文字列リテラルをコード中に書けない。最悪。
918 :
デフォルトの名無しさん :05/02/25 23:52:27
グチャグチャだけど よく見ると何食って吐いたのか分かる、・・・って コアってOSのゲロみたいなもん って解釈でOKですか?
919 :
デフォルトの名無しさん :05/02/26 00:00:12
920 :
デフォルトの名無しさん :05/02/26 00:01:09
メモリという胃袋以外にも悪いところはあるかも知れないが とりあえず観察してみるって意味で
磁気コアメモリ→コアメモリダンプ→ファイル名core→コアを吐く
実際大型機からは「吐き出される」というイメージがぴったり
質問します。 #include <stdio.h> void main() { double mysin(double x); double x; scanf("%lf",&x); printf("%lf",mysin(x)); } double mysin(double x) { double a,ai,b,bi,sum; int i,j; b=1; a=x; sum=x; ai=0; for(i=2;i<N;i++) { sum +=ai; for(j=1;j<=2*i-1;j++) { bi=b*j; b=bi; } ai=a*((-1)*x*x)/b; a=ai; } return(sum); } というプログラムを課題でつくったのですがここのNのところを2桁以上の数にしてしまうと、 スキャンしてからとまってしまいます。 どこが問題なのでしょうか?
924 :
デフォルトの名無しさん :05/02/26 03:04:38
止まる原因とは違うがb:階乗を計算する部分がおかしい
>>923 止まるっていうか、Nの増加によって項数が増えることが
階乗の計算処理に大きく影響するからだと思う。
間違ってるのはともかく、アルゴリズム自体ももう少し工夫したらどうかな。
double mysin(double x)
{
double a, b, sum;
int i;
b = 1;
a = x;
sum = x;
for (i = 2; i < 100; i += 2) {
b *= i * (i + 1);
a *= (-1) * x * x;
sum += a / b;
}
return sum;
}
あ、100っていうのは適当ね。
止まっているように見えるだけということか。 分母が階乗なんだから途中でsumが変化しなくなったら計算打ち切りしてもええんちゃう?
BCC で試してみたが、double 型で計算すると階乗は170までが限界
7.257415615308004024000000000000000000000e+306
170 ! x 16 までは計算できるが、170! x 17 はランタイムエラー。
計算途中でこれ超えてるんだろうな。
>>923 のプログラムは a == 0 になったとこで breakすれば N = 100 でも動くよ。
エラー云々以前に、
>>923 のプログラムは
分母が「前項の分母 * 階乗」で分子が「前項の値 * (-x^2)」になってるから、
それを修正しないと正常に機能しないよ。
930 :
デフォルトの名無しさん :05/02/26 08:25:06
atoiの逆をやる関数を教えてください
itoa
932 :
デフォルトの名無しさん :05/02/26 08:33:17
933 :
デフォルトの名無しさん :05/02/26 08:41:34
grep なり [編集] - [ファイルから探す] なり、いくらでもやりようあるだろ
934 :
931 :05/02/26 08:45:05
>>930 ネタだと思って答えたんだが
マジで質問してるのか?
936 :
デフォルトの名無しさん :05/02/26 08:51:15
938 :
デフォルトの名無しさん :05/02/26 10:19:32
springfでうまくいきました。 それにしてもatoiのヘッダが見つからないのですが、教えてください
>>938 atoiならstdlib.h
そのからみでitoaもstdlib.hにあることが多い。
itoaって標準Cだっけか?
春だね。
>>924-929 ありがとうございました
Nを大きくすると計算処理がフリーズしてしまうといことでしょうか。
いちおう階乗のところをなおしてやってみたんですがやはりあまり大きな数字を入れると
とまってしまいましたが
>>925 さんのプログラムなら動いたことから私のプログラムは無駄がありすぎっていうことですね。
いちおう自分の階乗を直したものを貼っておきます
double mysin(double x)
{
double a,b,sum;
int i,j;
b=1;
a=x;
for(i=2;i<11;i++)
{
sum +=a/b;
b=1;
for(j=1;j<=2*i-1;j++)
{
b *=j;
}
a *=(-1)*x*x;
}
return(sum);
}
なまえ入れ忘れました↑は923です
946 :
デフォルトの名無しさん :05/02/26 14:57:23
なまえ入れるよりトリップ入れた方がいい
947 :
デフォルトの名無しさん :05/02/26 14:57:25
948 :
デフォルトの名無しさん :05/02/26 17:16:23
忘年会や歓送迎会の時期に、下北沢や明大前の駅のホームに よくおちてますよ > core
949 :
デフォルトの名無しさん :05/02/26 17:32:13
そんなときには find . -name core -exec rm -f {} \; あれ? Linux だと find . -name 'core.*' -exec rm -f {} ;\ になるのかな?
950 :
デフォルトの名無しさん :05/02/26 19:08:35
よく、intがbigEndianでもlittleEndiganでもだいじょうぶなように格納するとき、 #define DEC_BE4(a) ((((a)[0] << 24) & 0xff000000) |\ (((a)[1] << 16) & 0xff0000) |\ (((a)[2] << 8) & 0xff00) |\ (((a)[3] << 0) & 0xff)) のように書きますよね? これって。毎回自分で書くのめんどうなので、 標準的なマクロってどこかにないのでしょうか? stddef.hとかに。gcc独自でもいいけど。
952 :
デフォルトの名無しさん :05/02/26 20:00:20
Windows環境でボーランドC++コンパイラを使い、 CによりCGIアプリを作ろうと思っているのですが、 どういった環境でCで作ったCGIが動作可能かがわかりません。 WebServerなんでもかまはないので、Cで作ったCGIを動くようにするためには、 具体的にどのようなソフトが必要ですか?
>>952 CGIを動かすサーバで動くコードを吐くコンパイラ
954 :
デフォルトの名無しさん :05/02/26 20:03:26
>>952 返答ありがとうございます
具体的になソフト名を挙げていただけるとうれしいです
>ボーランドC++コンパイラを使い それだけで可能 他にはいらない
957 :
デフォルトの名無しさん :05/02/26 20:16:04
959 :
デフォルトの名無しさん :05/02/26 20:27:46
>>952 CGIはただのプログラム。
たいていのウェブサーバでそのまま動かせるよ。
BCCでコンパイルするとウインドウズ用のプログラムが出来上がるので、
Windows上で動いているウェブサーバで動かせる。
IISで動かすならCGIにするより、COMにしておいてASPから使ったほうが楽チンだよ。
960 :
デフォルトの名無しさん :05/02/26 20:29:28
>>952 「CGIとは何か?」から勉強した方がいいぞ
961 :
デフォルトの名無しさん :05/02/26 20:30:58
たくさん釣れました。
962 :
954 :05/02/26 21:15:05
お答えいただいた皆さん ありがとうございました勉強になりました。
963 :
デフォルトの名無しさん :05/02/26 21:43:27
>>949 おまいさんの端末は全角でコマンド打つのか
イモだね
アフォだね
964 :
デフォルトの名無しさん :05/02/26 21:50:27
>>951 みつからないんですけどー
% grep htonl /usr/include/*.h
965 :
デフォルトの名無しさん :05/02/26 22:03:33
これって例えばメモリ512Mの場合何Mぐらいでダウンしますか while(1) { malloc(1024*1024); printf("now allocation %dM", ++i); }
966 :
デフォルトの名無しさん :05/02/26 22:08:04
#if defined(KERNEL) || !defined(_POSIX_SOURCE) って書いてあります。POSIX準拠の場合はどういうマクロを使えばいいですか?
967 :
デフォルトの名無しさん :05/02/26 22:09:11
>>965 速度の話と同じで思いっきり処理系依存
「ダウン」の定義がなく、あまつさえ OS の種類すら示していないのに答えようがあるまい
>>964 % grep htonl /usr/include/*/*.h
% man htonl
>>965 俺の記憶違いだったらすまないが
【mallocの戻り値】
成功時 : 確保したメモリブロックを指すポインタ
失敗時 : NULL (メモリ不足により指定サイズ分のメモリが確保できないとき)
だったからダウンすることは無い…かな?
思いっきりOSとかに依存しますが…
Win9X系ならダウンに等しい状況になるかも、不明だが・・・
作って実行した方が速い。w
>>969-971 興味があったので作ってみたら。 OS=Windows2000Proで。
スワップ始まって2G近くメモリーをmallocして、スワップが無くなったらNULLが
帰ってきた。システムは重いが動く、システムメッセージで
「仮想メモリーが足りないので増やしてくれ」と言われ、testプログラムをKillして
今正常に動いてるよ。結構頑丈。w
頑丈っていうかそれが当たり前だろ・・・
975 :
デフォルトの名無しさん :05/02/26 23:11:48
>>973 結局、「ダウン」しなかった
cl.exe Ver13.10.3077: 1921M
bcc32.exe 5.5.1: 1906M
で、どちらも malloc が NULL を返してきたが
これといって処理が重くなったりはしなかった
書き込みアクセスしてればもう少し違ったかも知れんが・・・
OS 名Microsoft Windows XP Professional
バージョン5.1.2600 Service Pack 2 ビルド 2600
プロセッサx86 Family 6 Model 10 Stepping 0 AuthenticAMD ~1463 Mhz
合計物理メモリ1,024.00 MB
利用可能な物理メモリ503.27 MB
合計仮想メモリ2.00 GB
利用可能な仮想メモリ1.96 GB
ページ ファイルの空き容量2.40 GB
ページ ファイルC:\pagefile.sys
>>975 わざわざdです。
今度会社のHP-UXでもやってみる
>>975 無限ループで動いてたから、その分が重かったかもな。
他に4本ほどプログラムも動かしてたし。
>>974 漏れは古い人間たから、意外だと思ったんだよ。気にするな。
>>964 find /usr/include -name '*.h'|xargs grep htonl /dev/null
980 :
デフォルトの名無しさん :05/02/27 09:41:53
こっち先に埋めようぜ
981 :
デフォルトの名無しさん :05/02/27 10:08:15
ビット演算の無意味なワザ…ゼロクリア x^=x
982 :
デフォルトの名無しさん :05/02/27 11:00:13
それって構造体でも使える?
983 :
981 :05/02/27 11:10:18
無理っぽい
うめ
>>982 ビット演算は整数型にしか使えない事を知っての発言ですか?
980超えると書き込み無ければ自動的に落ちるので無理に埋めないように
ume
988 :
デフォルトの名無しさん :05/02/27 11:42:56
空集合…0 和集合…x|y 積集合…x&y 差集合…x^(x&y)
989 :
デフォルトの名無しさん :05/02/27 11:46:47
空集合…{}
990 :
デフォルトの名無しさん :05/02/27 11:47:39
和集合…a||b
991 :
デフォルトの名無しさん :05/02/27 11:51:02
積集合…a&&b
本物のプログラマはいかにして問題を解くかッ
993 :
デフォルトの名無しさん :05/02/27 11:52:21
ビットを集合の要素に見立てた演算なので||はちょっと…別にいいけど
994 :
デフォルトの名無しさん :05/02/27 11:53:07
差集合…a||b && !(a&&b)
995 :
デフォルトの名無しさん :05/02/27 11:54:00
差集合…(a||b) && !(a&&b)
996 :
デフォルトの名無しさん :05/02/27 11:54:00
>>986 ァ ∧_∧ ァ,、
,、'` ( ´∀`) ,、'`
'` ( ⊃ ⊂) '`
997 :
デフォルトの名無しさん :05/02/27 11:55:39
a | b = ~(~a & ~b) a & b = ~(~a | ~b) ~a | ~b = ~(a & b) ~a & ~b = ~(a | b)
998 :
デフォルトの名無しさん :05/02/27 11:56:19
a || b == ~(~a && ~b) a && b == ~(~a || ~b) ~a || ~b == ~(a && b) ~a && ~b == ~(a || b)
999 :
デフォルトの名無しさん :05/02/27 11:57:03
a || b == !(!a && !b) a && b == !(!a || !b) !a || !b == !(a && b) !a && !b == !(a || b)
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。