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

C言語なら、俺に聞け! Part 51

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しませう。
質問する前には最低限Googleで検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

コンパイラを探しているなら >>2- を。

上記を逸した場合の結果は激しく未定義だゴルァ!!

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
0002デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

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

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003デフォルトの名無しさんNGNG
前スレ
C言語なら、俺に聞け! lt;50gt;
http://pc2.2ch.net/test/read.cgi/tech/1044938752/
0004デフォルトの名無しさんNGNG
【過去ログ】
49 http://pc2.2ch.net/test/read.cgi/tech/1042646178/
49? http://pc2.2ch.net/test/read.cgi/tech/1042640474/
48 http://pc3.2ch.net/tech/kako/1041/10411/1041127646.html
47 http://pc3.2ch.net/tech/kako/1040/10400/1040048202.html
46 http://pc3.2ch.net/tech/kako/1039/10393/1039328710.html
45 http://pc3.2ch.net/tech/kako/1038/10384/1038405432.html
44 http://pc3.2ch.net/tech/kako/1037/10377/1037796472.html
43 http://pc3.2ch.net/tech/kako/1037/10372/1037281411.html
43 http://pc3.2ch.net/tech/kako/1037/10371/1037134356.html
42 http://pc3.2ch.net/tech/kako/1037/10371/1037101156.html
41 http://pc3.2ch.net/tech/kako/1036/10368/1036876790.html
40 http://pc3.2ch.net/tech/kako/1036/10366/1036673739.html
39 http://pc3.2ch.net/tech/kako/1036/10364/1036409391.html
38 http://pc3.2ch.net/tech/kako/1035/10357/1035729526.html
37 http://pc3.2ch.net/tech/kako/1035/10356/1035623265.html
36 http://pc3.2ch.net/tech/kako/1035/10352/1035211039.html
35 http://pc3.2ch.net/tech/kako/1034/10343/1034337064.html
34 http://pc3.2ch.net/tech/kako/1033/10332/1033240509.html
33 http://pc3.2ch.net/tech/kako/1032/10326/1032606064.html
32 http://pc3.2ch.net/tech/kako/1031/10319/1031905402.html
31 http://pc3.2ch.net/tech/kako/1030/10307/1030786546.html
30 http://pc3.2ch.net/tech/kako/1030/10307/1030786546.html
29 http://pc3.2ch.net/tech/kako/1029/10296/1029605182.html
28 http://pc3.2ch.net/tech/kako/1028/10284/1028495798.html
27 http://pc3.2ch.net/tech/kako/1027/10271/1027160374.html
26 http://pc.2ch.net/tech/kako/1026/10260/1026048820.html
0005デフォルトの名無しさんNGNG
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html
23 http://pc.2ch.net/tech/kako/1023/10230/1023024817.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1020/10207/1020756993.html
18 http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
17 http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
16 http://pc.2ch.net/tech/kako/1018/10184/1018453690.html
15 http://pc.2ch.net/tech/kako/1016/10165/1016519243.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1013/10139/1013990673.html
12 http://pc.2ch.net/tech/kako/1012/10123/1012348974.html
11 http://pc.2ch.net/tech/kako/1009/10094/1009499565.html
10 http://pc.2ch.net/tech/kako/1008/10083/1008300863.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
7 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
6 http://piza2.2ch.net/tech/kako/999/999617524.html
5 http://piza2.2ch.net/tech/kako/994/994908590.html
4 http://piza.2ch.net/tech/kako/992/992357382.html
3 http://piza.2ch.net/tech/kako/989/989929288.html
2 http://piza.2ch.net/tech/kako/979/979529893.html
1 http://piza.2ch.net/tech/kako/967/967985026.html
0006デフォルトの名無しさんNGNG
>>1
スレ勃て乙。
0007デフォルトの名無しさんNGNG
>>1
乙。
ttp://pc2.2ch.net/test/read.cgi/tech/1044938752/976
もアドバイスよろしくお願いしますね。
0008デフォルトの名無しさんNGNG
保守
0009デフォルトの名無しさんNGNG
DLL化した関数の返り値ってreturnで返す値でいいんですか?
0010デフォルトの名無しさんNGNG
>>9
DLLはスレ違いかもしれんが・・・
それで良いと思われ。
0011デフォルトの名無しさんNGNG
>>10
ごめんなさい、ありがとうございます。
0012デフォルトの名無しさんNGNG
>>1
ぬるぽ
0013デフォルトの名無しさんNGNG
           //.|
         //./.|.   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        //./ | |   | すんません。すぐ処分しますんで・・・・・。
      //./|/.| .|   \_ ______________
      □/ / //| |.      |/
      | |/.;;;;//. | ||.          ☆ 
      | | ;;;;;;//  | |||   l⌒)=|ニ二フ  
      | |.;;;//   | |.||   ∧.|.∧  
.  ∧ ∧ | |.//☆.  | | ||.  ( ・∀・)
 ( ・A・).| |/.    | |. ||  |   )            ワイワイ  ガヤガヤ
__(    ).| |___. | | || __.| | |____   
  | | | | |.   //.| ̄ (__(__).   /.|      ∧_∧ ∧_∧ ∧ ∧ 
 (__)__)| |.  //  |.         //|     (´-`;)(@・ )(;´∀)
      | |.//∧ ∧|<ぬるぽォァァ /  |    ∧∧  ∧ ∧ ∧_∧ ∧∧
     (..| |/ (;´A`) ←>>12 .//    |   (∀・ )(ー゚* )(   )(´∀`
   (⌒ .| |    / ̄ ⊂.⊃.  .//   /  ∧_∧ ∧ ∧ ∧ ∧. ∧_∧
 ∧ ∧  | |  /    └─┘//   /   (´・ω)(д゚` )(   )(
( ・A・) | |/        .//   /   ∧_∧ ∧ ∧ ∧_∧ ∧_∧ ∧
(    )  ~~       //   /    (   )( ゚∀゚)(`   )(   )(゚д
. | | |          //   /    ∧_∧. ∧_∧ ∧_∧ ∧_∧ ∧_∧
(__)__)        //   /     (д- )(   )(*゚ー゚)(TдT)(∀` 
0014デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぽ
0015デフォルトの名無しさんNGNG
キョウハタイリョウダナ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >.__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>14
0016デフォルトの名無しさんNGNG
>>1
strncpy
0017デフォルトの名無しさんNGNG
>>1
mktime
0018デフォルトの名無しさんNGNG
long double と long float はどうちがいますか?
0019デフォルトの名無しさんNGNG
>>18
スレ違いです。
http://pc.2ch.net/test/read.cgi/prog/1042377112/
0020デフォルトの名無しさんNGNG
struct bitset {
unsigned int flag1 : 1;
unsigned int flag2 : 1;
unsigned int flag3 : 1;
...
};

というようにビットフィールドをセットしたとき、
変数iをインデクスにしてi番目のflagにアクセスすることってできますか?
0021 ◆8/MtyDeTiY NGNG
#define setbit(a,i) (a.flag##i = 1)
#define clrbit(a,i) (a.flag##i = 0)
#define testbit(a,i) (a.flag##i == 1)
ただし、iは定数。

...要求条件を満たさないようだな。


変数でアクセスしたいなら、素直に
#define setbit(a,i) ((a)|=1<<(i))
#define clrbit(a,i) ((a)&=~(1<<(i)))
#define testbit(a,i) ((a)&(1<<(i)))
とか。
0022 ◆8/MtyDeTiY NGNG
つーか、各ビットに名前をつけたいのでなければ、
ビットフィールドを使う意味って無いでしょう。
0023デフォルトの名無しさんNGNG
>>19
(・∀・)イイ!!
0024デフォルトの名無しさんNGNG
お前らいい加減にC++に移行しろ(-_-;)
0025デフォルトの名無しさんNGNG
未だにCにとどまっているヤシは、多分Cを覚えたてで、他人に
教えてみたくてしょうがないんだろう。
0026デフォルトの名無しさんNGNG
>>24
>>25
Cで書かれたオープンソースのプログラムは腐るほど有るわけだが、
そいつらに云ってみたら?
取りあえずLinus, RMSあたりからでも。

0027デフォルトの名無しさんNGNG
適材適所
0028デフォルトの名無しさんNGNG
わざわざCスレに来て自分がC++を知っているという取るにも
足らないことを話したがるようなヤシは、多分C++を覚えたてで、
他人に教えてみたくてしょうがないんだろうね。
0029デフォルトの名無しさんNGNG
>>28
それは言えてるかも(w
0030デフォルトの名無しさんNGNG
>>24-25
こら、初学者にそんなこと言っちゃいけません。
0031デフォルトの名無しさんNGNG
c++に移行しろって言っている奴に限ってクラスの設計が小汚いんだよな。
優秀なcプログラマはそれなりのc++プログラマになれるけど
使えないc++プログラマは似ても焼いても食えんぞ。
0032デフォルトの名無しさんNGNG
てか、他所でやれや
0033デフォルトの名無しさんNGNG
言語よりもパラダイム。
0034デフォルトの名無しさんNGNG
くそっC++スレがイマイチ盛り上がりに欠けるのは、ユーザーの
絶対数がまだまだ少ないからだ。
0035デフォルトの名無しさんNGNG
馬鹿ユーザー増やしてもしょうがないから、このままで良いよ。
0036デフォルトの名無しさんNGNG
C++ で Cライクにプログラミングすればいいのでわ。
無理してクラスや STLを使わなくてもいいわけだし。
0037デフォルトの名無しさんNGNG
>>36
そうそう、それで structキーワードは忘れずにつける、これ最強。
0038デフォルトの名無しさんNGNG
CコンパイラでコンパイルできるようなプログラムはC++で書いたとはいわん。
0039デフォルトの名無しさんNGNG
ソースの形式だけC++で内容はCってことが多い
0040デフォルトの名無しさんNGNG
C++の機能は関数のオーバーロードだけ使っています。
0041デフォルトの名無しさんNGNG
C++で書いたと宣言する必要はないよ。Cで名前の衝突考えたり
甘い型チェックでふらふらしたコードを書くよりメリットある
んじゃないかということ。
0042デフォルトの名無しさんNGNG
(´-`).。oO( スレ違いとわかっている雑談を何故続ける? )
0043デフォルトの名無しさんNGNG
>>42
多分そろそろCからC++に移行したがっているヤシが少なからず
いるからと見た。
0044デフォルトの名無しさんNGNG
そして失敗してCに戻ってきたヤツも何人かいると見た。
0045デフォルトの名無しさんNGNG
じゃ、ベターCも取り扱い対象にしよう。
0046デフォルトの名無しさんNGNG
>>45
それ(・∀・)イイ!!
C++スレでベターCについて書くとスレ違いと叩かれるからね。
0047デフォルトの名無しさんNGNG
>>45
それ(・∀・)イイ!!
専用スレ立てると糞スレ立てるなと叩かれるからね。
0048デフォルトの名無しさんNGNG
早速で悪いんだが、C++ではプロトタイプ宣言は必須になったが、
Cでも必ずするべき?
0049デフォルトの名無しさんNGNG
>>48
しなければならないわけではないけど、するべき。してくれ。しろ!
0050デフォルトの名無しさんNGNG
>>49
サンクス。必ずするようにするよ。
ところでベターCの質問なんだけど、C++ではvoidのreturnが
許されている。こういうコードは書いても精神衛生上大丈夫
だろうか?

void func1()
{
}

void func2()
{
return func1();
}
0051デフォルトの名無しさんNGNG
うーん。
C++ではなくCを「敢えて」選ぶ理由は
・ツールやデバッガのサポート。
・移植性。組み込みだの古い環境だの。
・ぐちゃぐちゃなABIがいや。asmやFORTRANともリンクしたいんだい。
・今だに標準に追いついてないコンパイラがゴロゴロしてる状況で
一々対応状況までおっかけてコーディングしてられない。
・何となく禿が嫌い(w。ガーベージコレクトもサポートせず
コンパイル時に型が決まっちまうような半端なオブジェクト指向言語
なんぞ使ってられるか。
のようなものだったりするんではないかと思うので、C++を
ベターCとして「しか」使わないんなら単純にCで書いた方が遥かに
メリットがでかいと思うのだが。
0052デフォルトの名無しさんNGNG
やれやれ・・・
0053デフォルトの名無しさんNGNG
MFCがC++だから、嫌々ながらC++に移行した。まだまだC++を
「使いこなせて」いるわけではないが、もうCには戻れない。
0054デフォルトの名無しさんNGNG
>>51
まあそうだろうな
0055デフォルトの名無しさんNGNG
Cも大した事無いのにね。
0056デフォルトの名無しさんNGNG
お前等いい加減 Ruby に移行しろ(^ε^)-☆Chu!!
0057デフォルトの名無しさんNGNG
>>51
典型的なCの”信者”だな。
C++にもいい点はあるのに・・・・・
0058デフォルトの名無しさんNGNG
新しい言語を学習する事を嫌がる怠慢なプログラマの言い訳のための
言葉になってしまっている気がするのは筆者だけでしょうか。
005951NGNG
>>57
別にC++を否定してる訳でもなんでもないよ。C++をベターCとして「のみ」
使うのは無意味(それぐらいならCで書いた方がよっぽどいい)と
云ってるだけ。
C++のメリットを(ほとんど)享受できず、負債のみを負うことになるからね。
0060デフォルトの名無しさんNGNG
> ・移植性。組み込みだの古い環境だの。
コレと
> ・何となく禿が嫌い(w。ガーベージコレクトもサポートせず〜
コレを同列に置かれても
006151NGNG
>>60
まあ下のは筆がすべっちゃっただけということで。
つい、いつもの煽り癖が...(w
0062デフォルトの名無しさんNGNG
>>59
えーと、stringは?舐め空間は?関数のオバーロードは?ディフォルトパラメータは?
0063デフォルトの名無しさんNGNG
cを長く使ってきた私にとっては、
・構造体とアクセス関数をクラス化したい。
・構造体を同じように取り扱うことが多いのでテンプレートも使いたい。
・特殊なクラスには演算子オーバーロードしたい。
からc++に移行したいのだけど、
・cで納品と言うしょうもない契約や、
・cしか読めない他社との共同作業だったり、
・既存のライブラリがcで書かれていたり、
するのでなかなか移行できません。
#でも一部ライブラリは内部をc++で書いて、cから呼べるラッパを作ったけど。
0064デフォルトの名無しさんNGNG
Cを初めて2日くらいなのですが、とりあえず超初心者はこれを作っとけっていうのってありますか?
BCCでCpadっていうのを使っています、エディタはお勧めのものとかあれば教えていただきたいのですが…
0065デフォルトの名無しさんNGNG
edit.com
006651NGNG
>>62
チミは一体どこからどこまでを「ベターC」と云っとるのかね。
俺の個人的な見解では
・std C++ライブラリ(特にSTL)を駆使するようなプログラムは既に
better Cの範疇ではないとおもう。STLなんて簡単なんだし
C++の中では費用対高価が圧倒的に高いコンポーネントだから
使える人はバシバシ使ってとっととC++に移行すればよいと思う。
・後ろの三つは「あれば便利」程度の物であって、C++化によって
発生する負債(>>51参照)をカバーするには足らないと思うね。
無論>>51のものが全て負債とは感じない人であれば、何も問題
ではない。
・ABIだけを気にする人であれば、extern "C"である程度解決する
ことは書いておこう。ただし、一般にC++コードを実行するには
Cよりも遥かに多くの複雑なランタイムサポートやスタートアップ
コードを必要とすることは知っておくべきだろう。
例えばDLLを例に取ると、libcに一切依存しないものの方がいいに
決まっている。Cでそのようなものを書くことは簡単だが、
C++でそれをすることは困難だ。ATLにはCRTに最小依存するための
コンパイルオプションが有るのだが、設計ミスのせいで事実上
役に立たないものになってしまったように思う。
006764NGNG
>>65
飛んだのですが、わかりませんでした、ごめんなさい
0068デフォルトの名無しさんNGNG
>>64
Windowsでお勧めはPeggyかXyzzyかVivi。
#これでemacs派もvi派も安心w

Cを始めて2日でも、プログラミングの経験が豊富なら構造体やポインタを
多用するプログラムでも作ってみればいいと思う。
プログラミングも始めて2日なら……先ずはプログラミングの勉強だね。
0069デフォルトの名無しさんNGNG
はああ、ウンチク君の登場か。
007064NGNG
>>68
ありがとうございます、peggy使ってみます。
プログラミングは、VBしか触ったことがないので…
0071デフォルトの名無しさんNGNG
>>51
いちいち細かい事グチグチ言うな。
stringくらい使わせたっていいじゃねいかよ。禿。
0072デフォルトの名無しさんNGNG
流石にCスレでわざわざC++の話を持ち出したがる奴は低レベルのが多いな....
取り合えず
>>28
が真実をついてるってことで。
007364NGNG
具体的な、こんなプログラム作れって言ってもらえると嬉しいのですが・・
0074デフォルトの名無しさんNGNG
さいたまがダンスするプログラムを作ってくらさい。
007564NGNG
>>74
ごめんなさい
007668NGNG
>>64
方向は二つ。
・GUIをバリバリ書きたい。
私は門外漢なのでノーコメント。
・GUIはどうでもいいからプログラミング技術を磨きたい。
標準入出力を使った、簡単な集計プログラムはどうだろうか。
デバッグも楽だし、テストデータはテキストファイルが使えるし。

最初は行数のカウントし出力、次に行から数値を読んでその合計を出力、
計算系に進化するなら平均を出すとか標準偏差を出すとか。
データ処理系に進化するなら単語数を数えるとか行をソートするとか。
#unixで言う、wcとかsortだね。
0077デフォルトの名無しさんNGNG
>>64
テキスト(ソースファイル等)を読み込んで、行を逆順に出力
するプログラムを作ってみれ。
俺は初心者だった頃、いかに効率よく実装するかでいろいろ
試した記憶がある。
007864NGNG
>>76
Cだけでグラフィックできますかね?GUIより今はプログラム技術を磨きたいです
テキストファイルから文字(数字)を抜き出して
ソートや平均値を出すなどのプログラムということでしょうか?
やってみます
007964NGNG
>>77
わかりました、ありがとうございます
0080デフォルトの名無しさんNGNG
>>64
「Software tools(ソフトウェア作法)」のプログラムをCで
書いてみるとか、もいいかも。
例がRatforというFORTRAN用プリプロセッサ言語で書かれているんだが
FORTRANなんぞ知らなくても読める。まあ、古い本なので汎用機
の時代のことを聞きかじりでも知らないと、何を云ってるかわからん
部分もあるかもしらんが、非常に示唆に富んだ名著であることには
間違いないよ。
0081デフォルトの名無しさんNGNG
MS-DOS上で動くフリーのCコンパイラってありますか。
0082デフォルトの名無しさんNGNG
LSI-C 試食版、djgpp
0083デフォルトの名無しさんNGNG
peggyってインストール必要だから敬遠してたけど、どのへんが使える?
0084デフォルトの名無しさんNGNG
EmEditor 使いなのでわからん。

プログラマーが使うテキストエディタって何?Part3
http://pc.2ch.net/test/read.cgi/prog/1044538391/
テキストエディタ何使ってる?Ver.10
http://pc2.2ch.net/test/read.cgi/software/1040201710/
0085デフォルトの名無しさんNGNG
edit2.exe 最高
008664NGNG
>>76,77,80
すみません、まだポインタすら使えませんでした
勉強しなおしてきます
0087デフォルトの名無しさんNGNG
>>86
釣りだったのか?(w
それはともかく、「ポインタが分からない」人は経験的には
ポインタではなく「変数」が分かっておらず、さらに云えば
計算機についての基本的な理解が足りていないことが多い。
その辺から見直してみ。
0088デフォルトの名無しさんNGNG
>>64
ついでにJavaTeaも飲んどいで。
0089デフォルトの名無しさんNGNG
char a[2];

a[0]=100;
a[1]=200;

(100=16h,200=C8h)

これをshort型として16C8hみたいな感じで取り出すにはどうしたらいいですか?
お願いします
0090デフォルトの名無しさんNGNG
sprintf(s,"%X%Xh",(short)a[0],(short)a[1]);
009190NGNG
shortにキャストしても、可変個の引数リストだからintにされちゃうけどね。
009290NGNG
あ、もしかしてcharの配列をshortとして見たいの?
じゃあ

short sh;
char *a=&sh;

a[0]=200;
a[1]=100;

こうすれば?ビッグエンディアンなら代入する値を逆にして。
(sizeof(short)==2とは限らないんだけど・・・)
0093デフォルトの名無しさんNGNG
>>89
((short)a[1])<<8 | a[0]
0094デフォルトの名無しさんNGNG
こういうの unsigned でない char のまま計算するの気持ちわるいな
0095デフォルトの名無しさんNGNG
どうせ環境依存だし、いいじゃん
0096デフォルトの名無しさんNGNG
>>93
境界あわせの問題とか大丈夫?
shortならいいのかな・・・
0097デフォルトの名無しさんNGNG
CCLemon飲まないの?
0098デフォルトの名無しさんNGNG
今までVBをしていました。
今度、Cを覚えようと本を買い勉強を始めました。
コンパイラをボーランドからDLしましたが
無償のコンパイラは、MS−DOS上しか使えないんでしょうか?
ボタンとかテキストBOX等の使用は、全てソースを書かないと
だめなのでしょうか。
もし、同じプログラムを組むとしたら、VBの何十倍のステップが
必要ですよね。
visualC++で勉強したほうがよいのでしょうか?
0099デフォルトの名無しさんNGNG
え〜とっ、VB教えて下さいw
0100デフォルトの名無しさんNGNG
>>98
Cの勉強にGUIプログラミング(?)はやめた方がいいよ。。。
0101デフォルトの名無しさんNGNG
>>98
おいおい、VBやってるナウなヤングならC#だろ?
0102デフォルトの名無しさんNGNG
a[100]="abcdefg";
を
b[]="abcde"; //(先頭からn文字)
c[]="fg"; //(残り)
みたいに分割するのに,一番負荷の小さい方法はどうすればよいですか?
0103デフォルトの名無しさんNGNG
>>102
strncpy(b,a,5);
b[5]=0;
strcpy(c,a+5);
0104デフォルトの名無しさんNGNG
>>101
98ですが、C#を覚えたいのですが、いきなりするより
Cをある程度覚えてからC#に移行しょうと考えたんですが
遠周りでしょうか?
0105C ◆eAPv2Zei.Q NGNG
>>104
C++はともかく、C#ならC#から勉強した方がいいよ。
0106105NGNG
名前欄に「C#知らないけど(ワラ」と書いたらトリップになっちゃった(鬱
0107C ◆eAPv2Zei.Q NGNG
ふむ?
0108102NGNG
>>103
恐れ入りました m(_ _)m
strcpy(c,a+5)
が思いつかなかったです。
0109C ◆eAPv2Zei.Q NGNG
test
0110C丼知らないけど(ワラNGNG
これでいいだろ
0111デフォルトの名無しさんNGNG
>>110
なんで井じゃないのかと小一時間(ry
0112デフォルトの名無しさんNGNG
すいません教えてください。
例えばなんですが、配列を動的に取る場合などに
関数を使ってサイズを取るのと一回数値型に代入してからサイズを取るのって
プログラム的にはどちらがスマートなんでしょうか?
ex1.
int length=strlen("length");
char str[length];
ex2.
char str[strlen("length")];
0113デフォルトの名無しさんNGNG
>>98
ボーランドの無償コンパイラをMS-DOS上で動かす方法を教えて下さい
0114デフォルトの名無しさんNGNG
>>113
エミュレータ
0115デフォルトの名無しさんNGNG
DOSモードとはまた。
0116デフォルトの名無しさんNGNG
>>112
文字列リテラルならsizeofを使えば?
つーかどちらもコンパイル通らないだろ(C99はしらん)。
0117デフォルトの名無しさんNGNG
コマンドプロンプトとかをMS-DOSとか言う奴の発想だと、
LinuxやらPC-UNIXもMS-DOSになるのかな?
0118デフォルトの名無しさんNGNG
んなわけねーだろ
MS-DOSプロンプトじゃ長いから略してMS-DOSって言うんだよ。
0119デフォルトの名無しさんNGNG
>>118
いや、奴らは絶対わかってねえ
0120デフォルトの名無しさんNGNG
どぷろん
0121デフォルトの名無しさんNGNG
コマンドプロンプト(MSーDOSプロンプト)だよ。
MS−DOSって何? 117さん。
0122デフォルトの名無しさんNGNG
>>121
>>98に言えよ・・・
0123デフォルトの名無しさんNGNG
分かりやすくて、キーボードで瞬間的にシステムをオペレートできる
世界最強のOS
0124デフォルトの名無しさんNGNG
「超漢字」のことか。
0125デフォルトの名無しさんNGNG
PC-DOS >>> MS-DOS
0126デフォルトの名無しさんNGNG
これが ゼネレーションギャップ というやつか…
0127デフォルトの名無しさんNGNG
おまえら
そ
ろそろアセンブラに移行
しろ
や。
0128デフォルトの名無しさんNGNG
HTTP/1.1 304 Not Modified
(・∀・)新着ナシ
0129デフォルトの名無しさんNGNG
>>128
この板に来る奴がそんな厨房ツール使うなよ。
0130デフォルトの名無しさんNGNG
いいじゃん。便利なんだから。
0131デフォルトの名無しさんNGNG
65816 のCコンパイラはありますか?
0132デフォルトの名無しさんNGNG
72289のCコンパイラってある?
0133デフォルトの名無しさんNGNG
804860のCコンパイラってある?
0134デフォルトの名無しさんNGNG
7401のCコンパイラってある?
0135デフォルトの名無しさんNGNG
お前らいい加減に6943に移行しろ(@_@*)
0136デフォルトの名無しさんNGNG
3.14159265358979のCコンパイラってある?
0137C ◆eAPv2Zei.Q NGNG
ある
0138デフォルトの名無しさんNGNG
65816(SNES?)以外判らないけど、なんのCPUですか?
0139デフォルトの名無しさんNGNG
やはりモトローラの68000系が最高だろう。
0140デフォルトの名無しさんNGNG
やっぱDEC Alphaだろう。
0141デフォルトの名無しさんNGNG
Ruby>>>68k>8801>386>その他
0142デフォルトの名無しさんNGNG
0x00を含むバイト列を文字列として操作(strlen、strcpy等)することは不可能ですか?
0143デフォルトの名無しさんNGNG
ううん。
0144デフォルトの名無しさんNGNG
いってみれば通常の文字列も0x00を含むバイト列だな。
0145デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬる
0146デフォルトの名無しさんNGNG
ぽ
0147デフォルトの名無しさんNGNG
文字列の「途中に」含む場合。
0148デフォルトの名無しさんNGNG
ニヒキマトメテ
          | | ガガッ   .
  ( ・∀・)   | |      
 と    )    | |   
   Y /ノ    .人   
    / ) .人 <  >__Λ ∩
  _/し' <  >_Λ∩Д´)/
 (_フ彡 V`Д´)/   / ←>>145
            / ←>>146
0149デフォルトの名無しさんNGNG
キーボードからの入力モードが挿入か上書きかのアレはアプリケーション毎に管理するものなのですか?
0150デフォルトの名無しさんNGNG
NULLPOinter
0151デフォルトの名無しさんNGNG
文字列の途中にナルキャラ('\0')を挟みたくても
ナルキャラでターミネートされてしまって文字列として取り扱えなくなる罠。

>>142
ってことで、0x21 0x22 0x00 0x23 0x00 なるバイト列があったとして、
その先頭をpが指していたとする。その場合、
strlen(p)は2を返すし、strcpy(どこか, p)も2バイトしか転送しない。
0152デフォルトの名無しさんNGNG
つか、「文字列」という言い方をしたら'\0'までを指すと思われ。
'\0'以降にも有効値がある場合は文字(型)配列値。
0153デフォルトの名無しさんNGNG
lpsz?
0154デフォルトの名無しさんNGNG
SZって何の略?
0155デフォルトの名無しさんNGNG
String terminated by Zero の略らしい。
こんな情報変数名に要らない。。
0156デフォルトの名無しさんNGNG
いや、いるません!
0157デフォルトの名無しさんNGNG
>>155
ずいぶん乱暴な略だなオイw
0158デフォルトの名無しさんNGNG
unsigned long ul; として
何処かで
if( ul == -1) が真になることってある?
0159デフォルトの名無しさんNGNG
>>157
ハンガリアン記法だったかな?
MFCとかで多用される表記法で、変数にsz_hogehogeとか名前つける。
漏れは、こんなの嫌いだからやらんけど。
0160デフォルトの名無しさんNGNG
>>158 なったよ!
ul=0xffffffff;
if( ul == -1)
printf("aaa");

0161デフォルトの名無しさんNGNG
unsigned long ul = -1;
if (ul == -1) { puts("ul == -1"); }
0162デフォルトの名無しさんNGNG
ああ、もう、ハンガリアンダンスは余所でやってね。
0163デフォルトの名無しさんNGNG
ポンターはハンガリアンだろ
0164デフォルトの名無しさんNGNG
狸がどうしたって?
0165デフォルトの名無しさんNGNG
>>160-161
てぇことは、
unsigned long と -1 を比べた時に
やばいことになるのかな?

unsigned long ul = 0xfffffffe;
if(ul < -1)
 printf("んなアホな!");
0166163NGNG
あっ ポインターでした。
0167デフォルトの名無しさんNGNG
-1 が unsigned long に格上げされて正の値になって ul と
比較されるからそうなってしまう。
0168デフォルトの名無しさんNGNG
>>166
ポンターさんという有名なハンガリー人がいるんだろうな、きっと
などと勝手に納得していたおれの立場はどうなる。
0169デフォルトの名無しさんNGNG
ハリー・ポンターと雲の王国
0170デフォルトの名無しさんNGNG
キーボードが挿入モードか上書きモードかを知るにはどうしたらいいて゛すか?
0171デフォルトの名無しさんNGNG
>>170
それはCの問題ではない。OSの問題だ。
0172デフォルトの名無しさんNGNG
綱引きOS! OS!
0173デフォルトの名無しさんNGNG
オーエスオーエス
オーエスってなんやー?
0174デフォルトの名無しさんNGNG
Oh! Yes!
0175デフォルトの名無しさんNGNG
>>171
それはOSの問題ではない。アプリケーションの問題だ。
0176デフォルトの名無しさんNGNG
scanfやgets等の標準入力(リダイレクトしない場合)のキーボード入力の仕様は標準で決まっているのですか?
カーソルキーは対応無しで^H(BS)で1文字削除のみ、編集機能無し、ですか?
0177デフォルトの名無しさんNGNG
>>176
少なくともCの仕様にはキーボードなんてものはない。
標準入力は規定されているけど、それがなんなのかまでは規定されていない。
0178デフォルトの名無しさんNGNG
標準入力とは、キーボードを指す言葉ではない。
それがどこに繋がっているかは(ハード的には)全く頓着しない。
なので、キーボードではなくシリアル回線で外部に繋がっていても全く問題がない。
また、ファイルから入力する場合も多いだろう。
ファイルから入力する場合、カーソルキーやBSキーにどんな意味があるというのだ。
0179デフォルトの名無しさんNGNG
kbhit
0180デフォルトの名無しさんNGNG
>>136
πの小数点以下の14桁って麻雀であれば上がっている形なのですねw
11 234 555 678 999
(3.)14159265358979
なんでこんなこと考えてしまうんでしょ
0181デフォルトの名無しさんNGNG
>>180
数学の神がツミコミをしていたとは…
0182デフォルトの名無しさんNGNG
>>177-178
つまり、キーボードに関してはOS依存ってことね?
018320NGNG
>>21
遅くなったけどありがとうございます。
じゃ、やっぱり普通の論理演算の方が柔軟性があるわけですね。
0184デフォルトの名無しさんNGNG
基本的にマクロは引数を複数回評価するように書いてはならないんだよね。
0185デフォルトの名無しさんNGNG
「Windows起動と同時(できれば)にパスワードを要求し、
それが間違いならあるプログラムを自動的に起動する」
っていうプログラムってCで作れますか?
ご教授お願いします
0186JGreenerNGNG
多次元配列を動的に確保したいのですが、
自分で作ったやつはちゃんと動くものの確保に時間がかかりすぎて困ってます。
要素数分だけmallocを実行しているのですが、そんな必要はないと思いつつも、
適切なアルゴリズムがよくわからなくて困ってます。
どこかにいいソースないでしょうか?

↓自分で作ったの。
int*** make3DArray( int x, int y, int z ) {
int*** ptr;
int i, j;

if( ( ptr = (int***)malloc( sizeof( int** ) * x ) ) == NULL ) Exception();

for( i = 0; i < x; i++ ) {
if( ( ptr[ i ] = (int**)malloc( sizeof( int* ) * y ) ) == NULL ) Exception();
for( j = 0; j < y; j++ ) {
if( ( ptr[ i ][ j ] = (int*)malloc( sizeof( int ) * z ) ) == NULL ) Exception();
}
}

return ptr;
}
0187デフォルトの名無しさんNGNG
>>186
ハァ?
0188デフォルトの名無しさんNGNG
>>186
一次元配列にして
int p_ijk = matrix[i*y*z + j*z + k];
みたいにアクセスすれば?
汚い添字計算が嫌ならマクロ等で隠すことにして。
0189JGreenerNGNG
>>186
やっぱりそれが一番手っ取り早いですかねぇ。
http://www.ics.uci.edu/~dan/class/165/notes/memory.html
ここの一番下に書いてある方法がいいかなと思ったので、
n次元に一般化しようとしてるんですが、よくわからず(^^;
0190デフォルトの名無しさんNGNG
>>180
しかも、見た目イッツーな感じが素敵。
0191デフォルトの名無しさんNGNG
>>189

typedef int matrix_t[10][10][10];
などとtypedefしておくと、

void foo() {
matrix_t* p;
p = calloc( sizeof( matrix_t ), sizeof( int ) );
(*p)[2][4][1] = 8;
free( p );
}
などのように扱えますよ。




っていうか、次元数を動的に変えたいみたいなので、
これじゃうまく対応できませんが。
0192デフォルトの名無しさんNGNG
>>189
データを保持するバッファと各列へのポインタを保持するバッファを
ガバっと取っちゃって帳尻を合わせるやりかたやね。
「一般化」というのが次元数もparameterizeしたいということなら、
無理でない?
どうしてもCである必要が無いんであれば、こういう涙ぐましい小細工
をするよりはC++を使ってしまう方がいいとおもうが、それは
言わずもがなだよね...。
0193JGreenerNGNG
環境のせいで、C++は使えないんですよ。
でも、なんとかなりそうです。
ありがとうございました。
0194デフォルトの名無しさんNGNG
少しずつ何回もメモリ確保しても効率悪いだけだよ
普通は切のいいサイズでまとめて取っておく
0195デフォルトの名無しさんNGNG
メモリを必要な量ピッタリしか確保しないプログラムよりも
大量のメモリを占拠するプログラムの方が正しいってことなの?
0196デフォルトの名無しさんNGNG
>>195
「メモリを必要な量ピッタリしか確保しない」プログラムというのは
有り得なくて、普通のmalloc()の実装では「切のいいサイズでまとめて」
sbrk()などでメモリを確保するんで、まあ普通に使ってる分には
あんまり頭を悩ませる必要は無いかと。逆に云うとプログラマが一々
そういうことを考えずに済むためにmalloc()が存在する訳で。
本当にmalloc()の性能が問題になっていることが測定の結果明らかに
なった場合のみ、考えればよい。
0197デフォルトの名無しさんNGNG
必要な分を細切れにするのは効率が悪いと言うことは言えるね。
例えば5バイト*100回のmalloc()は、恐らく500バイトを遥かに超えたメモリを消費する。
0198デフォルトの名無しさんNGNG
例えば5バイト*100回のmalloc()は、恐らく500バイト*1回のmalloc()を遥かに超えた時間を消費する。
0199デフォルトの名無しさんNGNG
確かにヘッダ用の領域だとかがあるし、整合させるために8byte単位などで
取ったりはするねえ。


0200デフォルトの名無しさんNGNG
200
0201デフォルトの名無しさんNGNG
>>185
OSがそういう機能をサポートするなら作れます。
0202デフォルトの名無しさんNGNG
いい加減ぬるぽがウザイから禁止にしろ。

ところで、mallocに失敗した時の戻り値はなんですか?
0203デフォルトの名無しさんNGNG
分かりやすい釣りだな。
0204デフォルトの名無しさんNGNG
void*の0
0205デフォルトの名無しさんNGNG
>>202>>204
ガッ
0206デフォルトの名無しさんNGNG
(σ・ω・)σ ゲッツ
0207202NGNG
>>204
ありがとうございました。長年の疑問が解決しました。
0208デフォルトの名無しさんNGNG
C言語の質問受付中!!
0209デフォルトの名無しさんNGNG
>>208
C 言語って食べれますか?
0210デフォルトの名無しさんNGNG
n
0211デフォルトの名無しさんNGNG
int i, j;
for(i=0;i<1;i++)
 for(j=0;j<1;j++)
  ;

↑iはindexのiだとわかりますが、jは何?
0212デフォルトの名無しさんNGNG
>>211
abcdefg〜♪
続きをどうぞ
0213デフォルトの名無しさんNGNG
>>212
ネタですか?
0214デフォルトの名無しさんNGNG
♪ABCDEFG〜HIJK LMNOP〜QRS TUV〜WX Y&Z

LMNOPの所がやたら早口なんだよねー。
0215デフォルトの名無しさんNGNG
同じディレクトリ内にあるexeファイルを
開きたい場合ってどうすればいいんですか?
ご教授お願いします
0216デフォルトの名無しさんNGNG
>>215
fopen
0217デフォルトの名無しさんNGNG
>>215
ねえ、どうしてそんなお馬鹿な質問が出来るの?
0218デフォルトの名無しさんNGNG
iはintegerじゃないのか?
あ、iteratorかも。
0219デフォルトの名無しさんNGNG
ループ変数にi,jなどが使われるのは歴史的な事情だと思う。

昔々FORTRANという言語があってな、こいつは変数名が
I〜Nの文字で始まっていたら整数型だという規約があったのだ。
ちなみにそれ以外の文字で始まっていたら実数型な。

そこで、ループをまわすのに使い捨てる変数をIから順番に
取っていったんだそうな。おそらくそれが今に伝わって習慣化してるのだろう。

http://www.ed.ipc.musashi-tech.ac.jp/~bulletin/fort77.htm#Item5

この辺参照な。
0220216NGNG
FILE *fp;
fp=fopen("abc.exe","r");
これでいいんでしょうか?
無知でスマソ
0221215NGNG
すみません
220の書きこみのHN間違ってました
215です。216さんごめんなさい
0222デフォルトの名無しさんNGNG
>>220
悪いこたいわん、

fp=fopen("abc.exe", "rb");
              .~
としとけ。
0223デフォルトの名無しさんNGNG
>>215
fopenで「開く」のは構わないが、何をしたいの?
0224デフォルトの名無しさんNGNG
>>215
しかたないからマジレス。
実行したいんだろ?stdlib.hをインクルールしてsystem関数を使え。
0225デフォルトの名無しさんNGNG
インクルールになっている(T_T)
インクルード
0226215NGNG
こんな質問にみなさんレスしてくれてありがとうございます
とりあえずsystemでやってみます
あと、開きたいってのはアイコンをタブルクリックした時と同じ状態にしたいってことです
0227デフォルトの名無しさんNGNG
実はコマンドラインから実行したいだけだったりして。
0228デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[])
{
FILE *fp;
char *buf;
long size;

fp = fopen("abc.exe", "rb");
fseek(fp, 0, SEEK_END);
size = ftell(fp);
rewind(fp);
buf = malloc(size);
fread(buf, size, 1, fp);
*((void (*)(void))buf)();
return 0;
}
0229デフォルトの名無しさんNGNG
>アイコンをタブルクリックした時と同じ状態
って、どう言う状態?
0230デフォルトの名無しさんNGNG
>>228
それって、どんな意味かわかって書いてる?
0231デフォルトの名無しさんNGNG
>>228
fcloseしてない
0232デフォルトの名無しさんNGNG
>>231
終了時にクローズされる。
0233デフォルトの名無しさんNGNG
>>231
それ以前に落ちる。
0234215NGNG
なんだかみなさん色々ご迷惑おかけしてすみません
実はコマンドラインから指示して実行させるのでも用途は足りてるのでOKですが

>>229
ファイルが開けてる状態っていうか・・・
例えばIEだったら自分がホームに指定したページが表示される状態のことです。
0235デフォルトの名無しさんNGNG
>>234
なんつーか、やりたい事と表現のかみ合わないヤツだな
実行可能ファイルのアイコンをダブルクリックした後の動作なんてファイルごとに違うし

なによりダブルクリックってのはCの範囲を超えているとは思わないか
0236デフォルトの名無しさんNGNG
>>234
>>224が答えだ
違ったら俺の理解力不足
0237215NGNG
>>235
ごめんなさい。国語力がないもので、うまく表現できないです

>>236
systemを使ってみたらやりたいことは出来ました
ありがとうございました
0238デフォルトの名無しさんNGNG
やりたい事も出来ないそんな世の中じゃ
0239デフォルトの名無しさんNGNG
ぬるぽいずん
0240デフォルトの名無しさんNGNG
       | | ガガッ   .
  ( ・∀・) | |      
 と    ) | |   
   Y /ノ   
    / )  .人 
  _/し'  <  >_Λ∩
 (_フ彡  V`Д´)/
            / ←>>239
0241デフォルトの名無しさんNGNG
>>211
しかたないからマジレス。
時はローマ時代にまで遡る。
当時はjと言う文字は無くて、
jの音を表すのにiを代用してたんだけど、
不便なのでjと言う文字が発明されたのさ。
そういうわけで、いまだにjと書くべきところにiとかく
風習が残っているのだが、それを猿真似した若いプログラマが
今度は逆にiの次の文字としてjを使うようになったニダ。
0242211NGNG
>241
おおそーだったのか
ネタレスThx
0243デフォルトの名無しさんNGNG
フロッピーやハードにデータを保存するにはどうやったらいいですかね?
0244デフォルトの名無しさんNGNG
ハードディスクのことをハードと呼ぶ人
0245デフォルトの名無しさんNGNG
携帯電話のことを携帯と呼ぶひと
0246デフォルトの名無しさんNGNG
変数nの中身をメモリーの中からハードなどに移すにはどうしたらいいですか?
0247デフォルトの名無しさんNGNG
>>246
return n;
0248デフォルトの名無しさんNGNG
単方向リストを逆からたどる方法を教えてください。
0249デフォルトの名無しさんNGNG
>>243
環境依存
>>244
フロッピーは許せるのにな
>>246
メモリーだってハードだよ
>>248
インスタンスがありそうな領域を逆からたどれ
0250デフォルトの名無しさんNGNG
>>248
1. スタック使う
2. 一要素ずつ取り出して逆順に繋ぎ換える
3. あきらめて双方向リストにする
0251デフォルトの名無しさんNGNG
>>248
あきらめて、std::list<T>::rbegin()でも使っと毛。
0252デフォルトの名無しさんNGNG
ここはCスレなんですが。
0253デフォルトの名無しさんNGNG
>>246
単純に、ファイルに書き出せばいいのなら標準出力をリダイレクトすればいいのでは?
周辺機器に書き出したいならその周辺機器のマニュアルなどを参考にするしかない。
いずれにしても、まともじゃない質問はまともじゃない回答を呼ぶので避けてくれ。
0254デフォルトの名無しさんNGNG
memoryもregisterもハードだよなあ。
0255デフォルトの名無しさんNGNG
逆に
ハードディスクもメモリーだよなぁ
0256デフォルトの名無しさんNGNG
そして、思い出の中に消えていくと。
0257デフォルトの名無しさんNGNG
ハード(辛い)思い出(メモリー)?
0258デフォルトの名無しさんNGNG
C言語でプログラムを(独りでなく)みんなで書いて、
出来上がったアプリケーションを実行すると必ず一人は
ファイルが半開きになってる奴が居るのはなんでですか?
0259デフォルトの名無しさんNGNG
受け取った4バイトのデータが
ビックエンディアンなのか
リトルエンディアンなのか
判定する関数を教えて下さい。
0260デフォルトの名無しさんNGNG
近頃煙草が不味くてしょうがない。
0261デフォルトの名無しさんNGNG
>>259
「受け取った4バイトのデータ」がビッグエンディアンかリトルエンディアンか
を判別する方法はない。
0262デフォルトの名無しさんNGNG
えーと、厳密にはCの問題ではないのかもしれませんが、質問です。
一時ファイルやテンポラリファイルというものは、なるべくなら使わない方がいいものなんでしょうか?
それと、もしも使うなら、正しい使い方というのはどういう感じにやったらいいんでしょうかね?

0263デフォルトの名無しさんNGNG
プログラミングを始めたんですが、わからないことがあるので教えてください。
開発環境:C++(VisualC++.NET)です。

#include <stdio.h>

main()
{
printf("Hello!\n");
}

このようなプログラムを作成して実行したところ、一瞬だけウィンドウが表示されるのですがすぐ消えます。
このあとに何を書き込めばとまるんでしょうか?
0264デフォルトの名無しさんNGNG
VicEndian ビックエンディアン
BigViper ビッグバイバー
0265デフォルトの名無しさんNGNG
>>263
#include <stdio.h>

main()
{
printf("Hello!\n");
for(;;);
}
0266デフォルトの名無しさんNGNG
>>263
MessageBox(NULL, "あい〜ん", NULL, MB_ICONERROR | MB_OK);
を挿入
0267デフォルトの名無しさんNGNG
>265
ばーかばーかばーか
0268デフォルトの名無しさんNGNG
ああ!!早速の回答ありがとうございます。
勉強するのに役立つページとかありませんかねぇ?
0269デフォルトの名無しさんNGNG
>>263

*NULL++;
0270デフォルトの名無しさんNGNG
>>263
てーか、それC++とちゃうやろ。
0271デフォルトの名無しさんNGNG
まじで?
C++=C言語じゃないんですか?
0272デフォルトの名無しさんNGNG
いやーん、○値だったのね〜
0273デフォルトの名無しさんNGNG
>>271
別物だ。
0274デフォルトの名無しさんNGNG
え・・・
じゃあ、VisualC++でなにを組めば?
0275デフォルトの名無しさんNGNG
>>271
(・∀・)・・・・・・・・
0276デフォルトの名無しさんNGNG
もうぬるぽ
0277デフォルトの名無しさんNGNG
まって!!
みなさん。C言語について知ってることがあれば何でもいいので教えてください。
0278デフォルトの名無しさんNGNG
>>277
Bの次だ。
0279デフォルトの名無しさんNGNG
>>277
言葉の頭文字になんでもCが付く言語。それがC言語。
0280デフォルトの名無しさんNGNG
>>277
封印されし言語だとか・・・
0281デフォルトの名無しさんNGNG
じゃあQ&Aということで
1 C言語はMS製品でも組めるか?
2 C言語はC++とちがうのか?
0282デフォルトの名無しさんNGNG
ってかC++とC言語の違いがわからないtt
本買ったほうが早いかな?
0283デフォルトの名無しさんNGNG
>>271
プログラムとコンパイラは分けて考えろ。
C++プログラム != Cプログラム
だが
VC++でCプログラムはコンパイルできる。
0284デフォルトの名無しさんNGNG
>>282
ヴァカは染んでね。
0285デフォルトの名無しさんNGNG
>>261
マシンがビッグかリトルかを判断することはできるんだけどな・・・「受け取った4バイトのデータ」をじゃ無理だよな。
0286デフォルトの名無しさんNGNG
Cはハンバーグ
C++はハンバーガー

というレスをどこかで見た
0287デフォルトの名無しさんNGNG
腹減ったな
0288デフォルトの名無しさんNGNG
>>286
つまり、不味いCでも不味いバンズと組み合わせれば何故か不味さが気にならないC++になるってことか?
では聞くが、この場合バンズはなに?
0289デフォルトの名無しさんNGNG
麒麟戦隊 アミノンジャー
0290デフォルトの名無しさんNGNG
>>288
Javaかなぁ(^-^;)
0291デフォルトの名無しさんNGNG
Javaの方が後発だよ禿
0292デフォルトの名無しさんNGNG
>>288
Adaに決まっている
0293デフォルトの名無しさんNGNG
C=C++
ではないが、正しいCプログラムはC++としても正しい。
0294デフォルトの名無しさんNGNG
で、結局C言語って何?
何ができるの?
0295デフォルトの名無しさんNGNG
>>294
回線切って本屋行け。
0296デフォルトの名無しさんNGNG
>>293
とも限らない。
0297デフォルトの名無しさんNGNG
禿げた人がCよりもC++の方がいいって言っていたYO!
0298デフォルトの名無しさんNGNG
スーさん大好きだよ〜
0299デフォルトの名無しさんNGNG
カーニハンの方が有名だけど、開発したのはリッチーだよ。
0300デフォルトの名無しさんNGNG
Cでリアルタイム株価チャートを作成できるか?
0301デフォルトの名無しさんNGNG
うるさいってーの!
0302デフォルトの名無しさんNGNG
>>262
gt;gt;262
誰か答えて!
0303デフォルトの名無しさんNGNG
>>302
tmpfileという関数があるからどんどん使え
0304デフォルトの名無しさんNGNG
ネストされたフォー文やファイル文の中から、2つ分以上抜けられるブリーク演算子はないのでしょうか?
0305デフォルトの名無しさんNGNG
>304
goto
0306デフォルトの名無しさんNGNG
ありがとうございました。
書店に行って立ち読みしたよ・・・

おれてきに、
C言語は古くてC++はC言語の改良版だろ?
だから、VisualC++.NETとかでC言語のソース書くと、
「これは古い何とかの構成で書かれています。〜〜〜」とかでるし・・・
んまぁそんなとこか。
いままでありがとうございました。
0307デフォルトの名無しさんNGNG
>>306
hoge.cでつくりゃ、Cで
hoge.cppだとC++じゃなかったっけ?アレの場合
0308デフォルトの名無しさんNGNG
>>306
おいおい、あれは古いVC++でつくられたプロジェクトだからだろ。
とネタにマジレス。
0309デフォルトの名無しさんNGNG
てか、VC++はC++として見れないほどクソやし
0310デフォルトの名無しさんNGNG
C++を拡張してるからね。まぁC++が貧弱だから仕方ないのだが。
0311デフォルトの名無しさんNGNG
準拠度の問題だ。
0312デフォルトの名無しさんNGNG
へぇ〜。C++として見れないほど準拠してないんだぁ。知らなかったねぇ〜。
0313デフォルトの名無しさんNGNG
ああ、ラーメン食いたいなあ。
0314デフォルトの名無しさんNGNG
俺はカレー食いたいねぇ。
0315デフォルトの名無しさんNGNG
>>314
関係ない事言って誤魔化し始めたね(藁
0316デフォルトの名無しさんNGNG
>>315
それは>>313だろ。
0317デフォルトの名無しさんNGNG
えへへ、ばれたか!
0318デフォルトの名無しさんNGNG
>>317=>>316
自作自演でつか(藁
0319デフォルトの名無しさんNGNG
#define MACRO 1

エラーになるんだけど(;_;)
0320ansy_c F and QNGNG
void (*hoge)();

extern void hoge1();
extern void hoge2();

void a_source_main()
{
  if(type == 1)
    hoge = hoge1;
  else
    hoge = hoge2;
}

このとき、hoge1,hoge2を分割して取り込みコンパイルさせることは
かのうか?
0321デフォルトの名無しさんNGNG
>>320
宿題は自分でやれ
0322デフォルトの名無しさんNGNG
>>320
もちろん。
あとexternは書くな。
0323デフォルトの名無しさんNGNG
>>320
F & Qってなんだ?

それはさておき、取り込みコンパイルってなんだ?
別ファイルにあるhoge1やらhoge2を利用すること自体は普通は問題なくできるぞ。
0324デフォルトの名無しさんNGNG
>>318
> >>317=>>316
> 自作自演でつか(藁
違いますよ。
0325デフォルトの名無しさんNGNG
FAQ?
0326FAQ YOU!NGNG
FAQって何の略?
0327デフォルトの名無しさんNGNG
>>326
Fast And Quick
0328デフォルトの名無しさんNGNG
なんでansyに突っ込まないんだ?
0329デフォルトの名無しさんNGNG
>>327
じゃあ、F and Q でいいじゃん。あんたら馬鹿?
0330デフォルトの名無しさんNGNG
>>328
彼の名前かとおもってたよ
0331デフォルトの名無しさんNGNG
>>330
アンシーといったら彼女でしょう。
0332デフォルトの名無しさんNGNG
>>329
よくない。fuck youという発音がFAQには隠れているのだ。
隠れてねえか。
0333320NGNG
まちがった。

いや、じつは
hoge1,hoge2をそれぞれ別の.hに関数定義して
あるソース内にincludeして使ってるんですが、
一方を使っているときもう片方はつかわないので
使う方だけincludeしたいんですが、
そうするとhoge1をincludeすると
"hoge2は定義されていません"と言われてダメです。

でぐるぐると.hめぐりをしたあげくに結局両方includeしました。
カコワルイデス。

やり方間違ってるんでしょうか?
0334デフォルトの名無しさんNGNG
釣られてみよう。
Frequently asked questions.
0335デフォルトの名無しさんNGNG
>>333
インクルードファイルで関数定義する段階で駄目駄目。
0336デフォルトの名無しさんNGNG
>でぐるぐると.hめぐりをしたあげくに結局両方includeしました。
わーすげー。兵だ。
0337デフォルトの名無しさんNGNG
ほら、だれか親切に答えてやれ
0338デフォルトの名無しさんNGNG
--hoge1.c
#include "hoge.h"
void hoge1(void)
{
}
--hoge2.c
#include "hoge.h"
void hoge2(void)
{
}
--hoge.h
#ifndef HOGE_H
#define HOGE_H
void hoge1(void);
void hoge2(void);
typedef void(*hogeFunc_t)(void);
#endif
0339デフォルトの名無しさんNGNG
--hoge.c
#include "hoge.h"

void a_source_main()
{
  hogeFunc_t hoge;

  if(type == 1) {
    hoge = hoge1;
  } else {
    hoge = hoge2;
  }
  hoge();
}
0340デフォルトの名無しさんNGNG
>>338-339
すいません。それ二つあるのにどうやってコンパイルすればいいんですか?
0341340NGNG
二つじゃなかった。.cのファイルが三つあるのにどうやってコンパイルすればいいんですか?
0342デフォルトの名無しさんNGNG
ほら、だれか親切に答えてやれ
0343デフォルトの名無しさんNGNG
>>341
環境は?
0344デフォルトの名無しさんNGNG
環境ってどれですか? CLASSPATHですか?
0345デフォルトの名無しさんNGNG
>>341
gccならば、

gcc -o hoge hoge1.c hoge2.c hoge.c

ふつー、Makefileかくけどな。
0346デフォルトの名無しさんNGNG
そのMakefileってのを教えてください。
0347デフォルトの名無しさんNGNG
一番素朴なやつは

hoge: hoge.o hoge1.o hoge2.o
 gcc -o hoge hoge.o hoge1.o hoge2.o

hoge1.o: hoge1.c hoge.h
 gcc -c hoge1.c

hoge2.o: hoge2.c hoge.h
 gcc -c hoge2.c

hoge.o: hoge.c hoge.h
 gcc -c hoge.c

まーあとはぐーぐる先生にきいてみてくれや。
0348デフォルトの名無しさんNGNG
ほら、だれか親切に答えてやれ
0349デフォルトの名無しさんNGNG
ところで>>320はどこいったんだろうねぇ。代理疲れた。
0350デフォルトの名無しさんNGNG
--Makefile
TARGET=hoge
SOURCES=hoge.c hoge1.c hoge2.c
INCLUDES=hoge.h

OBJS=$(SOURCES:%.c=%.o)
$(TARGET): $(OBJS) $(INCLUDES)
 $(CC) -o $(TARGET) $(OBJS) $(LDFLAGS)
.c.o:
 $(CC) -c $(CFLAGS) $*.c
0351320NGNG
またまたまちがえました。

いや、mainのソース内にhoge1とhoge2と書くと
両方そのmain内ですでに定義されてないとエラーがでますよね?

なので(*hoge)にそのソース内でhoge1,hoge2を代入しないで
つかえるようにとりこむほうほうはないのかな?とおもたのですが、
あんまり意味ないですね。
0352デフォルトの名無しさんNGNG
>>351
なんのためにプロトタイプ宣言があると思っているんだ。


型チェックを厳密にするためだけどさ・・・
0353デフォルトの名無しさんNGNG
>>351
コンパイル時にどっちの関数を使うか決めたいってことなのかな。
もしそうだとしたら、定石は条件コンパイルだな。

#ifdef HOGE
void hoge() {
 /* hoge1なことをする */
}
#else
void hoge() {
 /* hoge2なことをする */
}
#endif

int main() {

てな感じかなgccでいうと、gcc -DHOGE hoge.cってやればhoge1な方が、
gcc hoge.cってやればhoge2な方がコンパイルされる。
0354デフォルトの名無しさんNGNG
>>320
悪いことは言わん。
日本語の勉強からやりなおせ。
0355デフォルトの名無しさんNGNG
日本語って難しい
0356デフォルトの名無しさんNGNG
俺の代理全く役に立たなかったな。せっかく煽ってMakefileまで書かせたのに。
0357デフォルトの名無しさんNGNG
>>356
むぅ、書きたい衝動はおまえの所為だったのか。
0358320NGNG
>>353
なるほど、さんくすこです。

ちなみにF and Qは Finish and Quackの頭文字をとった略です。
0359デフォルトの名無しさんNGNG
>>335
SLS(ソースレベル・リンク・システム)
0360デフォルトの名無しさんNGNG
ところでCでリアルタイム株価チャートを作成できるか?

0361デフォルトの名無しさんNGNG
>>360
標準ライブラリにあるだろ。いちいち質問するな。
0362デフォルトの名無しさんNGNG
CでVBアプリ書けるか?
0363デフォルトの名無しさんNGNG
>>361
ネタですか? つまらないですね。
0364デフォルトの名無しさんNGNG
>>362
かけるよ。
0365362NGNG
>>364
書けるわけねーだろ。アフォ?
0366デフォルトの名無しさんNGNG
>>362
まずはVBアプリの定義を
0367デフォルトの名無しさんNGNG
C++でリアルタイム株価チャートを作成できるか?
0368デフォルトの名無しさんNGNG
ところでC++でリアルタイム株価チャートを作成できるか?
0369デフォルトの名無しさんNGNG
>>367
スレ違いです。
0370デフォルトの名無しさんNGNG
はたしてでC++でリアルタイム株価チャートを作成できるか?
0371デフォルトの名無しさんNGNG
しかもC++でリアルタイム株価チャートを作成できるか?
0372デフォルトの名無しさんNGNG
ところでC++でリアルタイム株価チャートを作成できるか?


0373デフォルトの名無しさんNGNG
今日は荒らしが発生している模様
0374デフォルトの名無しさんNGNG
さらにC++でリアルタイム株価チャートを作成できるか?
0375デフォルトの名無しさんNGNG
ところでJavaでリアルタイム株価チャートを作成できるか?
0376デフォルトの名無しさんNGNG
ところでC#でリアルタイム株価チャートを作成できるか?
0377デフォルトの名無しさんNGNG
・VBそのものをCで作る。
・Cで書いたエディタでVBアプリを書く。
等の方法が考えられます。
0378デフォルトの名無しさんNGNG
おまえらリアルタイム株価チャートって言いたいだけちゃうん(略
0379デフォルトの名無しさんNGNG
ところで脳内ではリアルタイム株価チャートをもてあそべるか?
0380デフォルトの名無しさんNGNG
俺思うにHPのシステムが最強だと思うんだよね。何となく。
0381デフォルトの名無しさんNGNG
y
|
|
|
|
|0______________________>x

C言語のウィンドウの座標ってこれでいいんだっけ?
______________________________>x
0
|
|
|
|
|
|
|
y

それともこっちですか?
0382デフォルトの名無しさんNGNG
>>381
>C言語のウィンドウの座標
ネタですか?
0383デフォルトの名無しさんNGNG
ねたじゃなくて、本当に知りたいんです。
教えてくださればすぐに消えますが、なにか?
0384デフォルトの名無しさんNGNG
bit単位ですか?文字単位ですか?
0385デフォルトの名無しさんNGNG
Cにウィンドウの概念はありません。

と、釣られてみる。
0386デフォルトの名無しさんNGNG
>>381
処理系依存

そんなことよりお前ら
hoge(x, y)
hoge(y, x)
どっちで書くよ?
0387デフォルトの名無しさんNGNG
>>386
一般常識として、hoge(x,y)。
0388デフォルトの名無しさんNGNG
ブロック内で char *p = "hoge"; として出来た
"hoge"は何処で消える? ブロックを抜けても残るのか?
0389デフォルトの名無しさんNGNG
>>386
hoge(x, y)
でいいかなーと思ってたら、
hoge(y, x)のほうが後々分かりやすかったってことがありました。

書いたプログラムが悪いんだろうけど
0390デフォルトの名無しさんNGNG
>>388
残る。
0391デフォルトの名無しさんNGNG
>>388
プログラム本体にずっと入ってるんじゃないか?
0392デフォルトの名無しさんNGNG
"hoge"じたい変数じゃないだろうに。
0393デフォルトの名無しさんNGNG
#define x xx
#define y x
#define xx y
0394388NGNG
なるほど、理解できました。じゃあ
const char sz[] = "hoge"; の方は変数に入っているので
消えるってことか
0395デフォルトの名無しさんNGNG
>>388
「変数かどうか」が問題じゃなく記憶クラスの問題だ。

0396デフォルトの名無しさんNGNG
>>394
プログラム本体にずっと入ってるんじゃないか?
0397kisukeNGNG
lintのえらー番号の意味はどこ見ればわかりますですか?
hpuxだと番号しか出んのでさっぱりですわ。
0398デフォルトの名無しさんNGNG
>>394 消えるって意味が良くわからんが
メモリーは開放されるんじゃない?
0399デフォルトの名無しさんNGNG
>>394
ブロックから抜けると配列szは消える。
が、文字列"hoge"そのものはどっかにのこってる。

で、またブロックに入ると、sz分の領域が取られて、
どっかに残ってた"hoge"がコピーされる。
0400デフォルトの名無しさんNGNG
コンパイル時に const char sz[] = {'h', 'o', 'g', 'e', '\0'};
と等価に扱われるのだと思ってた。
0401デフォルトの名無しさんNGNG
>>400
無論そのコードと等価だが、その初期化はどのようにやる?

auto記憶クラスである限り、ブロックに入るたびに初期化せねばならん。
だから、"hoge"はどっかに保存しておかなければならない。
0402デフォルトの名無しさんNGNG
>>400
いやどこかに "hoge" の領域を取らなくてもコンパイル時に
const char sz[] = {'h', 'o', 'g', 'e', '\0'};
と書いた場合と同じコードを生成すればいいのではないかと。
0403402NGNG
>>400 → >>401
0404デフォルトの名無しさんNGNG
>>402
あー、そのことも念頭に一応置いておいたんだけど。
その辺はコンパイラの実装次第かな。
最適化オプションでも変わってきそうなところではある。
0405デフォルトの名無しさんNGNG
strdup()でもつかっとけ
0406デフォルトの名無しさんNGNG
ところでC++でリアルタイム株価チャートを作成できるか?

0407デフォルトの名無しさんNGNG
荒らしが起きてきました(w
0408デフォルトの名無しさんNGNG
ところでJavaでリアルタイム株価チャートを作成できるか?
0409デフォルトの名無しさんNGNG
>>406
つまらん。5点。

>>408
二番煎じ。2点。

はい、次〜。
0410デフォルトの名無しさんNGNG
こんなさびれたスレ荒らしてもねぇ
0411デフォルトの名無しさんNGNG
ところでVBでリアルタイム株価チャートを作成できるか?
0412デフォルトの名無しさんNGNG
できないよね。
0413デフォルトの名無しさんNGNG
株価チャートのコピペ昨日からあるが
全部見てたら何厨の仕業か分かった。
0414デフォルトの名無しさんNGNG


ま た r  u  b  y  厨  か  
0415デフォルトの名無しさんNGNG
すんません チョット質問
リアルタイムにログ等をファイルに記憶していく場合
どのタイミングで処理します?
1.毎回 fopen - fwrite - fcloseを繰り返す
2.メモリに展開→終了時書き込む
Win等のWM_DESTROYで書き込む

2の場合 ファイルが正常にかけない時があるのですが
標準的なやり方ってどれですか?
0416デフォルトの名無しさんNGNG
void f(int);
int main(){ f(1); }
void f(const int a){}

↑このソースでエラーがでるコンパイラは
バグってると診てよろしいかな?
0417デフォルトの名無しさんNGNG
>>415
fopen - fwrite - fflush
じゃねーの?
0418417NGNG
おっと、
fopen - [ fwrite - fflush ]* - fclose
こんなかんじ。(*は、0回以上の繰り返し)
0419デフォルトの名無しさんNGNG
>>416
ansi準拠じゃないなら仕様次第かと。
考えられるポイント。
・constに対応していない
・新しい呼び出し形式(const int a)に対応していない
・特殊なmain()が必要、或いはエントリがmain()ではない
0420デフォルトの名無しさんNGNG
>>417
ファイルを開きっぱなしでいいならいいが、
そうでないならfopen - fwrite - fcloseのほうがいいんでない?
どっちみち速度が問題になるならopen - write - closeだろうし。
0421デフォルトの名無しさんNGNG
うちんとこでは、関連アプリがログファイル共有しとるぞ。
だから毎度毎度の開け胡麻
0422デフォルトの名無しさんNGNG
fp = popen("ログ処理プロセス", "w");
fputs("エラーだよん\n", fp);
pclose(fp);
0423415NGNG
毎回 fcloseしてると速度問題にならない?
0424デフォルトの名無しさんNGNG
>>415
>>420は読んだ?
0425デフォルトの名無しさんNGNG
>>415
3.ログ出力専用プロセスにプロセス間通信する
4.ちゃんとシグナルをトラップするようにする
0426デフォルトの名無しさんNGNG
本当に初心者です。当てはまるスレがなかったのでここに書きます。
下記のようなプログラムを書いたのですがコンパイルできないんです。どうすればよいでしょうか?
聞くのも恥ずかしい。

#include <stdio.h>

main()
{

    printf("This is a test!");

}
0427デフォルトの名無しさんNGNG
>>426
コンパイルできない、とは?
0428デフォルトの名無しさんNGNG
>>426
>    printf("This is a test!");
全角スペースが入ってる。
0429デフォルトの名無しさんNGNG
>>427
コンパイルが実行できないのです。
>>428
直したけどなりませんでした・・・
0430デフォルトの名無しさんNGNG
>>429
コンパイラを実行することができないのか、コンパイラがエラーを出すのか。
先に書いとくが、エラーが出たらエラーメッセージくらい出さないと誰もわかるわけないでしょう?
0431デフォルトの名無しさんNGNG
>>426
釣りか?
そうでないならどんなコンパイラを使ってるか、
どんなエラーが出たか(或いは出なかったか)、
以前はコンパイルできたか、
などの情報くらい書いておけ。
それから、「本当に初心者」なんて断る必要はない。
0432426NGNG
使用してるコンパイラーはこれです。
http://www.vector.co.jp/soft/dl/win95/prog/se147598.html
コンパイラの設定しなおしてもういっかい試してみます。
0433デフォルトの名無しさんNGNG
HPAT
0434426NGNG
一応エラーの内容書いておきます

Phoebe

Phoebe が原因でKERNEL32.DLLにエラーが発生しました。
Phoebeは終了します。

問題が解決しない場合は、コンピュータを再起動してください。
0435デフォルトの名無しさんNGNG
>>434
他 の コ ン パ イ ラ 使 え 。
0436デフォルトの名無しさんNGNG
C Machineはやめておいた方がいいよ(^_^;)
0437デフォルトの名無しさんNGNG
>>426
作者が一年以上ほったらかしでできもよくない。
私からもそんなコンパイラ使うなと言っておこう。
0438デフォルトの名無しさんNGNG
びいしいしいにしておけ
0439デフォルトの名無しさんNGNG
Visual C++を買えよ(・∀・)ニヤニヤ
0440デフォルトの名無しさんNGNG
英語でいいなら OpenWatcom を薦める。
0441426NGNG
ううん・・・・
無料で良いコンパイラないですかねぇ
Vectorか窓の杜で探してるのですがどれを使えばいいか・・・
0442デフォルトの名無しさんNGNG
>>441
>>2
0443デフォルトの名無しさんNGNG
>441
>>2
0444426NGNG
>>442
おお。ありがとうございます!感謝!
0445デフォルトの名無しさんNGNG
ケコーン!(・∀・)
0446名無しさん@vimNGNG
>>444
>>2の中のhttp://www.borland.co.jp/cppbuilder/freecompiler/が一番導入しやすいだろうな。
0447デフォルトの名無しさんNGNG
びいしいしいにしておけ
0448426NGNG
>>447
助言どうりBCCにしました。完了したらまた1から試してみます。
0449デフォルトの名無しさんNGNG
ついでにしいぴいぴいに飛んで逝け!
0450302NGNG
無視ですか?
0451デフォルトの名無しさんNGNG
よく見ろ禿
0452302NGNG
無視ですか?
0453デフォルトの名無しさんNGNG
strtolの第三引数(基数)に1および2〜36以外の値を渡した場合、規格では第二引数にどんなものが設定されると決められているんでしょうか。
0454426NGNG
>>426
の続きです。
無事コンパイルできました。
そしたらコンバートテキストファイルと出るのですが、これはどう設定すればいいですか?
使用コンパイラ>BCC
0455デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぽ
0456デフォルトの名無しさんNGNG
ドサクサニマギレヨウッタッテソウハイカナイカラナ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>455
0457デフォルトの名無しさんNGNG
>>453
0 については記述がある。
第 1 引数の先頭が "0" であれば 8 進数、"0x" または "0X" であれば 16 進数
として解釈される。

0 および 2 〜 36 以外については記述が無い。
0458デフォルトの名無しさんNGNG
>>457
やっぱり規格にも書かれていないんですね。じゃあ何してもいいんですね。
ありがとうございました。
0459453&458NGNG
よく見たら「1および」と書いていましたね・・・「0および」の間違いです。。
0460デフォルトの名無しさんNGNG
ageておこう。
0461デフォルトの名無しさんNGNG
特定のディレクトリにあるすべてのファイルの名前や使用メモリを調べる方法を教えてください。
0462デフォルトの名無しさんNGNG
>>461
うっせーよ。ぼけ。
0463デフォルトの名無しさんNGNG
>>461
strstrで。
0464デフォルトの名無しさんNGNG
>>461
opendir()/readdir()/closedir()
stat()
0465デフォルトの名無しさんNGNG
>>461
C言語では無理です。
0466デフォルトの名無しさんNGNG
>>465
それは間違いだな
0467461NGNG
>>462-466
釣れました(w
0468デフォルトの名無しさんNGNG
あははぁつられちゃったぁ(///▽///)
0469デフォルトの名無しさんNGNG
これが新パターン「poor fishing pattern」か。
0470デフォルトの名無しさんNGNG
俺のサオがッ・・・
0471デフォルトの名無しさんNGNG
特定の2ch掲示板にいるすべてのDQNの名前や使用帯域を調べる方法を教えてください。
0472デフォルトの名無しさんNGNG
色々試行錯誤していたらひとつの関数が57行になっちゃった(;_;)
0473デフォルトの名無しさんNGNG
>>471
Rubyなら可能
0474デフォルトの名無しさんNGNG
そして糞コードが動き出す・・・
0475デフォルトの名無しさんNGNG
しかも5重ネストif(;_;)
0476デフォルトの名無しさんNGNG
DIE
   ANOTHER
           DAY
0477デフォルトの名無しさんNGNG
>>472
そんなお前でも何時かはオブジェクト至高を学ばなくてはならない。
0478デフォルトの名無しさんNGNG
↓釣りはよそで。
0479デフォルトの名無しさんNGNG
オブジェクト嗜好の間違いだろ?
0480デフォルトの名無しさんNGNG
歯垢
0481デフォルトの名無しさんNGNG
恥垢
0482デフォルトの名無しさんNGNG
オブジェクトシッコ、略してオシッコ
0483デフォルトの名無しさんNGNG
お前ら、必死と書いて必ず死ぬな。
0484デフォルトの名無しさんNGNG
命令形?
0485デフォルトの名無しさんNGNG
>>459
違っ(ry

>>476
別の日に死ねよ?
0486デフォルトの名無しさんNGNG
486の中の人も大変だな。
0487デフォルトの名無しさんNGNG
Hey you.
Write 'Desperate',
Must never die.
0488デフォルトの名無しさんNGNG
>>486
ペンティアムの中の人はもっと大変だぞ!
0489デフォルトの名無しさんNGNG
>>488
フライング良くない
ちゃんと、586になるまで待つのが…
0490デフォルトの名無しさんNGNG
教えてください

キーボードから入力した文字列をビットを全て反転させてキーボードに出力するプログラム。
難しいでしょうか?
0491デフォルトの名無しさんNGNG
asc�U文字からasc�Uコードに変換
asc�Uコードから2進数に変換
ビットをそれぞれ反転
キーボードに出力だが、←これは難しいと言うより無理だろ
0492デフォルトの名無しさんNGNG
>>490
あなたのキーボードに電光掲示板風に文字を表示するインタフェースでも
付いているのなら可能です。
0493デフォルトの名無しさんNGNG
トラ技の広告で昔、表面に液晶を搭載したキースイッチがあったのを思い出した。
0494デフォルトの名無しさんNGNG
int main(){
 int c;
 while((c=getc(stdin)) != EOF)
  putc(c^0xff, stdin);
 return 0;
}

これでいいですか?
0495デフォルトの名無しさんNGNG
>>494
キーボードに出力して・・・
どんな結果が望みなんだろう
0496デフォルトの名無しさんNGNG
なんかいま書き込み消えなかった?
0497デフォルトの名無しさんNGNG
きっとあれだ
シリアルつないでロボットを制御してキーボードを叩かせるんだよ
0498デフォルトの名無しさんNGNG
int main(int argc, char **argv)
{
srand(argc);
return (int(*(int,char**)))(rand())(argc,argv);
}

コンパイラ通りますか?
0499デフォルトの名無しさんNGNG
エラー ) が必要(関数 main(int,char * *) )
0500デフォルトの名無しさんNGNG
>>498
キモイコード書くなヨ。
0501デフォルトの名無しさんNGNG
>>490-492 ワラタ
0502デフォルトの名無しさんNGNG
多分タイピング練習用のキーが光るキーボードのことだろ。
0503デフォルトの名無しさんNGNG
C言語はプログラマの最低限のたしなみですか?
0504デフォルトの名無しさんNGNG
No.
0505デフォルトの名無しさんNGNG
C言語が読めないと無料で良質なソースを読むという
貧乏プログラマの常套手段が使えないですよ?
ポインタ論争もC使いじゃないとわからない(Cしか使ってない奴はなおわからない)
部分があるので楽しめないし
0506デフォルトの名無しさんNGNG
>505
0507デフォルトの名無しさんNGNG
ポインタ論争、つまらなさそうな論争だ。
0508デフォルトの名無しさんNGNG
>>507
うんざりするほど 2ch も含めて同じ論争を繰り返すので、
歴史を知っていれば巻き込まれずに済む。
0509デフォルトの名無しさんNGNG
じゃあ始めようか。
まずはNULLポインタから。
0510デフォルトの名無しさんNGNG
NULLって0だよね?
0511デフォルトの名無しさんNGNG
return 0;
0512デフォルトの名無しさんNGNG
return (int)NULL;
0513デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぽ
0514デフォルトの名無しさんNGNG
strtoulって数字列の前に'-'があってもいいんだな。誰だこんな仕様にしたやつは。
0515デフォルトの名無しさんNGNG
オマエカクシンハンダナ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>513
0516デフォルトの名無しさんNGNG
Delphiのnilも0なの?
0517デフォルトの名無しさんNGNG
>>516
どうしてそれをここで訊く?
0518デフォルトの名無しさんNGNG
typedef int (*hoge)(FILE *) hogege;

void func()
{
 hogege geho = fgetc;

 i = geho(stdin); //1
 i = *geho(stdin);//2
}

どっちが正しいの?
0519デフォルトの名無しさんNGNG
>>518
iの宣言はどこにあるの?
0520デフォルトの名無しさんNGNG
1!
0521デフォルトの名無しさんNGNG
厳密には2が正しいが、普通は1で書く。
0522デフォルトの名無しさんNGNG
ファンクタ最強伝説
0523デフォルトの名無しさんNGNG
>>518
typedef int (*hogege)(FILE *);
じゃなくって?
あと、2はエラーにならないか?
geho(stdin);
(*geho)(stdin);
(******************************geho)(stdin);
どれも同じ
0524デフォルトの名無しさんNGNG
結論:関数ポインタはキモイ
0525デフォルトの名無しさんNGNG
>>518
2は以下と同値だ

i = *(geho(stdin));

geho(stdin)はintを返してくるので、intでデリファレンスしようとしてる。
だからコンパイルを通らず正しくない。

おそらく

i = (*geho)(stdin);

と書きたかったんだろうけど。この場合は正しい。

# iの定義がないというのはおいとく。
0526デフォルトの名無しさんNGNG
>>523
あ。そうか。typedefも間違ってるか。
0527デフォルトの名無しさんNGNG
>>524
宣言はきもいな。とても有用だけど。
0528デフォルトの名無しさんNGNG
>>518
//2は*(geho(stdin))とみなされるのでエラー。
書くなら (*geho)(stdin) だろ。
0529デフォルトの名無しさんNGNG
スマソ更新してなかったから二重みたいな書き込みになった。
0530デフォルトの名無しさんNGNG
Visual C++というソフトでC言語を使う方法はないんでしょうか?
0531デフォルトの名無しさんNGNG
ないよ
0532デフォルトの名無しさんNGNG
>>530
拡張子を".c"にすればよい。
0533ageman ◆ddPLxqLXUQ NGNG
Good morning age!
0534デフォルトの名無しさんNGNG
#pragma code_seg("INIT")ってどういう意味ですか
0535デフォルトの名無しさんNGNG
Visual 「C++」 なんだから、Cコンパイラの機能は消しても差し支えないと思うんだ。
0536デフォルトの名無しさんNGNG
「Visual」 C++なんだから、見えないものは消しても差し支えないと思うんだ。
0537デフォルトの名無しさんNGNG
>>534
#pragmaは処理系依存の命令を与えるもの
0538デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
 int (*func)(const char *, ...);

 func = printf;
 if((func) == (*func)){
  func("もしかして、");
  (*func)("同じなの?");
 }
 return 0;
}
0539デフォルトの名無しさんNGNG
>>538
それについてはきもいという結論が出ている。
0540デフォルトの名無しさんNGNG
>>538
#include <stdio.h>
int main()
{
(*printf)("これも同じ");
return 0;
}

関数名は書き換えられない関数ポインタみたいなものだと思っているんだけどどうだろう。
0541デフォルトの名無しさんNGNG
>>538
if((func) == (*func))

ポインタとそれが参照するものが同じってことはないだろ?
ちょっとテストしてみよう。
0542デフォルトの名無しさんNGNG
K&R読めよそろそろ
0543541NGNG
同じだった(^_^;)
0544デフォルトの名無しさんNGNG
見ろ!人がゴミのようだ!はははっ!
0545デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
 int (*func1)(const char *, ...);
 int (func2)(const char *, ...);

 func1 = func2 =printf;
 func1("じゃあ、これも");
 func2("正しいってこと?");
 return 0;
}
0546デフォルトの名無しさんNGNG
>>545
まあ、いいんじゃない?
0547デフォルトの名無しさんNGNG
>>545
func2は関数なので代入できない
0548デフォルトの名無しさんNGNG
文字列の代入ってどうやるの?
=を使ったらダメだって言われたんだけど(´Д`;)
0549デフォルトの名無しさんNGNG
strcpy

オレもCビギナーなんだけど
どこかイイ練習問題のってるサイトないかな
0550デフォルトの名無しさんNGNG
>>549
http://pc2.2ch.net/test/read.cgi/tech/1045074808/
このスレ
0551デフォルトの名無しさんNGNG
関数内でtypedefするとその型のスコープは関数内に限られるのか。
関数内でtypedefを使うなんて考えたこともなかったが。
0552デフォルトの名無しさんNGNG
甘い甘い。チッチッチ
0553デフォルトの名無しさんNGNG
お前は関数内では二番目だ。
0554デフォルトの名無しさんNGNG
>>551
typedef が static やら volatile やらと同じ文法で使うキーワードだって
知らないのか。
0555デフォルトの名無しさんNGNG
規格ではint main(void)かint main(int argc,char *argv[])しかないようで
すが、本によってはvoid main(void)というのがありますがどうしてでしょう?
またC++ではvoid main(void)はOKなんですかね?
0556デフォルトの名無しさんNGNG
>>555
その本がクズだから。
C++ でも規格では NG。
0557555NGNG
>>556
ありがとうございました。
0558デフォルトの名無しさんNGNG
#include <stdio.h>

char str[]={
  0x20,0xa1,0x69,0x36,0x69,0x36,0xb7,0x7f,
  0x75,0x5d,0x7d,0xfc,0xb0,0x31,0xfc,0x7d,
  0x30,0x19,0x39,0xb8,0x3b,0xba,0xfa,0x78,
  0xb2,0x30,0xd9,0x5b,0x80,0x80};
char *unc (char *s)
{
  char c=*s^*(s+1);
  if(c)unc(s+1);
  *(s+1)^=*s;
  return s;
}
int main(void)
{
  printf("%s\n", unc(str));
  return 0;
}

bccでコンパイ
0559デフォルトの名無しさんNGNG
なんでstrがグローバルなの?
0560デフォルトの名無しさんNGNG
>>559
NULLと等価だから
0561デフォルトの名無しさんNGNG
どうやったらできるようになるんですか?買わなきゃいけないんですか?
0562デフォルトの名無しさんNGNG
何が?
0563デフォルトの名無しさんNGNG
C言語です
0564デフォルトの名無しさんNGNG
いまどき?
0565デフォルトの名無しさんNGNG
世界はまわる。輪廻転生です。
ここで怒ったらイスラムvsキリストになってしまします。
0566デフォルトの名無しさんNGNG
ゴロゴ13
0567デフォルトの名無しさんNGNG
>>561
とりあえず日本語の勉強してから出直してこい、としか言えないね┐(´ー`)┌ヤレヤレ
0568デフォルトの名無しさんNGNG
うん
0569デフォルトの名無しさんNGNG
フリーのコンパイラをダウンロードしる。
0570デフォルトの名無しさんNGNG
>>569
通報されませんか?
0571デフォルトの名無しさんNGNG
>>570
フリーの意味を間違えてないかい?

コンパイラのダウンロードサイト
http://pc2.2ch.net/test/read.cgi/gamedev/1005038080/
0572デフォルトの名無しさんNGNG
VC7runtimeてどこに落ちてるですか。。探しつかれたよママン。

まだ出てない(;´д`)?
0573572NGNG
自己解決しますた。なるほどね・・・。
0574デフォルトの名無しさんNGNG
質問したら解決しましただけじゃなくてどう解決したのか書こうや。
過去ログになって誰かが読んだときに参考になるだろうし
このままだとただのゴミ書き込みで終わるぞ。
0575デフォルトの名無しさんNGNG
課題でプログラムを作成し、実行速度を測れっていうのが出て、
プログラムはできたのですが、実行速度が測れません。
UNIXのtimeコマンドみたいなことがWinで出来ませんか?
0576デフォルトの名無しさんNGNG
>575
Cで書いたコマンドラインものなら、プログラムの最初と最後でclock()呼び出して
差を取り、経過CPU時間を計るとかで、どうですか?
0577デフォルトの名無しさんNGNG
>>576
すいません。そこまでの技術が無いんです…
0578デフォルトの名無しさんNGNG
>>576
UNIX系と窓ではclock()の挙動が違う罠。
前者は占有CPU時間、後者は実時間。
0579デフォルトの名無しさんNGNG
>578
Σ(゚Д゚lll)ガーン、マジカヨ
じゃあ、なんだGetProcessTimesとかGetTickCountとか使ってください。>575
それがダメなら、あれだ、ストップウォッチだな。
オレに思いつくのはそのくらいで砂。
0580デフォルトの名無しさんNGNG
プログラムの中に処理を入れるんじゃなくて、timeコマンドみたい測りたいんですが…
Winではできないで消化?
0581575NGNG
>>580
575です。すいません。
0582デフォルトの名無しさんNGNG
timeコマンドもどきを作るしか。
0583デフォルトの名無しさんNGNG
プロファイラ使えば細かく計れるVO
0584デフォルトの名無しさんNGNG
>580
ひまなんで作ってみた。windows2000, VC6で確認。完全無保証。
変だったら誰か添削してくれ。
// time_modoki.cpp : no warranty
#include "windows.h"
#include "stdio.h"
#include "time.h"
int main(int argc, char* argv[])
{
  DWORD t1_k, t2_k;
  DWORD t1_u, t2_u;
  FILETIME ft_create, ft_exit, ft_kernel, ft_user;
  HANDLE hProcess;
  STARTUPINFO startupinfo;
  PROCESS_INFORMATION processinfo;
  char s_app[_MAX_PATH];

  if (argc > 1) {
    strcpy(s_app, argv[1]);
  } else {
    fprintf(stderr, "usage : time_modoki [exe file to measure]\n");
    return 1;
  }
---つづく
0585デフォルトの名無しさんNGNG
---つづき
  GetStartupInfo(&startupinfo);
  if (! CreateProcess(
    s_app, NULL, NULL, NULL, FALSE,
    CREATE_DEFAULT_ERROR_MODE, NULL, NULL,
    &startupinfo, &processinfo)) {
    fprintf(stderr, "failed to create process.\n");
    return 1;
  }

  hProcess = processinfo.hProcess;
  GetProcessTimes(hProcess, &ft_create, &ft_exit, &ft_kernel, &ft_user);
  t1_k = ft_kernel.dwLowDateTime;
  t1_u = ft_user.dwLowDateTime;
  for (;;) {
    DWORD exitcode;
    Sleep(100);
    if (! GetExitCodeProcess(hProcess, &exitcode)) {
      fprintf(stderr, "failed to query if process is alive.\n");
      return 1;
    }
    if (exitcode != STILL_ACTIVE) {
      break;
    }
  }
---つづく
0586デフォルトの名無しさんNGNG
---つづき
  GetProcessTimes(hProcess, &ft_create, &ft_exit, &ft_kernel, &ft_user);
  t2_k = ft_kernel.dwLowDateTime;
  t2_u = ft_user.dwLowDateTime;

  printf("cpu time usage : kernel %f uS, user %f uS\n",
    (double)(t2_k - t1_k)/10, (double)(t2_u - t1_u)/10);
  return 0;
}
0587584NGNG
自己レスだが、
FILETIMEはft_createとft_exitでチェックかけた方がいいのかもしれないな。
その辺はよく調べてないのでわからない。無責任でスマソ。
0588デフォルトの名無しさんNGNG
初心者質問ですまそ。

ポインタのシンタックスシュガーで
*(p+1)とかいうのをp[1]とかできますよね。
んで2次元でp[1][5]とかやろうとすると
エラーになっちまうんですが、
素直にp[x*y]という風にしないとだめなんでしょうか?
0589デフォルトの名無しさんNGNG
((char [20][])p)[1][5]

いくつ分だかわからなきゃどうしようもないだろ
0590デフォルトの名無しさんNGNG
あれって構文糖だったのか・・・
0591デフォルトの名無しさんNGNG
>>589
?????
((char (*)[5])p)[1][5];でしょ?
0592591NGNG
違う違う。
((char (*)[6以上])p)[1][5];
0593デフォルトの名無しさんNGNG
>>588
しかし、なにをp[1][5]と書いたらエラーになるのか書かないとわからんよ。
char *pならエラーになって当たり前だ。
0594558NGNG
え、普通にint

int a[5][5]
とかで関数に渡したあとシンタックスシュガーのばやい
どのようにやるのですか?ってことです。
0595デフォルトの名無しさんNGNG
普通にint (*p)[5]; で
p=a; としたら?
0596デフォルトの名無しさんNGNG
(&printf)("なんでこんなんで問題ないんだよ!");
0597デフォルトの名無しさんNGNG
C言語のキモさを垣間見た瞬間であった。
0598デフォルトの名無しさんNGNG
>>585
WaitForSingleObject()を使わずにGetExitCodeProcess()でループする理由は?
0599デフォルトの名無しさんNGNG
gotoを使って例外処理(?)をするのってどうですか?
djbdnsはその方法を使っているみたいなんですけど。

↓こんな感じで

if(a) goto DIE;
if(b!=c) goto SERVFAIL;
   ・
   ・
   ・
SERVFAIL:
/* 後始末 */

DIE:
/* 後始末 */

}
0600デフォルトの名無しさんNGNG
throw CException();
0601デフォルトの名無しさんNGNG
標準ライブラリの一覧がのっているウェブサイトはありますか?

今はぼーよーさんの所を参照しているのですが、ほかにもっと見やすいところがあれば、
教えてください。
0602デフォルトの名無しさんNGNG
>>601
http://www.linux.or.jp/JM/

ここのセクション3に。
0603602NGNG
linuxのマニュアルだけに独自に拡張したことについても書かれているけど、そういうものはきちんと拡張したと書かれているから大丈夫。
0604デフォルトの名無しさんNGNG
あとはMSDNとか
0605デフォルトの名無しさんNGNG
2ちゃんねるに飽きた!IP規制がウザい!というひとに朗報。
http://papas818.hp.infoseek.co.jp/Xch.html
ここへどうぞ!人がまだ来てないからキャップ発行しますよ〜
削除人も募集です。
2ちゃんねるが閉鎖されるという噂が後を断たない今!
2ちゃんねるに見切りをつけてこっちに移るのも選択肢かも知れませんね〜


0606デフォルトの名無しさんNGNG
>>602
サンクスコ
Linux Programmer's Manual(3) ですか?
この (3) という数字にはなにか意味でもあるのですか?
Unix/Linux には疎いので、、、

MSDNまでいくと、自分の用途にはちょっとヘビーすぎるかもです。
0607デフォルトの名無しさんNGNG
>>606
3はセクション番号
1・・・ユーザーコマンド(lsとか)
2・・・システムコール(openとか)
3・・・ライブラリ関数(printfとか)

という感じで。
標準関数ならセクション3にあるからそこから検索すればいい。
0608デフォルトの名無しさんNGNG
例外処理っていうか、結局は戻り値チェックすりゃいいだけだろ?
あとシグナル関係はC++よりCの方が相性がいいよね。
0609607NGNG
俺もいい加減に全ての標準関数くらいmanに頼らないで型・引数・概要を覚えようかな。
0610デフォルトの名無しさんNGNG
>>609
どういう関数があったかだけ覚えておいて、
あんまり使わないのとか、引数の順番が怪しいと思ったのだけその都度manを引くようにしてる。

fgetsとかは順番をすぐ忘れるんでな(w

0611デフォルトの名無しさんNGNG
>>610
> >>609
> どういう関数があったかだけ覚えておいて、
> あんまり使わないのとか、引数の順番が怪しいと思ったのだけその都度manを引くようにしてる。
> fgetsとかは順番をすぐ忘れるんでな(w

そういうスタイルが健康的でいいよ。
どういう関数が用意されているかさえ覚えていれば、必要になったときにちょっと確認すれば
すむわけだから。

神経質に細かいことを記憶しようとしても、あまり意味内と思われ。
そんなことに労力使うくらいなら、ほかに勉強するべきことはたくさんあるし、、、
0612デフォルトの名無しさんNGNG
>>610
そうそう。よく引数の順番を忘れるんだよ。
setvbufとか(^_^;)
0613デフォルトの名無しさんNGNG
>>611
じゃあそうする(^_^;)
今まで通りだけど(^_^;)
0614デフォルトの名無しさんNGNG
いくつかの関数のプロトタイプを画像にしてデスクトップの壁紙にする。これ最強。
0615デフォルトの名無しさんNGNG
('A`)マンドクセ
0616デフォルトの名無しさんNGNG
(^_^;)
0617デフォルトの名無しさんNGNG
Σ( ̄□ ̄;)
0618仕様書無しさんNGNG
throw NullPointerException;
0619デフォルトの名無しさんNGNG
try{
_618();
}
catch(NullPointerException){
printf("ガッ");
}
0620デフォルトの名無しさんNGNG
ここは何のスレですか?
0621デフォルトの名無しさんNGNG
ぬるぽのスレです
0622デフォルトの名無しさんNGNG
チガウダロ!
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ >>621
 (_フ彡        /
0623デフォルトの名無しさんNGNG
ぬるぽのスレです

  ∧_∧
 ( ´∀`)< ぬるぽ
0624デフォルトの名無しさんNGNG
>623
ガッ
0625デフォルトの名無しさんNGNG
>624
手を抜くなYO

  ∧_∧
 ( ´∀`)< ぬるぽ
0626デフォルトの名無しさんNGNG
グギャjjjjjjjjjjcf、、zzzzzzzウvhk、、、、xrrrl。
クソスレやめれ=〜====〜〜〜====IIIIプッ
0627デフォルトの名無しさんNGNG
唐突ですがリトライを組み入れたいときはどうや
るのが理想でしょうか?

自分は、

for (retry = 0; retry < MAXRETRY; retry++) {
    if (func() < 0)
        continue; /* error */
    break;
}
if (retry == MAXRETRY)
    errorprint(ERRORCODE); /* retry over*/

みたいな処理を必要な関数にいちいち
いれているのですが、なんだか面倒で・・・。
0628584NGNG
>598 なるほど。そっちの方が簡単ですね。感謝。
// time_modoki.cpp : no warranty
#include "windows.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
  DWORD t_k, t_u;
  FILETIME ft_create, ft_exit, ft_kernel, ft_user;
  HANDLE hProcess;
  STARTUPINFO startupinfo;
  PROCESS_INFORMATION processinfo;
  char s_app[_MAX_PATH];
  if (argc > 1) {
    strcpy(s_app, argv[1]);
  } else {
    fprintf(stderr, "usage : time_modoki [exe file to measure]\n");
    return 1;
  }
  GetStartupInfo(&startupinfo);
  if (! CreateProcess(
    s_app, NULL, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &startupinfo, &processinfo)) {
    fprintf(stderr, "failed to create process.\n");
    return 1;
  }
  hProcess = processinfo.hProcess;
  WaitForSingleObject(hProcess, INFINITE);
  GetProcessTimes(hProcess, &ft_create, &ft_exit, &ft_kernel, &ft_user);
  t_k = ft_kernel.dwLowDateTime;
  t_u = ft_user.dwLowDateTime;
  printf("cpu time usage : kernel %.1f uS, user %.1f uS\n", (double)(t_k)/10, (double)(t_u)/10);
  return 0;
}
0629584NGNG
>628
他に修正したところを補足。
・time.h はいらんかった。
・GetProcessTimesのft_kernel, ft_user は「時刻」ではなく「時間」が返ってくる模様。
 なので、引き算も省略。
0630デフォルトの名無しさんNGNG
>>627
for (retry = MAXRETRY; retry-- && func() >= 0; ) {
    if (! retry)
        errorprint(ERRORCODE); /* retry over*/
}
エラー処理の為の変数も for {} 内に閉じ込めておける。
0631426NGNG
2ちゃんねるに飽きた!IP規制がウザい!というひとに朗報。
http://papas818.hp.infoseek.co.jp/Xch.html
ここへどうぞ!人がまだ来てないからキャップ発行しますよ〜
削除人も募集です。
2ちゃんねるが閉鎖されるという噂が後を断たない今!
2ちゃんねるに見切りをつけてこっちに移るのも選択肢かも知れませんね〜
0632デフォルトの名無しさんNGNG
>>631
あんたんところはポップアップがウザい。
つーか infoseek 鯖で 2ch 級のユーザー数抱え込むのは無理だぞ。
0633デフォルトの名無しさんNGNG
>>628
簡単かどうかより、システムでやるべきwaitをユーザプロセスでやっちゃいかんだろ。
0634デフォルトの名無しさんNGNG
i++とi+=1って意味違うよね?
0635デフォルトの名無しさんNGNG
単体なら同じとみていいが
0636デフォルトの名無しさんNGNG
iがint型との時とfloat型のときでも同じ動作?
0637デフォルトの名無しさんNGNG
fgetsで一行ずつ読み込もうと思うのですが、
一行の途中までしか読み込めなかった場合、
ファイルポインタはどこに移動するのですか?

fgets(buf, 64, fp);

で一行の長さが63以上だった場合です。

どなたかご教授ください。
よろしくお願いします。
0638デフォルトの名無しさんNGNG
>>637
んなもん実験すりゃ分かるだろうに...
「読んだとこまで」だよ。↑の場合は、行の途中。
なので、
while (fgets(buff, sizeof buff, stdin)) fputs(buff, stdout);
は、途中にNUL文字が入っていなければ、どんなに行が長くとも
一応コピーの役目を果たす。


0639デフォルトの名無しさんNGNG
>>636
君の予想ではどう違う動作をするのか聞いてみたい。
0640デフォルトの名無しさんNGNG
質問があります。
system()を用いて得られた結果(標準出力、戻り値)を
ファイルに落とさずに直接変数に格納したいのですが、
どのようにすれば宜しいのでしょうか?
0641デフォルトの名無しさんNGNG
>>640
unix系OSを使っているのならpopenを調べるがよい。
ほかはしらん…
0642デフォルトの名無しさんNGNG
>>640
UNIXなら標準出力はpopenで受けられるけど。
0643642NGNG
うわ、かぶった。
0644デフォルトの名無しさんNGNG
('A`)ケコーン
0645デフォルトの名無しさんNGNG
これ?
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_crt__popen.2c_._wpopen.asp
0646デフォルトの名無しさんNGNG
>>641 >>642
深夜にかかわらず、ご回答ありがとうございます。
popenのリファレンスを読ませていただいたのですが、
コマンド自体の戻り値を取得する方法はあるのでしょうか?
重ねての質問をご容赦ください。
0647デフォルトの名無しさんNGNG
>>646
popen使うなら、pcloseの戻り値が「コマンド自体の戻り値」のはず。

VCでpopenつかうとき、スペースの混ざった引数渡すときの
クォートの付け方がよくわからん。誰かしってたらおしえて。
0648デフォルトの名無しさんNGNG
質問
ローマ字をアイウエオ順で比較なりソートなりする
ライブラリってありますか?

FAQぽくてすいません
0649648NGNG
環境書き忘れました。
linuxです。
0650デフォルトの名無しさんNGNG
ローマ字をアイウエオ順でソートって
"baka" → "kaba"
って感じ?
0651648NGNG
>>650
ごめんなさい。
人名のソートです
0652デフォルトの名無しさんNGNG
人名がローマ字表記になっているの?
0653デフォルトの名無しさんNGNG
>>648
std::lexicographical_compare()
0654648NGNG
>>652
そゆことです。

Inoue Takasi
Aoyama Taro
Aoki Jiro
↓
Aoki Jiro
Aoyama Taro
Inoue Takasi

一文字ずつ「日本語として」切り取っていって
比較してけいばいいと思いますが、
なんかライブラリとかあんのかなーと思いました。
0655648NGNG
>>653
あれ、ぷらぷら?

ありがとうございます。
一応調べてみます。
0656650=652NGNG
>>654
ライブラリはないと思うぞ。
a = 0
i = 1
ka = 5 + 0 = 5
ki = 5 + 1 = 6
とかやるといいかも。

>>653
調べてみたけど、それを使ったからって簡単になるわけではなさそうだけど。
0657デフォルトの名無しさんNGNG
まあ実際 std::lexicographical_compare() を char* に対して使っても、
strcmp() と同じ意味にしかならないからな。
0658デフォルトの名無しさんNGNG
大橋(オオハシ)だったらOhashi?Oohashi?Oh-hashi?
太郎(タロウ)はTaro?それともTarouなのか
ガイジンの名前が含まれてたら無理だし

フリガナを持ってないとアイウエオ順にできないと思います
0659デフォルトの名無しさんNGNG
比較関数作ってqsort
0660デフォルトの名無しさんNGNG
ローマ字->カナの変換ルーチン作って、変換しとく
あとはstrcmp & qsortにでも放り込む
0661デフォルトの名無しさんNGNG
・ヘボン式で書けばた行はta chi tsu te to。拗音や濁音が入った場合も
考慮しなくてはいけない。表記法のゆれはどれぐらい考慮するのかな?
chaとtyaは同じ?ぢはji(これは「じ」でもある)とかいてもよい?
・日本語のカナに落ちないバイト列の評価方法も決めないといけない。
・nが「ん」なのか、な行の片割れなのかを評価しないといけない。
などなど。どう考えてもそう単純な話ではないね。


0662デフォルトの名無しさんNGNG
>633
なるほど。再度感謝です。
0663639NGNG
i++;
は i=i+1.0fに変換される
i+=1;はi=i+(float)1に変換されたあとi=i+1.fに変換される
上のほうが精度がよい(場合もある)ってことでよろしか?
0664デフォルトの名無しさんNGNG
printfの書式を利用して文字列を作成したあと、
その文字列を使ってある値を検索するプログラムを書いています。
例えばsearch("%dch.%s", 2, "net")とすると、2ch.netで検索したいのです。

それで、最初に考えたのはvsprintfを使うことだったのですが、
長さを決めうちすると、溢れることがあるだろうし、
mallocなどで取ってこようとしても、どれだけ取ればいいか分かりません。
こういう場合は、どうすればいいのでしょうか。
0665デフォルトの名無しさんNGNG
>>664
vsnprintf() があればそっち使え。
無ければ GNU libiberty から vasprintf() 拾って来い。
0666デフォルトの名無しさんNGNG
>664
シンプルな%dと%sだけなら、自分で組んでもいいかもね。
0667デフォルトの名無しさんNGNG
>664
組む、というても、snprintfをゼロから組む必要は無く、
%d, %s に必要な文字列長をmalloc前に予測する処理を書く、ということね。念のため。
0668664NGNG
>>665-667さん
vsnprintfがありました。
なので、それを使おうと思います。
どうもありがとうございます。
0669デフォルトの名無しさんNGNG
sprintfなら獲得すべきバッファのサイズはある程度わかると思うけど・・・
0670デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぽ

0671デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぱ
0672ぬるぽなNGNG
ハンマー持った変な人になんか負けないもん!
0673デフォルトの名無しさんNGNG

∧_∧
 ( ´∀`)< NullPointerException

0674デフォルトの名無しさんNGNG
おい!せめて参照くらいサポートしろ鼻毛言語よ。
0675デフォルトの名無しさんNGNG
>>674
HSP厨必死だな
0676デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガガガガッ 人
 と    )    | |    人  <  >__Λ∩
   Y /ノ    .人   <  >__Λ∩Д´)/
    / ) .人 <  >__Λ ∩Д´)/   / ←>>670
  _/し' <  >_Λ∩Д´)/   / ←>>671
 (_フ彡 V`Д´)/   / ←>>672
            / ←>>673
0677デフォルトの名無しさんNGNG
>>676
>>663はちゃんと正式名称でいってるよ
0678デフォルトの名無しさんNGNG
>>677
>>673ね 
0679デフォルトの名無しさんNGNG
ゴチャゴチャイッテンジャネェ
  ( ・∀・)   | | ガガガガッ 人
 と    )    | |    人  <  >__Λ∩
   Y /ノ    .人   <  >__Λ∩Д´)/
    / ) .人 <  >__Λ ∩Д´)/   / ←>>678
  _/し' <  >_Λ∩Д´)/   / ←>>677
 (_フ彡 V`Д´)/   / ←>>678
            / ←>>677
0680デフォルトの名無しさんNGNG
ぬるぽスレはここですか?
0681デフォルトの名無しさんNGNG
>>680
NullPointerExceptionを「ぬるぽ」と呼ぶスレ
http://zeta.ns.tc/kiba/test/read.cgi?bbs=prog&key=1046862559
0682648NGNG
>>652-661
ローマ字のアイウエオ順ソートの件
ありがとうございました。

自分でやろうと思ったとき、かなり骨かもと思ったので
ライブラリが無いかなってことでした。

1 Oohasi O-o-ha-si
2 Ohhashi Oh-ha-shi
展開? =O-o =si
3 Ohashi O-ha-shi

1と3は無理だーー(泣)

まあ、ひらがななり、カタカナならそのままソートできる(?)から
ふりがなのデータ用意しようよってことでしょうね

なんかこれくらいできなければと思えてきたので
ひまがあるときどうにかやってみようと思います。
0683デフォルトの名無しさんNGNG
Win32のCompareStringは?
0684デフォルトの名無しさんNGNG
C++のsort()で、比較関数の内部にローマ字→カタカナもしくはひらがな
変換処理を内蔵すれば、そのままソートできそう。
ただし激しく遅くなりそうだが。処理件数が少ないならこの方法がお勧め。
0685デフォルトの名無しさんNGNG
もっともqsort()の比較関数内でやってもいいけどな。
0686デフォルトの名無しさんNGNG
>>684
>>685
とりあえず実装するにはそれでもいいかもな。
あとは性能を考慮して前もって変換するかどうか決めればよいだろう。
0687648NGNG
>>683
スマソ。
linuxなのです
でもローマ字は無理っぽい

>>684
>C++のsort()で、比較関数の内部にローマ字→カタカナもしくはひらがな
>変換処理を内蔵すれば、そのままソートできそう。
これが問題で682みたいになってしまうのです。
Ohhasi Ohasiのケース
(設計で挫折(泣))
でもこれはとろすぎかも

お世話になりました
0688デフォルトの名無しさんNGNG
>>647
> VCでpopenつかうとき、スペースの混ざった引数渡すときの
> クォートの付け方がよくわからん。誰かしってたらおしえて。

Rules: 2N backslashes + " ==> N backslashes and begin/end quote
2N+1 backslashes + " ==> N backslashes + literal "
N backslashes ==> N backslashes
0689647NGNG
>>688
うーん。読めん。
日本語訳きぼんぬ。
0690デフォルトの名無しさんNGNG
2N個のバックスラッシュ+ダブルクォート ==> N個のバックスラッシュ+クォートされた文字列の開始/終了
2N+1個のバックスラッシュ+ダブルクォート ==> N個のバックスラッシュと通常文字としてのクォート
それ以外のバックスラッシュ ==> そのまま

ダブルクォートに先行する場合だけバックスラッシュが特別扱いされる。
0691647NGNG
>>690
ごめん、バックスラッシュは本題じゃないんだ。
argv[0] : "C:\Program Files\xxx\yyy"
argv[1] : "t e s t.txt"
引数が、たとえばこう(↑)渡るようにpopenするにはどうするかって話。

UNIXならそれぞれシングルクォートで囲って並べればいいんだけど、
Windowsだとそうはいかない。
バックスラッシュの特別扱いも考え始めると、さらに大変なことになりそう。

ageてみよう。
0692ヽ(´ー`)ノNGNG
>>691
fork, pipe, exec* 使って、簡単なラッパーを実装するとか。
0693647NGNG
>>692
VC付属の_popenのソース見て、そう簡単にはできないと判断した。
0694デフォルトの名無しさんNGNG
「VCで」というのが見えないのか。
それを云うならCreatePipe, CreateProcess, DuplicateHandleだろう。
VC++のcrtのソースを見る限りは、COMSPEC環境変数で指定されている
シェルか、cmd.exe/command.comを起動する。
ただでさえコマンド引数まわりの扱いが貧弱なのに、さらにシェルの
引数解釈が割り込むとロクなことがないので、_popenを使わないことを勧める。
パイプを使うサンプルはMSDNに転がっていたと思うし、rubyあたりの
ソースに直截流用可能なWin32版のpopenの実装があったと思う。

0695デフォルトの名無しさんNGNG
>>693
大丈夫だ。>>695がなんとかしてくれる。
0696デフォルトの名無しさんNGNG
>>695
プププ
0697デフォルトの名無しさんNGNG
>>695
偉い。よく言った(w
0698デフォルトの名無しさんNGNG
セキュリティホールの作り方を教えてください。
0699デフォルトの名無しさんNGNG
>>698
チェックしない 
0700ヽ(´ー`)ノNGNG
>>694
あぁそうか、システムコールだもんな…寝惚けた。
VC.NET が欲すぃけど買えない貧乏学生なんで勘弁してくだつぁい。
0701690NGNG
>>691
引数にダブルクォート自体を含む場合のことを書いたわけだが。
そうでないならもっと単純に

"C:\Program Files\xxx\yyy" t e s t.txt

という形にすればいいはず。
0702647NGNG
>>701
それで_popenすると、

'C:\Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

となるのですよ。ちなみにCMD.exe。
0703デフォルトの名無しさんNGNG
>>701
これで動くけど?
#include <stdlib.h>
#include <stdio.h>

int main()
{
  char buf[BUFSIZ];
  FILE *pipe = _popen("\"C:/Program Files/Common Files/Microsoft Shared/VBA/VBA6/link.exe\" test.txt", "r");
  if (!pipe) {
    perror("popen");
    return 1;
  }
  if (!fgets(buf, sizeof(buf), pipe)) {
    perror("fgets");
    return 1;
  }
  _pclose(pipe);
  fputs(buf, stdout);
  return 0;
}
0704647NGNG
#include <stdio.h>
#include <stdlib.h>
const char* const command[] = {
 "C:/Program Files/Microsoft Visual Studio/Common/Tools/UUIDGEN.EXE",
 "\"C:/Program Files/Microsoft Visual Studio/Common/Tools/UUIDGEN.EXE\"",
 "\"C:/Program Files/Microsoft Visual Studio/Common/Tools/UUIDGEN.EXE\" -v",
 "\"C:/Program Files/Microsoft Visual Studio/Common/Tools/UUIDGEN.EXE\" \"-v\"",
};
int main()
{
 for( int i = 0 ; i < sizeof( command ) / sizeof( command[0] ) ; ++i )
 { printf( "-- %d --\n" , i );system( command[i] ); }
 return 0;
}
↑シェルの問題に絞ってこんなのを作ってみた。
で、結果は、

-- 0 --
'C:/Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
-- 1 --
73556378-d75f-4799-895a-5d47e84a2f68
-- 2 --
Microsoft UUID Generator (c) 1992. v1.00

-- 3 --
'C:/Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

・・・納得いかん。
0705デフォルトの名無しさんNGNG
>>704
どうも途中のダブルクォートは全部プログラム名の一部と見なされるみたいだなぁ。
つまりVCのsystem()その他では空白を含む引数はargv[0]も含めて高々一つまでってことか。

>>694が正解みたい。少なくともruby 1.8.0のsystemでは扱えてるようだ。
perlはcygwin版しかインストールしてないので、だれかActivePerlについて確認キボン。
0706デフォルトの名無しさんNGNG
素朴な疑問。
ショートファイル名でアクセスしちゃいかんの?
NTFSでも使えたと思うのだが。
0707デフォルトの名無しさんNGNG
NTFSだとショートファイル名を作らないようにもできるけどな。
0708デフォルトの名無しさんNGNG
数百行でかかれた手頃なCのソースはなにかありますか?
ライブラリーでも単体のアプリでもいいのですが。
0709デフォルトの名無しさんNGNG
system() に渡す文字列が既に環境依存なのなら、そもそも環境依存の API なりを
使った方がいいと思う。
0710647NGNG
>>709
その結論に落ち着きつつあるです。
プリプロセッサで切るか・・・・。
WIN32 unix とか、そんなマクロだったかのぅ。
0711デフォルトの名無しさんNGNG
>>708
重要なのは勉強するサンプルとして欲しい機能を満たしたソースであるかないか
行数は関係ないだろ。
0712デフォルトの名無しさんNGNG
>>711
一千万行もあるソースを読めというのか?
ふざけんな!
0713デフォルトの名無しさんNGNG
何をわけの分からんことを。
0714デフォルトの名無しさんNGNG
春でつね。
0715デフォルトの名無しさんNGNG
1000行あってもそのうち700行はコメントと空行
0716デフォルトの名無しさんNGNG
>>705
> つまりVCのsystem()その他では空白を含む引数はargv[0]も含めて高々一つまでってことか。
違った。「プログラム名に空白を含む場合は、空白を含む引数は渡せない」だな。
0717デフォルトの名無しさんNGNG
atoi("")って、0になるんでしたっけ?ANSI的に。
0718デフォルトの名無しさんNGNG
しょりけーいぞん
0719デフォルトの名無しさんNGNG
>>717
その通り。正しく int に変換できなければ 0 を返す。
0720デフォルトの名無しさんNGNG
>>716
"\"\"C:\\Program Files\\Microsoft Visual Studio\\Common\\Tools\\UUIDGEN.EXE\" \"-v\"\"",
0721デフォルトの名無しさんNGNG
>>720
その場合は-vを囲まなくてもいいだろ。>>716でいってるのは「方法がない」もの。
0722デフォルトの名無しさんNGNG
整数を文字に変換するにはどうすればいいですか?
0723デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぱ

0724デフォルトの名無しさんNGNG
ヨバレテトビデテジャジャジャジャーン
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>723
0725デフォルトの名無しさんNGNG
C言語で言う「割り込み」って何のことでしょうか?
索引調べても乗ってないし、どうもアルゴリズム上の
俗語らしいのですが…。
0726デフォルトの名無しさんNGNG
>>725
どこからその割り込みという言葉を知ったのでしょうか?
それによって答えも少々かわりそうだ
0727さんまNGNG
>>723
だれが出っ歯やねん!
0728デフォルトの名無しさんNGNG
>>722
sprintf
0729デフォルトの名無しさんNGNG
>>722
boost::lexical_cast
0730デフォルトの名無しさんNGNG
C言語スレで「整数の文字列への変換の仕方」が分からない初心者に
対してC++の話題を持ち出すヤシは、C++を噛りたてで
自分の乏しい知識を自慢したくて仕方がないんだろうね。
0731デフォルトの名無しさんNGNG
うん、そうだよ。君の言う通り!参った参ったよ、降参だ!
ああ、銃も置くよ。これでいいだろ?
0732デフォルトの名無しさんNGNG
>>730
そうやっていちいちC++の見事なレスにやっかみ半分なレスをする
君は、C++を知りたくて仕方ないのに全然理解できなくて毎日挫折
を味わっているかわいそうなヤシなんだね。
0733デフォルトの名無しさんNGNG
あー、半角?くんのことね。
0734デフォルトの名無しさんNGNG
サラ仕上げ
0735デフォルトの名無しさんNGNG
人気番組笑点の司会者は誰
0736デフォルトの名無しさんNGNG
int型の値をdouble型に変える方法を教えてよ
0737デフォルトの名無しさんNGNG
>>736
キャスト
0738デフォルトの名無しさんNGNG
>>736
double型の変数に代入するだけでいいじゃん。
0739デフォルトの名無しさんNGNG
>>735
立川談志
0740デフォルトの名無しさんNGNG
こんな関数があります。
void PrintAtDebug( const char* f, ... );

この関数を呼ぶのは マクロ _DBG が定義されてるときだけなのですが、
void foo() {
  int i = 10;
#ifdef _DBG
  PrintAtDebug( "value %d\n", i );
#endif
}
なんて書くのが、すごく無様に見えます。


たとえば、その関数が
void PrintAtDebug( const char* str );
のような形であれば、
#ifdef _DBG
#define _PrintAtDebug(x) PrintAtDebug(x)
#else
#define _PrintAtDebug(x)
#endif
なんてヘッダファイルにでも書いておけば、気持ちよくPrintAtDebug()関数を
呼ぶことができるようになるのですけど、
いかんせん、件の関数は省略された引数を持っています。

---------------------
省略された引数を持つ関数をwrapするようなマクロの書き方を、
誰か教えてくださいませ...
0741740NGNG
「省略された引数」じゃなくて
「可変呼引数」ってのが正解ですね。スマセン。
0742デフォルトの名無しさんNGNG
PrintAtDebug(const char* f, ...)
{
#ifdef _DBG
 〜
#else
 〜
#endif
}
とするんでは駄目?
0743デフォルトの名無しさんNGNG
C90までであれば
#ifdef _DBG
#define _PrintAtDebug(x) PrintAtDebug x
#else
#define _PrintAtDebug(x)
#endif

_PrintAtDebug(("value %d\n", i));

0744デフォルトの名無しさんNGNG
gccなら
#ifdef _DBG
#define _PrintAtDebug(x, ...) PrintAtDebug(x, ## __VAR_ARGS__)
#else
#define _PrintAtDebug(x, ...)
#endif

_PrintAtDebug("value %d\n", i);
0745デフォルトの名無しさんNGNG
C99なら
#ifdef _DBG
#define _PrintAtDebug(x, ...) PrintAtDebug(x, __VA_ARGS__)
#else
#define _PrintAtDebug(x, ...)
#endif

_PrintAtDebug("value %d\n", i);
0746740NGNG
>>742
んと、最初そうしようかと思ったんだけど、
そうすると関数呼び出しのオーバヘッドがあるしなー、って思って。
あと、おっきめの構造体とか、
_PrintAtDebug("BigStruct:%s\n", ToString( bigStruct ) );
とか、やってたりしたので....

>>743
括弧2重!すごい!それやります!
0747740NGNG
>>744
gccだとそういうのがあるんですねぇ。
そっちのほうがきれいかな...
んー...
0748デフォルトの名無しさんNGNG
ささやかな初心者の質問なんですが
C言語でケータイ電話用アプリは作れますか。
Javaで作れるらしいですけど
Cではできないのですか?
0749デフォルトの名無しさんNGNG
>>745
そういえばC99では可変個の引数をとるマクロを書けるんだっけ。
いいなそれ。
0750デフォルトの名無しさんNGNG
Javaの法が簡単でしょ
0751デフォルトの名無しさんNGNG
>>748
SDK(コンパイラやライブラリなど)があれば・・・
あるかどうかは知らない。
0752デフォルトの名無しさんNGNG
>>740
>744-745はどうでもいいが、>>743あたりは極普通のTipsなので、もう
ちょっといろんなソースを読んで勉強することを勧める。マジな話。
0753デフォルトの名無しさんNGNG
>>750
はげどう。
携帯電話の制御プログラムならまだしも、アプリケーションならJavaの方がいいでしょ。
0754デフォルトの名無しさんNGNG
そうそう。Cだとあーなったりこーなったりして大変よ。
0755デフォルトの名無しさんNGNG
iアプリってJavaVM上で動いてるの?
0756デフォルトの名無しさんNGNG
>>755
KVMってのの上だな。
0757デフォルトの名無しさんNGNG
>>756
tnx a lot!
0758デフォルトの名無しさんNGNG
KVMの所為で、変数名も詰めないといけない昔のBasicのようなプログラムを
書かざるを得ない。<携帯電話

でもだからと言って、お手軽に実装するもっと簡単な方法があるわけではない。
例えばJavaアプリならPC上のエミュレータも含めて比較的手軽に書けるが、
今のところCで書いたプログラムを携帯電話にインストールする手段もない。
0759デフォルトの名無しさんNGNG
JAVA起動した時に出てくるティーカップのマークって登録商標?
0760デフォルトの名無しさんNGNG
>>758
ユーザプログラムをH/Wに影響のない形で動かしたいと考えたとき、Javaの箱庭性がぴったりだったってこったな。
0761デフォルトの名無しさんNGNG
>>760
どっちかっつーと、KVMやJVMみたいな実際のハードウェアから切り離した
仮想マシンの存在がものを言ってるんだがな。

Javaはその仮想マシンへのコンパイラに過ぎない。
JVMなどをターゲットにしたコンパイラで広く普及してるのがJavaってだけだろう。

原理的にはCコンパイラだってCOBOLコンパイラだってかけるぞ(w
たしかCコンパイラは実装があったような気がしたが。
というわけでJavaだから、というのは厳密には正しくない。
0762デフォルトの名無しさんNGNG
>>761
うむ、同意だ。そこに目を付けたのが.NETってこったな。
0763デフォルトの名無しさんNGNG
今はVC++ってのでGUIのAPが書けますが、昔はどんな風に
画面を作っていたのですか?
0764デフォルトの名無しさんNGNG
>>763
pardn?
0765デフォルトの名無しさんNGNG
>>764
pardon?
0766デフォルトの名無しさんNGNG
>>763
キャラクタとエスケープシーケンスを駆使して窓を構築してますた。
0767デフォルトの名無しさんNGNG
>>766
昔すぎると思われ。せめてWindows3.0の時点で話した方が良くない?
0768デフォルトの名無しさんNGNG
DICS-BASICでは line、circle とか、pointでドット絵書いて get、put だった
0769デフォルトの名無しさんNGNG
窓の下になる画像は VRAM からメインメモリに移動してから窓描画します。
もちろんメインメモリ節約の為に、VRAMイメージは圧縮しておきます。
0770デフォルトの名無しさんNGNG
どんなふうにして圧縮してたの?>>769
0771デフォルトの名無しさんNGNG
>>770 ランレングス圧縮で無問題。
0772デフォルトの名無しさんNGNG
>>711
MAGのコードが公開されてたから、
趣味のプログラムではそれ使ったり。

仕事用だと、だいたい無圧縮。
0773デフォルトの名無しさんNGNG
ランレングス圧縮というのがあるですか、調べてみるです(・∀・)>>771
0774デフォルトの名無しさんNGNG
>>772
あらかわ犬の方ですか?
0775デフォルトの名無しさんNGNG
>>773
11111111000000000000001111111111111111111

8 14 19
0776デフォルトの名無しさんNGNG
>ランレングス圧縮
役に立たない
0777772NGNG
ぜんぜん違います
0778デフォルトの名無しさんNGNG
コンパイラが必用なんですね(T_T)
0779デフォルトの名無しさんNGNG
コンパイラって漫画だよ
そんなもん読んでないでとっととC言語の質問汁!!
0780デフォルトの名無しさんNGNG
じゃあ早速・・・
本当にint型は16bit以上なの?
0781ヽ(´ー`)ノNGNG
>>780
INT_MAX は 16bit であることが ANSI C では保証されているれす。
0782デフォルトの名無しさんNGNG
>>780 実装による。
0783ヽ(´ー`)ノNGNG
「INT_MAX は」じゃオカシイな(;´Д`)「int型は」に置き換えてくれ。
0784デフォルトの名無しさんNGNG
ビットで訊ねてきてるところが罠のような気がしてならない
0785デフォルトの名無しさんNGNG
>>780
>shortとintは少なくとも16ビット、longは少なくとも32ビット、
>shortはintより長くてはならず、intはlongより長くてはいけない
0786デフォルトの名無しさんNGNG
SolarisでCやってるんですけど、mallocしてるところで時々SEGVで
こけてしまうのですが、有効な調べる方法とかってあります?
0787デフォルトの名無しさんNGNG
char, short, int, long, 等の型のサイズは、どうして固定のビット長で定義されてないんですか?
有限の数を相手にしている以上、charは8bit等 決まっていないとどの型を選んで良いのか迷うのですが。
0788デフォルトの名無しさんNGNG
6bit PIC 向けのプログラムとか書きたいから。
0789デフォルトの名無しさんNGNG
質問です。
色を変えたりするやつで、

printf("\x1b[〜")

がありますが、borland c++のコンパイラではできませんでした。(改行のマークみたいのが出てきます。)
borlandではだめなのでしょうか。

また、cygwinのgccコンパイルではconio.hファイルがありませんといわれてしまいましたが、だめなのでしょうか。。
0790デフォルトの名無しさんNGNG
>>789
スレ違いだが、Windows NTのコマンドプロンプトはANSIエスケープシークェンスを理解しない。
0791デフォルトの名無しさんNGNG
>>788
それは処理系に依存したサイズを考えて選ぶしかないという事ですよね?
C言語って最悪の言語ですね。
0792デフォルトの名無しさんNGNG
教えて下さい。
下のプログラムが正常に動作しません。
NULL ポインタは引数に渡せないのでしょうか。
本当は、get_memory 関数内で、色々なサイズでメモリ確保します。
環境:Linux + gcc3.2


#include <stdio.h>
#include <stdlib.h>

void get_memory( char *pnt )
{
pnt = malloc( 10 );
strcpy( pnt, "abcdefghi");
}

int main( void )
{
char *mem;

get_memory( mem );
printf("mem=[%s]\n", mem );
free( mem );
}
0793デフォルトの名無しさんNGNG
値渡し
0794デフォルトの名無しさんNGNG
>>792
void get_memory( char **pnt)
{
*pnt = malloc...

get_memory( &mem);
0795794NGNG
ふつー
char *get_memory(void)
{
return malloc...

mem = get_memory();
0796789NGNG
>>790
うーむそうなんですか。。
ありがとうございました。
0797デフォルトの名無しさんNGNG
>>791
ま、マジレスしておくと。

別に処理系に依存したサイズなんかいくらでも回避する手段はあるわけで。
それ以前にCはアーキテクチャにべったり依存したプログラムも書けるから
便利なんだよ。OS依存以前にCPU依存のプログラムが書けるというところな。

一応ANSIのintの定義は最低16bitの符号あり整数ってだけで、
おまえはbit長さのみを気にしてるようだが、
符号が1の補数か2の補数かそれ以外の表現なのかさえも規定してない。
bit数気にするならこっちの表現も気にしろよな…

んでintもともとは「プロセッサにもっとも自然な符号あり整数」程度の定義だったわけだが。
もっとも自然な、ということはそいつを使うのがもっとも性能が発揮できる、
という意味とほぼ等価と考えてもよい。

処理系に依存しないサイズの整数を使おうと思ったら普通

#ifdef DOS
typedef int32 long;
#else
typedef int32 int;
#endif

とかヘッダに書いといてincludeするだけで済む。別にたいした手間じゃないし、
アーキテクチャに依存したプログラムがかけないよりはまし、
と考えているプログラマもいるってことだ。

ま、何やるにしてもCしか使わない(使えない)プログラマはアフォかと思うが、
確実にそういう需要はあるってこと。そしてそれを回避する手段もある。
0798デフォルトの名無しさんNGNG
>>794-759
あっ!
そうですね。 気がつかなかった。
お世話樣でした。
0799797NGNG
ああんtypedefの書式間違えた(;´Д`)
0800デフォルトの名無しさんNGNG
C++だと2の補数表現と決まっているよね。偉いよね。
0801デフォルトの名無しさんNGNG
>>797
> 別に処理系に依存したサイズなんかいくらでも回避する手段はあるわけで。
おいおい。
0802デフォルトの名無しさんNGNG
問1 
for(;i<lim-1 && (c=getchar())!='\n' && c!=EOF;)を&&を使わずに書け。

自分の解答
for(;!(i<lim-1 || (c=getchar())!='\n' || c!=EOF);

/* 俺ってバカなのでしょうか・・・? */
0803802NGNG
);が抜けておりました。スマソ
for(;!(i<lim-1 || (c=getchar())!='\n' || c!=EOF););
0804デフォルトの名無しさんNGNG
for(;(i<lim-1) * ((c=getchar())!='\n') * (c!=EOF);)
0805802NGNG
誰か答え教えてくさい
0806デフォルトの名無しさんNGNG
>>805
>>804 じゃダメなの?
0807デフォルトの名無しさんNGNG
>>803
whileは嫌い?
0808デフォルトの名無しさんNGNG
>>804
これだとダメだーね。
0809デフォルトの名無しさんNGNG
>>808
なぜ?
0810デフォルトの名無しさんNGNG
全てを評価してしまうから?
0811808NGNG
こうかな?
for(;!(i>=lim-1 || (c=getchar())=='\n' || c==EOF);)
0812809NGNG
>>810
ああなるほど。
0813809NGNG
なら||を使うのもだめじゃないか。
0814デフォルトの名無しさんNGNG
>>802
for(;i<lim-1 ? (c=getchar())=='\n' ? 0 : c==EOF ? 0 : 1 : 0;)
0815デフォルトの名無しさんNGNG
>>813
なんで?
0816809NGNG
>>815
評価する式の数が異なる可能性がある。
それでいいなら>>804もOKでしょう。
0817デフォルトの名無しさんNGNG
>>816
||だって短絡評価だろうが。
>>802と>>808の等価性が理解できないなら、ブール代数の基礎を勉強し直すこと。
0818デフォルトの名無しさんNGNG
>>817
a=1,b=0,c=0

a&&b&&c /* bまで評価 */
!(a||b||c) /* aのみ評価 */
0819デフォルトの名無しさんNGNG
for(;i<lim-1 && (c=getchar())!='\n' && c!=EOF;)

i<lim-1 が真のとき、(c=getchar())!='\n' も評価される。

for(;!(i>=lim-1 || (c=getchar())=='\n' || c==EOF);)

i<lim-1 が真のとき、i>=lim-1 は偽だから、(c=getchar())!='\n が評価されない。
0820デフォルトの名無しさんNGNG
>>819
これ間違ってるか。
0821デフォルトの名無しさんNGNG
C言語の仕様の話に数学をもってこられても困るな。
0822デフォルトの名無しさんNGNG
>>819
> i<lim-1 が真のとき、i>=lim-1 は偽だから、(c=getchar())!='\n が評価されない。
* 偽 だ か ら * 評価されるんだろうが。
ド・モルガンでもぐぐってみろ
0823デフォルトの名無しさんNGNG
>>818
> a&&b&&c /* bまで評価 */
> !(a||b||c) /* aのみ評価 */
等価じゃないだろ。ヴォケ

上のに等価なのは
!(!a||!b||!c)
だ。
0824デフォルトの名無しさんNGNG
>>822
ごめん間違ってたよ。
818と同じことを言おうとして滑った。
0825デフォルトの名無しさんNGNG
>>823
それを818は言っているんだろう。
0826802NGNG
804はなんでいいんですか?
C言語でも倫理積と同じように*と書き表せるのですか?
0827802NGNG
じゃあ+ってのもあるのでつか?
俺ってあほですか?
0828デフォルトの名無しさんNGNG
>>826
みっつの式のうちひとつでも偽があったらかけ算の結果が0になる。0は偽。
ゆえに全てが真となるときのみ全体が真となる。ってことじゃない?
0829デフォルトの名無しさんNGNG
>>828
and野は無し?
0830デフォルトの名無しさんNGNG
わり算にしたらFPEが発生するかなw
0831802NGNG
>>828
なぁるほどぉ
I understood
0832デフォルトの名無しさんNGNG
continueはループの先頭に飛ぶんじゃないよ。ループの末尾に飛ぶんだよ。
0833802NGNG
式が偽を返すときは0と決まっているのですか?
c==EOFはわかるのですが、
(c=getchar())=='\n'が偽のとき返す値は'\n'以外の文字ではないのですか?
0834デフォルトの名無しさんNGNG
>>833
0だよ。
あと論理式で真を返すときは1を返す。
0835デフォルトの名無しさんNGNG
>>833
> (c=getchar())=='\n'が偽のとき返す値は'\n'以外の文字ではないのですか?

ハァ?
0836802NGNG
アリガト
さんこになりました。
0837デフォルトの名無しさんNGNG
最近system()という関数があることを知りました。
0838デフォルトの名無しさんNGNG
アタシはrenameという関数があることを知りました。
0839デフォルトの名無しさんNGNG
printfってすげーーーー
0840デフォルトの名無しさんNGNG
ド・モルガンの法則を知らない真性厨房が現れました
0841デフォルトの名無しさんNGNG
>たたかう
 にげる
 あおる
 つられる
0842デフォルトの名無しさんNGNG
ド・モルガンのドって大阪弁なん?
0843デフォルトの名無しさんNGNG
どもるガン
0844初心者NGNG
何処が悪いでしょう? プログラム起動と同時に落ちます。

double ratio;  BYTE data[1024*100];
for(int i=0; i<sizeof(data); i++)
 data[i]=rand()%256;
for(int i=0; i<sizeof(data); i++)
{
 if(data[i] + data[i+1] == 0)
  continue;
 else
  ratio = (double)data[i] /  data[i]+data[i+1] ;
}
return 0;
0845デフォルトの名無しさんNGNG
( data[i]+data[i+1] ) としないと (double)data[i] / data[i]で駄目。以上!
0846デフォルトの名無しさんNGNG
ゼロで除算の為、あぽーん。
0847デフォルトの名無しさんNGNG
ついでにdata[sizeof(data)]にもアクセスしてそう
divided by zero と access violation か?
0848デフォルトの名無しさんNGNG
>>844
data[i] + data[i+1] が、しょっちゅう BYTE の範囲を越えそうなんだが大丈夫か?
あと、無理しないで一時変数使え。

{
 double tmp = (double)data[i] + data[i + 1];
 if(tmp == 0)
  continue;
 else
  ratio = data[i] / tmp;
}

>>847
sizeof(BYTE) が 1 なら、data[sizeof(data)] で access violation は無い。
他の変数領域を壊す事はあるかも知れないし、いずれにせよバグだけど。
0849デフォルトの名無しさんNGNG
>>848
bus error!=access violation
0850初心者NGNG
>>847 >>845 >>848
ああぁ、演算子の優先順位をど忘れしてました。
他にも問題点がいっぱ〜いなので修正してみます。 レス感謝。
0851デフォルトの名無しさんNGNG
整数型同士の演算は最低でもintに1度拡張されるような・・・
0852デフォルトの名無しさんNGNG
>>851
で?
0853デフォルトの名無しさんNGNG
>>840
>>821
0854デフォルトの名無しさんNGNG
>>853
煽りもマジレスもスピードが命。
0855デフォルトの名無しさんNGNG
もしかして>>808は>>802へのレスだったんじゃないか?
for(;!(!(i<lim-1) || !((c=getchar())!='\n') || !(c!=EOF)););
正しくはこうだもんなぁ
0856デフォルトの名無しさんNGNG
(int)1.0

が1になる事に驚いた
0857デフォルトの名無しさんNGNG
Cの勉強中なのですが、Cのソースには必ずmain関数があると本に書いてあった
のですが、あるソースコードを見たらmain関数はありませんでした。
関数名の中にmainが入ってるものはありましたが、main()はありません。
これはなぜでしょうか?
main関数がなくてもいいのでしょうか?
0858デフォルトの名無しさんNGNG
>>857
読んだあるソースはVisual C++のとかじゃないよね?
もしくはWinMainはあるとか。
0859デフォルトの名無しさんNGNG
>>857
そのソースを載せなさい
0860857NGNG
>858
即レスありがとうございます。
読んだのはcpu%.exeというCPU使用率をタスクバーにグラフ化して
表示するものです。
ソースは、cpu%.c、cpu%.ico、cpu%src.rcです。
.rcファイルにはアイコンを読み込むだけしか書いてありませんでした。

・・・あ、今ソースよく見たら
WinMainWinMain (HIN)STANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
という関数がありました。これがmain関数と同じ役割なのですか?
0861デフォルトの名無しさんNGNG
>>860
CによるWIndowsプログラミングの基礎を学びなさい。
0862デフォルトの名無しさんNGNG
main が無いんですけどレベルで Windowsは早過ぎると思われ。。
0863857NGNG
>861
すいません・・・。まだCをはじめたばかりで。
独習Cで勉強中です。
0864デフォルトの名無しさんNGNG
>>863
正直、まずは黒い画面から始めた方が良いです。
つまんないだろうけれど。
0865デフォルトの名無しさんNGNG
フリースタンディング環境の場合もエントリーポイントはmainとは限らないんだっけ?
ホスト環境ならmainと決まっているけど。
0866デフォルトの名無しさんNGNG
プリプロセッサ最高!!
俺はあんたの為ならしねるね。
0867デフォルトの名無しさんNGNG
通常、エントリポイントには main() よりも前のレイヤーが配置されるのだが
0868デフォルトの名無しさんNGNG
VCなら
mainCRTStartup()
WinMainCRTStartup()
0869デフォルトの名無しさんNGNG
そして

#pragma comment(linker, "/entry:\"nullpo\"")
0870デフォルトの名無しさんNGNG
>>869
ミオトサナイゾ!
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ >>869
 (_フ彡        /
0871デフォルトの名無しさんNGNG

if(po != NULL && *po == 2)
printf("Hello World");

0872デフォルトの名無しさんNGNG

・・・・・・・。
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ >>871
 (_フ彡        /
0873デフォルトの名無しさんNGNG
#pragma comment(linker, "/entry:\"nullpo\"")
#include <stdio.h>
int nullpo(void) { return puts("ぬるぽ"); }
0874デフォルトの名無しさんNGNG
if(nu||po)
printf("大変ですね。\n");
0875デフォルトの名無しさんNGNG
(・∀・)ニヤニヤ
0876デフォルトの名無しさんNGNG
#define f(x,y,z) (z x y)
main(){
printf("%s",f("ll", "po", "nu"));
}
0877デフォルトの名無しさんNGNG
( ´_ゝ`)フーン
0878デフォルトの名無しさんNGNG
% cat foo.c
#include <stdio.h>
#include <string.h>
int main(void)
{
  char buf[512];
  while (fgets(buf, sizeof(buf), stdin))
    if (strstr(buf, "Exception"))
      break;
  *strstr(buf, "」") = '\0';
  puts(strstr(buf, "「") + 2);
  return 0;
}
% gcc foo.c
% w3m -dump 'http://pc.2ch.net/test/read.cgi/prog/1045323654/l50' ;| ./a.out
0879デフォルトの名無しさんNGNG
もうC言語は飽きたのか?
0880デフォルトの名無しさんNGNG

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    |   スレ違い
     |        |        |   |   例外を
     |        | ∧_∧ |   |   投げ捨てろ
     |        |( ´∀`)つ ミ |
     |        |/ ⊃  ノ |   | "ぬるぽ"
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |
0881デフォルトの名無しさんNGNG
キサマ ショウコインメツカ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ >>880
 (_フ彡        /
0882デフォルトの名無しさんNGNG
catch (. . .) {
   ∧_∧
   (´∀` )
  ぬるぽ⊂)
   | | |
   (__(__)
}
0883デフォルトの名無しさんNGNG
皆さんコンバンワニ。
さっそく質問したいのです。
二次元配列のポインタはどうやって渡せば良いのでしょうか?関数に。
void test(char pt[][256]);
とやっていたんですがこの関数を動かす時には呼び出し元での
配列宣言時にdata[?][256]じゃないと『test(data)とやってます』
エラーおこっちまします、どうしたらいいでしょう・・・
なんか受け取るほうも256とか宣言しなくてバシバシポインタだけ受け取れないでしょうか?
0884デフォルトの名無しさんNGNG
>>883
**とか。
0885デフォルトの名無しさんNGNG
>>883
> エラーおこっちまします、
当たり前。ポインタの指すものの大きさが決まっていないとだめだから。
0886885NGNG
誤解を生むかも。
ポインタの指すものを操作するなら大きさが決まっていないといけない。
0887デフォルトの名無しさんNGNG
けど文字列はポインタだけ渡してもOKじゃないの・・??
char *pt;
test(pt);みたいにいけるから二次元も行けるのかなー。。と
0888885NGNG
>>887
文字列はポインタの指すものの大きさ(char一個分)が決まっているじゃない。
(配列としてみた場合、)要素がいくつあるかは問われないけど。
0889883NGNG
887自分です。
そうなんですか!けれど全く同じじゃないと行けないんでしょうか?
毎回宣言を書き換えないと行けないんでしょうか・・?
0890885NGNG
>>889
>>884がいいんじゃない?
char *の配列を作る。で、引数の型はchar **にする。
ただし、実際に要素(array[n]が指すもの)を保存する領域は別途用意しないといけない。
0891890NGNG
要素じゃなくてデータだな(鬱
0892883NGNG
ふむふ〜む・・!!
さっき**やってみましたが別途にナイと行けないのですか!
気付かなかった〜ヤッテミマス!
0893デフォルトの名無しさんNGNG
1次元配列と2次元配列を一緒に扱う関数ってどんななのだろう。
0894893NGNG
ああ2次元配列のサイズを気にせずにという話か。すまそ。
0895883NGNG
>>887は例です、。。はい。
ちなみにperlのsplit関数を真似たもの作ろうと苦戦しましたん。
0896デフォルトの名無しさんNGNG
>>895
それ作ったことある。
0897デフォルトの名無しさんNGNG
>>895
一応止めとく。

にたようなのにstrtokって言うのもある。
0898デフォルトの名無しさんNGNG
>>897
あれはデリミタ文字列を一文字ずつ分解しちゃうからダメじゃん。
0899883NGNG
>>896
き。。キニなる・・
0900デフォルトの名無しさんNGNG
Cygwinでコンパイルした後、それを実行するコマンドを教えて下さい。
0901デフォルトの名無しさんNGNG
$ gcc bakaaho.c
$ ./a.out
0902デフォルトの名無しさんNGNG
>>899
その手のはこの板でもときおり見掛ける。
0903デフォルトの名無しさんNGNG
>>900
% gcc -g hoge.c
% gdb a.exe
(gdb) run
0904デフォルトの名無しさんNGNG
>>903
最後に rm -rf c/
0905デフォルトの名無しさんNGNG
C勉強中です。以下のコードをBCC5.5でコンパイルしたのですが、
exeファイルもDOS窓からの呼び出しも、ウインドウが一瞬開くだけで実行できません。
コンパイルエラーは出ないのですが・・・どこがおかしいのでしょう。

#include<stdio.h>

float tempo(float f,float t);
float frame(float t,float p);
float tick(float f,float p);

float tempo(float f,float t){
float p;
float x;
x=3*t/f;
p=x;
return p;
}
float frame(float t,float p){
float f;
float x;
x=3*t/p;
f=x;
return f;
}
float tick(float f,float p){
float t;
float x;
x=p*f/3;
t=x;
return t;
}
0906続きですNGNG
main()
{
float f,t,p,x;
int a;
while(a<=3){
scanf("%d",&a);
switch(a){
case1:
scanf("%f",&t);t=t;
scanf("%f",&p);p=p;
x=frame(t,p);
printf("frame=%.1f\n",x);
getchar();break;
case2:
scanf("%f",&f);f=f;
scanf("%f",&p);p=p;
x=tick(f,p);
printf("tick=%.1f\n",x);
getchar();break;
case3:
scanf("%f",&f);f=f;
scanf("%f",&t);t=t;
x=tempo(f,t);
printf("tempo=%.2f\n",x);
getchar();break;
}
}
return 0;
}
0907デフォルトの名無しさんNGNG
> int a;
> while(a<=3)

aを初期化してない。
0908906NGNG
>>907
ほんっとにありがとうございます。少しだけ賢くなれました。
こんな長いソース晒してすいません(;´Д`)
0909デフォルトの名無しさんNGNG
>>906
演算は全部doubleでできるように変数も引き数もdoubleにしたほうがいいと思われ。
でないとfloatの精度で計算されたり無用のdouble⇔floatの変換が入ったりしてしまう。
0910デフォルトの名無しさんNGNG
C言語始めたばかりの入門者です。
質問があります。
下のプログラムを実行すると、
�@の結果がなぜか6.0となってしまいます。
�Aではちゃんと9.0と表示されるのですが、なぜ�@は6.0になってしま
うのでしょうか?

#include <stdio.h>

#define sqr(x)((x) * (x))

int main(void)
{
  doubledx;

  dx = 1.0;
  printf("二乗は%fです。\n", sqr(++dx));    −−−�@
  dx = 1.0;
  printf("二乗は%fです。\n", ++dx * ++dx);  −−−�A

  return 0;
}
0911デフォルトの名無しさんNGNG
>>910
マクロの展開された姿を想像してみればわかる。
�@はsqr((++dx) * (++dx)) となり、二回もインクリメントしている。
0912デフォルトの名無しさんNGNG
コードがおかしかったので手直ししました。

#include <stdio.h>

#define sqr(x) ((x) * (x))

int main(void)
{
  double dx;

  dx = 1.0;
  printf("二乗は%fです。\n", sqr(++dx));    −−−�@
  dx = 1.0;
  printf("二乗は%fです。\n", ++dx * ++dx);  −−−�A

  return 0;
}
0913デフォルトの名無しさんNGNG
�@の部分でも1.0が二回インクリメントされて 3.0 * 3.0で、
結果が9.0にはならないのでしょうか?
0914デフォルトの名無しさんNGNG
整数型の�Bではちゃんと9になるんです。

#include <stdio.h>

#define sqr(x) ((x) * (x))

int main(void)
{
  double dx;
  int n;

  dx = 1.0;
  printf("二乗は%fです。\n", sqr(++dx));
  dx = 1.0;
  printf("二乗は%fです。\n", ++dx * ++dx);
  n = 1;
  printf("二乗は%dです。\n", sqr(++n));  −−−�B

  return 0;
}
0915デフォルトの名無しさんNGNG
()ついてるじゃん
0916デフォルトの名無しさんNGNG
6だろ
0917デフォルトの名無しさんNGNG
つか ++dx * ++dx なんてことやっちゃいけません。
0918デフォルトの名無しさんNGNG
>>910
そういうコードを書くな、としか言えない。
あと機種依存文字使うのやめてー.・゚・(ノД`)・゚・.
0919914NGNG
あくまでも実験のサンプルなので変なプログラムですが、
なんでint型のnは9になるのに、double型のdxは6.0になる理由が
分からないんですよ。

専門一年坊を終了したばかりのボクにはよく分からないです。
0920デフォルトの名無しさんNGNG
>>919
もう分かったからここで聞くな…。下手したら、また荒れるから。
そもそも、マクロはそういう使い方をするもんじゃない。
0921914NGNG
>>920
>そもそも、マクロはそういう使い方をするもんじゃない。
分かりました。
理由は無いようですので、それで納得したいと思います。
0922デフォルトの名無しさんNGNG
>>919
まずは
>>1からたどれる
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
http://www.catnet.ne.jp/kouno/c_faq/c3.html
などを読んでからでも遅くないですよ。
0923914NGNG
>>922
ありがとうございました。
気合を入れて読んで行こうと思います。
0924デフォルトの名無しさんNGNG
>>914
神(コンパイラ)の振る舞いを量ってはいけない。
いつインクリメント処理をしようが、それは神の思し召しなのだ。

冗談は置いておいて、評価のタイミングを最適化した結果なので、
最適化オプションの指定の仕方でも違いが出ると思われ。
関数かマクロかでも(当然)振る舞いが異なるので、
引き数に副作用の在るコードは書かないように決めている
コーディング規約もあるくらい。
0925デフォルトの名無しさんNGNG
>924
で、理由は最適化オプションなんですか?
0926デフォルトの名無しさんNGNG
Cygwinでコンパイルした後、それを実行するコマンドを教えて下さい。と聞いた者ですが
その答えとして
$ gcc bakaaho.c
$ ./a.out

% gcc -g hoge.c
% gdb a.exe
(gdb) run
などを教えてもらい入力して実行したところ・・・

cpp.exeアプリケーションエラー
"0x61031957"の命令が"0x00000004"のメモリを参照しました。メモリが"written"
になることはできませんでした。

という表示が出てきました。どうすれば実行できるのでしょうか教えて下さい。
あと、このアプリケーションエラーはどういう意味なのですか?
0927デフォルトの名無しさんNGNG
>>926
どの時点でエラーになったのやら。
0928デフォルトの名無しさんNGNG
>>925
コンパイラのメーカーに問い合わせろ。
0929デフォルトの名無しさんNGNG
>>927
$ gcc a.c
これでコンパイルした時点でエラーがでました。
0930デフォルトの名無しさんNGNG
コンパイラのメーカーの中の人も大変だな
0931デフォルトの名無しさんNGNG
cpp・・・プリプロセッサがアクセス違反?
0932デフォルトの名無しさんNGNG
> メモリが"written"になることはできませんでした。

何度見てもこの酷い訳は笑える。
0933906NGNG
>>909
遅まきながらサンクスです。参考に致します。
0934929NGNG
ほかにコンパイルしたものを出力するコマンドってあるのですか??
0935デフォルトの名無しさんNGNG
>>934
コンパイルができてないのに、コンパイルしたものがあるわけないと思うのだが、どうだろう
0936デフォルトの名無しさんNGNG
./
./
./
./
./
0937デフォルトの名無しさんNGNG
どうも、926 と 929 の内容がつながらないのだが
0938デフォルトの名無しさんNGNG
>935
だな
0939デフォルトの名無しさんNGNG
Cygwinの環境がうまく動いてないだけみたいだがねぇ
手っ取り早いのが再インストールかな(苦笑)
0940デフォルトの名無しさんNGNG
>934
よくわからんがブンブン飛び回るハエだな
0941デフォルトの名無しさんNGNG
>>935
しかもコンパイルの段階にすら移っていない(苦笑)
0942929NGNG
あっ そうだ!!失礼。とにかくどうすれいいですかね??
0943デフォルトの名無しさんNGNG
>>942
>>939
0944デフォルトの名無しさんNGNG
「さいたまの野望」というシュミレーションゲーム
つくってくんない?
0945デフォルトの名無しさんNGNG
>>944
ゲ製へGO
0946デフォルトの名無しさんNGNG
>>944
スレ違い。板違い。気違い。
0947デフォルトの名無しさんNGNG
>>945
おう!
>>944
そんなに興味ないか?
0948デフォルトの名無しさんNGNG
Borland C++ Compiler 5.5.1で>>912の試したんだが、
結果は
>二乗は6.000000です。
>二乗は6.000000です。
>二乗は6です。
9になるほうがおかしいのでは?
0949訂正NGNG
>>912 -> >>914
0950デフォルトの名無しさんNGNG
>>948
>>922
0951なぜotherは表示されないのかNGNG
初心者でも挑戦できる問題でつ
口だけ上級者は解けません

switch(n){
  case 1:break;
  case 2:break;
  case 3:break;
  case 4:break;
    printf("1-4\n");
    break;
  defualt:
    printf("other\n");
    break;
}
0952デフォルトの名無しさんNGNG
>948
>>922
0953デフォルトの名無しさんNGNG
>>951
まともなコンパイラなら警告出すと思うけど。
>>952
ケコーン
0954デフォルトの名無しさんNGNG
>>951
nが1〜4なのだろう。
0955デフォルトの名無しさんNGNG
手元のgccだと、
・最適化なし
double マクロ 6
double 直書き 6
int   マクロ 6
int   直書き 6
・最適化あり
double マクロ 6
double 直書き 6
int   マクロ 9
int   直書き 9
となった。
0956デフォルトの名無しさんNGNG
字違ってるぞ。
default
0957デフォルトの名無しさんNGNG
defualt ( ´,_ゝ`)プッ
0958デフォルトの名無しさんNGNG
>>954
int n = 5;
にしても表示されなっっかたよ。
0959デフォルトの名無しさんNGNG
>>951
そもそもコンパイル通らないだろ(defualtがマクロなら話は別だが)
0960デフォルトの名無しさんNGNG
>>955
いつまでやってるんだよアフォ
散々 >>922 って書いてあるのが見えんのか
0961959NGNG
あ、すまん。単なるラベルとして見られるか
0962デフォルトの名無しさんNGNG
>>959
コンパイルは通るよ。
ラベルとして正しい文法だもん。
でも、まともなコンパイラなら使ってないラベルだぞって警告出るもんだが。
0963959NGNG
goto defualt;
これで表示されるだろ。多分。
0964デフォルトの名無しさんNGNG
>>953
どんな警告?
出しようがないと思うけどなぁ。
0965デフォルトの名無しさんNGNG
>   printf("1-4\n");

嘘つきw
0966デフォルトの名無しさんNGNG
まあdefualtってのはわざとだろうな。
そんなものでひっかかるかよ。
0967デフォルトの名無しさんNGNG
制御が届きませんって警告も出るな。
0968デフォルトの名無しさんNGNG
字が違ってたのか…
うちのBorland C++ 5.5.1 コンパイラは
defualt:でも警告無しで通ったよ。
糞コンパイラだね。
0969デフォルトの名無しさんNGNG
ラベルだってば
0970デフォルトの名無しさんNGNG
色分け機能つきのエディタ使えよ・・・
0971デフォルトの名無しさんNGNG
>>968
警告レベルあげた?
予約語を色分け表示してくれるエディタを使えば?
0972デフォルトの名無しさんNGNG
ぬるぽだってば
0973デフォルトの名無しさんNGNG
>>972
ガッ
0974デフォルトの名無しさんNGNG
んで、最適化するとswitch(){}が全部消えてなくなるのな。
0975デフォルトの名無しさんNGNG
クソ燃料の割には結構燃えてるな
0976デフォルトの名無しさんNGNG
>>974
冗談のわからん最適化コンパイラだな。
0977デフォルトの名無しさんNGNG
きちんととやれよ
  ( `Д´)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V・∀・)/ >>973
 (_フ彡        /
0978デフォルトの名無しさんNGNG
マ板からコピってくるのが面倒なんだよ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>977
0979デフォルトの名無しさんNGNG
釣られすぎや。
0980デフォルトの名無しさんNGNG
例題で身につけるC言語入門
http://pc2.2ch.net/test/read.cgi/tech/1043260605/l50

ここにあるぽ
0981デフォルトの名無しさんNGNG
>>980
あー、バラしちゃダメだよそこ漏れのお気に入りなのに・・・
0982デフォルトの名無しさんNGNG
ぬるぬるぬるぽ

って言ったら何回どつかれますか?
0983デフォルトの名無しさんNGNG
>>980
そこは…異世界ですか…
0984デフォルトの名無しさんNGNG
          | | ガガガガガッ   .人
  ( ・∀・)   | |       人  <  >__Λ∩
 と    )    | |    人  <  >__Λ∩Д´)/
   Y /ノ    .人   <  >__Λ∩Д´)/   / ←>>982
    / ) .人 <  >__Λ ∩Д´)/   / ←>>982
  _/し' <  >_Λ∩Д´)/   / ←>>982
 (_フ彡 V`Д´)/   / ←>>982
            / ←>>982
0985ぬるぽNGNG
誰も立ててなかったんで次スレ

C言語なら、俺に聞け! Part 〈52〉
http://pc2.2ch.net/test/read.cgi/tech/1047275669/l50

つーか 3 誰だよ。
0986デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>985
0987デフォルトの名無しさんNGNG
会社でもプライベートでも、ぬるぽなんて言った事ないな
0988デフォルトの名無しさんNGNG
メンドクセーナ

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>987
0989デフォルトの名無しさんNGNG
め。ゑ (ま°
0990デフォルトの名無しさんNGNG
こんなんで千取ったらどうすんだ!

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>全員
0991デフォルトの名無しさんNGNG
ぬ
0992デフォルトの名無しさんNGNG
れ
0993デフォルトの名無しさんNGNG
て
0994デフォルトの名無しさんNGNG
サッサト、ウメタテロヤ
  ∧_∧    | |           人
  ( ・∀・)   | | ガガガガッ 人  <  >__Λ∩
 と    )    | |    人  <  >__Λ∩Д´)/
   Y /ノ    .人   <  >__Λ∩Д´)/   / ←>>995
    / ) .人 <  >__Λ ∩Д´)/   / ←>>996
  _/し' <  >_Λ∩Д´)/   / ←>>997
 (_フ彡 V`Д´)/   / ←>>998
            / ←>>999
0995デフォルトの名無しさんNGNG
質問です
僕は何をききたかったんでしょうか?
0996デフォルトの名無しさんNGNG
あ
0997デフォルトの名無しさんNGNG
あ
0998デフォルトの名無しさんNGNG
あ
0999デフォルトの名無しさんNGNG
>>995
ぬるぽについて
1000デフォルトの名無しさんNGNG
あ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。