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

C言語なら、俺に聞け! Part 〈52〉

レス数が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






























0004ぬるぽNGNG
【過去ログ】
51 http://pc2.2ch.net/test/read.cgi/tech/1046104909/
50 http://pc2.2ch.net/tech/kako/1044/10449/1044938752.html
49 http://pc2.2ch.net/test/read.cgi/tech/1042646178/
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
0005ぬるぽNGNG
26 http://pc.2ch.net/tech/kako/1026/10260/1026048820.html
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
もう新スレの時期か。
1000直前だということに気づかなかったぞ(藁
0007デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガガガガッ 人
 と    )    | |    人  <  >__Λ∩
   Y /ノ    .人   <  >__Λ∩Д´)/
    / ) .人 <  >__Λ ∩Д´)/   / ←>>1
  _/し' <  >_Λ∩Д´)/   / ←>>2
 (_フ彡 V`Д´)/   / ←>>4
            / ←>>5
0008デフォルトの名無しさんNGNG
>>1
なんて事を・・・
0009デフォルトの名無しさんNGNG
メインフレームってどんなものかいまいち分からないんですが。あと大型汎用機ってのも。
0010デフォルトの名無しさんNGNG
>>9
スレ違い。
ここは、ぬるぽのスレです。
0011デフォルトの名無しさんNGNG
Part 50 が sat 落ちしてるのに、Part 49 がまだ生きてるというのが何とも・・・。
0012デフォルトの名無しさんNGNG
スレ立て乙ー
  ( ・∀・)   | | ガガガガッ 人
 と    )    | |    人  <  >__Λ∩
   Y /ノ    .人   <  >__Λ∩Д´)/
    / ) .人 <  >__Λ ∩Д´)/   / ←>>1
  _/し' <  >_Λ∩Д´)/   / ←>>2
 (_フ彡 V`Д´)/   / ←>>4
            / ←>>5
0013デフォルトの名無しさんNGNG
sat 落ち・・・何か、(・∀・)イイ!!
0014デフォルトの名無しさんNGNG
C言語を使ったプログラムで
練習として簡単なWebサーバを立ち上げたいのですが、
右も左もわかりません・・・

どこか参考にすべきHPなどはありますでしょうか?
0015デフォルトの名無しさんNGNG
system("/usr/local/apache/bin/apachectl start");
0016デフォルトの名無しさんNGNG
>>13
ワラタ

>>14
取りあえずSocketについて調べたら?
0017デフォルトの名無しさんNGNG
>>14
WebサーバをCで作る、ということでしょうか?
WebサーバにアクセスするソフトをCで作るということでしょうか?
0018デフォルトの名無しさんNGNG
>右も左もわかりません・・・

そういや、召還ワードのひとつだったな
001914NGNG
>>16
わかりました。Socketの勉強をしてみます。

>>17
Cで作る、ということです。
0020デフォルトの名無しさんNGNG
>19
この答え方はネタっぽいな。
あるいは、日本語の右も左もわからないかだが。
0021デフォルトの名無しさんNGNG
>>19
Cで 「何を」 作りたかったんだろう
002214NGNG
WebサーバをCで立ち上げるっていうのは
そういうことではないんでしょうか・・・?
0023デフォルトの名無しさんNGNG
ApacheなどのようなWebサーバを作成、という事ですか?
本家ですら、何年もかけて、多くの人数をかけて日々バージョンアップや
バグフィクスを繰り返しているというのに・・・
0024デフォルトの名無しさんNGNG
>>14
まあ、VBですら簡易HTTPサーバは作れるから、気長に作りなされ。
セキュリティとか難しいことを考えなければ、意外になんとかなるぞ。
0025デフォルトの名無しさんNGNG
ひょっとして、CでCGIを書きたいとか!?
0026デフォルトの名無しさんNGNG
漏れんとこの CGI、C で書いてあるけど何かマズい?
0027デフォルトの名無しさんNGNG
>>26
いや、そういう問題じゃなくてw

>>14はどこへ逃げた?
0028デフォルトの名無しさんNGNG
Webサーバ立ち上げというと
ドメイン取得、ネットワーク構成を決める
ハードを買って来て組み立て、ケーブル接続
OSインスコ、起動、ネットワーク設定、テスト
こんな感じ

0029デフォルトの名無しさんNGNG
>>28
お前の会社には今後見積もり取らんことにするよ。
0030デフォルトの名無しさんNGNG
>>14
要するに、ローカルな環境にWebサーバ立てて、Cで組んだCGI動かしたいんだろ?

こちらへどうぞ↓

C言語CGI専用スレッド
http://pc2.2ch.net/test/read.cgi/php/988918264/l50
0031デフォルトの名無しさんNGNG
 ∧_∧ 
 (´∀` )       ∧∧
   ̄ ̄    ==== ( ・∀・)つ0===フ
 ⊂ ̄ ̄⊃ ,/| === ̄ ̄
 ノ ノ ノ   | |    ( ⊃/ 
(_ノ )   | | ∧∧し⊃
       ⊂(・∀・ )       ∧∧
           ̄ ̄  ==== ( ・∀・)つ0===フ スレタテオツカレ!!>>1>>2
          \ ⊂)     ( ⊃/
           ⊂ J      し⊃
                   '"'""
0032デフォルトの名無しさんNGNG
LSI C-86 試食版というコンパイラが雑誌の付録についてたんだけど
インストール方法がよくわからない。誰か教えて。
0033デフォルトの名無しさんNGNG
>>32
まずはぐぐれ。話はそれからだ。
0034デフォルトの名無しさんNGNG
>>32
雑誌って、Cマガだろ?

いまさらそんなの入れるな。
せめてBCCにしとけ。

どうしても入れたければ、ググれ。
0035デフォルトの名無しさんNGNG
インストール方法もちゃんと載せないようなクソ雑誌を買ったにせよ、
展開してパスを通すだけの脳味噌がないにせよ、>>32には無理。
0036デフォルトの名無しさんNGNG
>>35
冷たいねアンタ
0037デフォルトの名無しさんNGNG
>>36
冷たく思うかもしれないけどそれが>>32のためになる。
本当は俺は温かい心の持ち主なのだ。
0038デフォルトの名無しさんNGNG
>>37
冷たいねアンタ
0039デフォルトの名無しさんNGNG
>>38
冷たく思うかもしれないけどそれが>>36のためになる。
本当は俺は温かい心の持ち主なのだ。
0040デフォルトの名無しさんNGNG
ウザイ。
次。
0041デフォルトの名無しさんNGNG
>>40
冷たいねアンタ
0042デフォルトの名無しさんNGNG
リピート厨が今日日のはやりですか
0043デフォルトの名無しさんNGNG
VisualC++というものを友人に借りたんだけど
インストール方法がよくわからない。誰か教えて。
0044デフォルトの名無しさんNGNG
>>45
冷たいねアンタ
0045デフォルトの名無しさんNGNG
>>43
帰れ。
0046デフォルトの名無しさんNGNG
>>44
逝ってよし!
0047デフォルトの名無しさんNGNG
>>43
まずCD-Rにコピれ。話はそれからだ。
0048デフォルトの名無しさんNGNG
>>44>>45 藁田
0049デフォルトの名無しさんNGNG
>>47 市ね。
0050デフォルトの名無しさんNGNG
>>49
お前には迷惑かからないだろ?
それともマイクロソフトの社員なのか?
0051デフォルトの名無しさんNGNG
>>50
> それともマイクロソフトの社員なのか?
そうですが何か?
0052デフォルトの名無しさんNGNG
>>51
じゃあ死ね
0053デフォルトの名無しさんNGNG
>>52
一平民の言うことなんか誰が聞くか(w
005452NGNG
>>53
つーか死ねと言われて死ぬやつはいねぇ。
0055デフォルトの名無しさんNGNG
一つ聞いても良いですか.Cで#includeするヘッダファイルと
コンパイルオプションの対応はどこで調べればよいのでしょう.
math.hなら-lmだとか、なにか変換規則でもあれば別ですが、
表みたいなものがどこかにあるのでしょうか.お教えください.
005652NGNG
>>55
まて。
-lm(gccだよね?)はリンクオプションだぞ。
インクルードファイルのあるディレクトリを指定するなら-I<Dir>でいけることが多いんじゃない?
0057デフォルトの名無しさんNGNG
>>56
死ね
005852NGNG
>>57
オマエモナー
0059デフォルトの名無しさんNGNG
>>57-58

自殺サイトで知り合った二人。
006055NGNG
>>56 おお、レスありがとうございます. >>57は私ではありません.
gccです. math.hなどの場合#include <hoge>とした場合の話です.
stdio.hならなにも要らず、math.hなら-lmが要るなど.
man ld, man gccでも特に無いようです.Cの言語仕様書に書いてある
のでしょうか?
0061デフォルトの名無しさんNGNG
>>59
そしてお前が主犯
006252NGNG
>>60
分かっているよ。>>52-54あたりからの流れだw

ヘッダーファイルじゃなくてリンカーに標準じゃリンクしてくれないライブラリをリンクしてくれという
オプションのことでしょ?それの一覧がどこにあるかはわからないなぁ。
-lにライブラリのファイル名のlibと.aを取り除いたものをつければいいんじゃないかな?
006360NGNG
>>62
死ね
006452NGNG
>>63
知ったかだったらスマソ
0065デフォルトの名無しさんNGNG
>>64
オマエモナー
006655, 60NGNG
>>62 ああ、すいません、man ldはやってみまして、
lib"hoge".{so.a}なら-lhogeだというのは書いてあったん
ですが、それだと、math -> libm.soという変換がやはり
出来るためのテーブルがどこかにないと困ることになりま
すよね... man mathでmath.hは出てくるんですが、そこにも
math.hで定義される関数のオブジェクトはlibm.soにあるとは
一言も書かれていないんです.
0067デフォルトの名無しさんNGNG
>>66
/usr/libあたりから自分で探す
0068デフォルトの名無しさんNGNG
ガムバレガムバレガムバレ
0069デフォルトの名無しさんNGNG
インクルードファイルとライブラリモジュールの名前に関連性はないよ。
同じにしているライブラリも在るってだけ。
例えばxmp画像を扱うライブラリはlibxpm.aでインクルードはxpm.hだけど。
大きなライブラリだと多対一だしね。
0070デフォルトの名無しさんNGNG
borland の import32 とか?
0071デフォルトの名無しさんNGNG
C++なんですが。

class unko{
char* func(int c);
};

char* unko::func(int c){
int k = new int[c];    // ←A
  ・
   ・
  return k; // ←B
}

-----------------------------
int main(int argc,char* argv[]){
unko un;
un.fun(4);
}

としてますが、Aのメモリー解放をどこでしたら良いのでしょう?
というのも、return で返すときにしようしている。

0072デフォルトの名無しさんNGNG
>>69
libc.aがいい例だな。
0073デフォルトの名無しさんNGNG
>>71
C++ならC++のスレで
それにしても阿呆だなぁ。
007471NGNG
×int k = new int[c];    // ←A
○char k = new char[c]; // ←A
0075デフォルトの名無しさんNGNG
strdupは使用者がfreeで解放しろと言っているね。
0076デフォルトの名無しさんNGNG
char* k だべさ
0077デフォルトの名無しさんNGNG
>>73
おしえて〜。
007871NGNG
>>76
ああ、そうだった。君が正解。
mallocは使ったことないのでよろぴく。>>75
0079デフォルトの名無しさんNGNG
>>78
return後もその領域を参照するなら、その関数とは別のところで解放しないとだめだろ。
008055, 60, 66NGNG
>>69 ががーん.分かりました.必ずしも何らかの命名規則によって変換
出来るようなものではないということですね.
一応私もgoogleなどで探してみたんですが、こういう(私からみれば
それこそ無いと致命的と思われる)ものが転がっていないという
ことはすなわちコンパイラ(リンカー)依存だということですかね?
#include ""ではなくて#include <>として使う標準ヘッダ(?)の関数が
自由自在に自分で探せて、使えるようになるだけでも出来ることが
広がりそうなんですが.
0081デフォルトの名無しさんNGNG
man
0082デフォルトの名無しさんNGNG
>>79
サンプル例をよろしく。
0083デフォルトの名無しさんNGNG
何様のつもりだろう。板違いのくせに。
0084デフォルトの名無しさんNGNG
じゃなくてスレ違い
0085デフォルトの名無しさんNGNG
しっかりドキュメントしていればどこでもいいんじゃない?
main の中でも、unko クラスに破棄専用のメソッドを作っても。
008655, 60, 66, 80NGNG
http://cham.ne.jp/piro/p_stdfunc.html
などでCの標準関数一覧は見つけました(本にも載っている)が、コン
パイル時につける-lmなどのオプションとの相関はやはり無いようです.
ちょっと基本的質問のような気がしてきましたのでもう少し自分で
調べてみます.明日も学校があるのでもう寝ます.ありがとうござい
ました.
008771NGNG
>>85
あっそうなんだ。ありがとう。

0088デフォルトの名無しさんNGNG
>>86
そりゃそうだ。
仕様ではファイル名は一部のヘッダーファイルしか定義されていないからね。
0089デフォルトの名無しさんNGNG
char buf[]="192.168.0.1/24";
int ipaddr;
int subnetmask;

という状態で、bufにあるデータをipaddrとsubnetmaskへ分ける最も効率の
良い方法をアドバイスください。

私は、
int i;
char addr_tmp[20];
と追加して、
for(i=0; i<strlen(buf); i++)
if(buf[i] == '/')
buf[i] == 0x20;

として、スラッシュをスペースに変え、

sscanf(buf, "%s%d", adr_tmp, subnetmask);
inet_atonで、アドレスを数値に変えてます。

こんなんでいいでしょうか?
なんかスラッシュをスペースに変えてるところが無駄に思えるんですが。。

009055,60,66,80,86NGNG
>>88 ありがとう.math.h <-> libm.soの対応表は
また探します.すくなくともgcc-3.2.2のtar.gzの中には
無かったです.みんなどうしているんだろうか.
朝練もあるんでもう寝ます...
0091デフォルトの名無しさんNGNG
>>90
アーカイブの中身をリスティングするとか・・・常識とか・・・
0092デフォルトの名無しさんNGNG
試してないけどこれじゃあかんかな
char* p = strchr(buf, '/');
if (p) {
subnetmask = atoi(p+1);
*p = '\0';
strcpy(addr_tmp, buf);
}
0093デフォルトの名無しさんNGNG
>>89
スペースに置き換えなくてもいいでしょ。
sscanf(buf, "%s/%d", adr_tmp, subnetmask);
これでいけない?
0094デフォルトの名無しさんNGNG
スペースを0x20なんて書き方するなよ。
009593NGNG
おいおい。
%[^/]/%d
こうだった(鬱
009689NGNG
>>92
ちょっと試してみます。
>>93
そう思ってましたが、なぜか最初の%sで全ての文字列を取得してしまいます。
どうやら、スペース、タブ、改行以外は区切り文字にできないようです。

>>94
ホントはデファイン切ってあるんだけどね。
009793NGNG
>>96
そうそう。うっかりしていた。
だから/を含まない文字列と/と数字列に分けるようにしてみた。試していないけど。>>95
009897NGNG
ダメみたい。。。スマソ
確かこんな感じの書き方があったと思ったんだが。
009955,60,66,80,86,90NGNG
gccの中みても意味ないのかもしれません.binutils-2.13.2.1
の中も見ましたがやはりありませんでした.
>>91さん,そのライブラリの中身をリスティングとはどうやるの
ですか!? 本当にもう寝ます.
010097NGNG
あ、やっぱりできた。sscanfの第一引数を間違えていただけだった。
010189NGNG
>>98
いけました!!
かなりグッドです。
どうやら、私の書いているsscanfにもミスがありました。
subは&subで渡すといけました!!

010289NGNG
ちなみに>>92さんのを試してみましたが、
コアダンプしてしてしまいました。
なぜかな。。
0103デフォルトの名無しさんNGNG
>>99
lib*.aというアーカイブに関数名.oというオブジェクトファイルがたくさん入っていると思うから
それから探せばいいかなと・・・現実的じゃないけど。
010455,60,66,80,86,90,99NGNG
最後に一つだけ.>>91 さん,ひょっとしてnmですか!
たしかに関数名っぽいのがずらずら出てきた
これと*.hの中身を比べてどの*.hがlib*.soに対応して
いるのかを自分でひまな時調べて表にしておけば行け
そうです.-lmなどのオプションは結局謎のままでしたが.
0105デフォルトの名無しさんNGNG
そんなコマンドがあったのか・・・
ldd(共有ライブラリへの依存関係を表示するコマンド)も最近知ったばかりだしな・・・
0106デフォルトの名無しさん NGNG
ar --help
man ar
0107デフォルトの名無しさんNGNG
>>104
そういったことが本格的に必要なら、autoconfを使うことを考えた方がいい。

あるいは、最近はgtk-configとかpkg-configなんて仕組みでオプションを提供
する仕組みもある。

$ gtk-config --cflags
-I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include

$ gtk-config --libs
-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm

$ pkg-config gnome --cflags
-DNEED_GNOMESUPPORT_H -I/usr/include/gnome-1.0
-I/usr/lib/gnome-libs/include -I/usr/include/gtk-1.2
-I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include

$ pkg-config gnome --libs
-L/usr/lib -lgnome -lgnomesupport -lesd -laudiofile -lm -lglib
0108 ◆8/MtyDeTiY NGNG
みんな、assert() って使ってるカイ?
0109ヽ(´ー`)ノNGNG
使ってるけど?デバグの時に便利だよ。
0110デフォルトの名無しさんNGNG
あたぼうよ。
あれ使わずしてバグが取れるかってえんだ、べらぼうめ。
0111デフォルトの名無しさんNGNG
貧弱な坊やだった僕も、assert()を知ってからたった一週間で
0112デフォルトの名無しさんNGNG
abort() うざい
0113デフォルトの名無しさんNGNG
デバッグはprintfにかぎるよヽ(´ー`)ノ
0114デフォルトの名無しさんNGNG
私はfprintf()だなぁ。
011555,60,66,80,86,90,99,104NGNG
>>107さん.ありがとう.autoconfで本格的にというのはまだ先だと思うので
すが、役立ちます.<>で指定するようなヘッダでもstdio.hのように何もgcc実行時にoptionが必要ないものがあったかと思うと、その一方でmath.hのように
-lmが必要だったりする、という一見規則がない(しかもその規則を書いた
文書が見当たらない)Cの(UNIXの?ANSI Cの?)header、リンカのシステムが
疑問だったのです.gtk-configやpkg-configの開発者の人たちはこれらの
規則を分かっていると思われるのでこれらの中身を調べて見ます.
多分math.hがあれば-lmを足す、という計算をしている部分があるはずですね.

0116デフォルトの名無しさんNGNG
>>115
> 多分math.hがあれば-lmを足す

全然違う・・・
0117デフォルトの名無しさんNGNG
>>115
ヘッダーファイルは切り離して考えろって。
0118デフォルトの名無しさんNGNG
>>115
とりあえずman 3 introしる。


011955,60,66,80,86,90,99,104,115NGNG
>>116さん、違うんですか?(--;)
>>117さん、-lmなどのオプションはヘッダファイルをインクルード
したかではなく,どの関数を使ったかで決まる、という意味ですか?
>>118さん、おお、あなたは神です.Vine Linuxでman 3 intro
としたら、こんなのがありました.
(3M) These functions are contained in the arithmetic library
libm. They are used by the f77(1) FORTRAN compiler by
default,but not by the cc(1) C compiler, which needs
the option -lm.
(3M) 数学ライブラリ libm を構成する関数です。f77(1)コンパイラ
ではデフォルトで使われますがcc(1)コンパイラではそうでは
ありません.(=自動的にはリンクされません。Cコンパイラで
-lmオプションが必要です.
とそのものずばりがありました!
0120デフォルトの名無しさんNGNG
なんで strtol の第二引数に const が付いてないんだ!!!
0121デフォルトの名無しさんNGNG
constなんぞ使うのは若造
012255,60,66,80,86,90,99,104,115,119NGNG
しかも自分のPCのLinuxでman 3 introだとあまり他の記述は無い
ですが、大学の計算機センターのSolarisでman -s 3 introすると、
libmなら-lm, libmailなら-lmail, libmpなら-lmp, libnvpairなら
-lnvpair, などなど(実に50種類も!)ときちんと載っていました.
あとman sinとすれば(Linuxでは載っていなかったですが)
cc [ flag ... ] file ... -lm [ library ... ]とありました.
もちろん私が蛸だったのですが、man gcc, man ldなどで
SEE ALSO intro(3)と書いてあればこんなに時間を取られなかった
のになあ...sectionの概要はintroを引けというのは常識という
ことのようですね.
0123デフォルトの名無しさんNGNG
>120
委員会がどこにconstをつけるべきかで悩んだからconstはついてません(w
0124bloomNGNG
http://www.agemasukudasai.com/bloom/
0125デフォルトの名無しさんNGNG
C言語なら俺に聞いてみなよ。
0126デフォルトの名無しさんNGNG
mallocがリエントラントかどうかを判断するにはどうすりゃいいでしょう。
マニュアル読むんじゃなくて、コンパイル時にマクロかなんかで判断させたい。
0127デフォルトの名無しさんNGNG
>>126
>>1
> 標準Cではできない事の質問は使用している開発環境のスレへGo!

スレ違いです。
0128デフォルトの名無しさんNGNG
特定の環境ではなくて、移植性に関する問題だろう。
残念ながら簡単に調べる方法は知らないが。
0129デフォルトの名無しさんNGNG
仮に分かるとしてもそれを保護する方法が環境依存なんだからだめだろう
0130デフォルトの名無しさんNGNG
なにやら一部のスレが混乱中みたいだけど、ここはマターリヽ(´ー`)ノ
0131C言語NGNG
C言語ですが、何か?
0132デフォルトの名無しさんNGNG
おまいらはC以外にどんなプログラミング言語がつかえる?
0133デフォルトの名無しさんNGNG
仕事がきたら、それにあわせて使う。
0134デフォルトの名無しさんNGNG
>>132
ないから今織田信長を勉強中。
0135デフォルトの名無しさんNGNG
>>134
マゾっすか?
0136デフォルトの名無しさんNGNG
try{
本能寺
}
catch(光秀){
MessageBox(_T("是非も無し"));
}
0137デフォルトの名無しさんNGNG
>>135
日本人だからな!
0138デフォルトの名無しさんNGNG
abort()を入れるべきか・・・
0139デフォルトの名無しさんNGNG
人生(五十年) {
if (下天 == 夢幻) {
}
}


0140デフォルトの名無しさんNGNG
>>126
無理ぽ。確実にreentrantなmallocが欲しければ自分でラッピングすべし。
0141デフォルトの名無しさんNGNG
今更なんですが.....
>>32
http://www.vector.co.jp/soft/dl/win95/prog/se037541.html
0142デフォルトの名無しさんNGNG
質問です。
printhってなんですか?
0143デフォルトの名無しさんNGNG
>>142
plinthの誤植
0144デフォルトの名無しさんNGNG
>>141
でもLSI-Cって、ANSIとの互換性にあちこち問題があるんだけど……
intも16bitだしスモールモデルしか扱えないし……
0145デフォルトの名無しさんNGNG
>>144
試食版はね。<スモールモデルのみ

いまどき、64KBで制限されるって言われてもねぇ。
0146デフォルトの名無しさんNGNG
つうか今時LSI-C(略
0147デフォルトの名無しさんNGNG
つうか今時(略
0148デフォルトの名無しさんNGNG
あるコマンドをやるとダイアログが出るように
してるのですが、それが別ウインドウの裏に隠れて、見えないときがあるのです。
それを改善するためにダイアログを常にアクティブにしたいのですが、
どのようにソースに組み込んだらいいのでしょうか?
どなたか教えてください。
よろしくお願いします。
0149デフォルトの名無しさんNGNG
>>148
まずは>>1の内容を読んで下さい。
OSすら書いてないのにどう答えろと・・・
0150デフォルトの名無しさんNGNG
>>148
激しくすれ違い。
それに、GUI環境によって答えが変わるので最低限環境を書かないと話が進まない。
まぁ、「常にアクティブ」ではなくて「最前面に配置する」設定があると思われ。
0151148NGNG
すいません、OSはXP Homeです。
環境は、VisualStudio.NET2002です。
どうかよろしくお願いします。
0152デフォルトの名無しさんNGNG
>>1を嫁
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!
0153デフォルトの名無しさんNGNG
>>148
まず日本語を勉強しろ。
0154デフォルトの名無しさんNGNG
最前面の間違いだろうが、
もしも常にアクティブになったらウザイよなー
それ閉じるまで他に何も出来んじゃん。
0155デフォルトの名無しさんNGNG
最前面てことなら SetWindowPos() だな。
0156デフォルトの名無しさんNGNG
SetWindownullPos()
0157デフォルトの名無しさんNGNG
>>156
え
0158デフォルトの名無しさんNGNG
システムモーダルの事か?
0159デフォルトの名無しさんNGNG
話を続けるのも気が引けるが、
9x系はウインドウ開いたら一番上にくるが、
2000/XP系は必ず一番上にはこないで点滅のみ、
という仕様のことでは
0160デフォルトの名無しさんNGNG
ドサクサマギレニ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>156

0161デフォルトの名無しさんNGNG
なんとなく流しちゃってましたが、160の突っ込みでやっと気づきました。
ありがとう160。
ありがとう156。氏ね。
0162デフォルトの名無しさんNGNG
ものすごく(゚ξ∴д。)グヒャな質問ですが、
標準関数だけでファイルのサイズを取得するにはどの関数ですか?

WinAPIならGetFileSizeとか標準関数でなければ_fstatなどあるようですが。。。
0163デフォルトの名無しさんNGNG
>>162
len = fseek(file,0,SEEK_END); とか。
0164デフォルトの名無しさんNGNG
>>163
stat()でもいいじゃん。
0165デフォルトの名無しさんNGNG
>>163
それじゃだめだろ。
fseekしたあとにftell

>>164
標準関数じゃない。
0166デフォルトの名無しさんNGNG
#include <iostream>
using namespace std;
int main()
{
cout << "abc";





return 0;
}
error LINK 2019 未解決の外部シンボル
fatal error LINK 1120 外部参照が未解決です。
と出て本文にはフォーカスがかからないのですが、どういうエラーなのでしょうか?
0167デフォルトの名無しさんNGNG
>>166
error thread 5963 スレ違いの質問です。
0168デフォルトの名無しさんNGNG
>>167
ほう、C言語には関数名間違いによるリンカエラーがないと。そうおっしゃる?
0169デフォルトの名無しさんNGNG
>>162
C には 「ファイルサイズ」 という概念が定義されていない。
素直に環境依存の方法を取った方がいい。
0170デフォルトの名無しさんNGNG
>>168
166 は C 言語じゃない。
0171デフォルトの名無しさんNGNG
>>170
もうしゃべるな。恥の上塗り。
0172デフォルトの名無しさんNGNG
(´-`).。oO(…)
0173デフォルトの名無しさんNGNG
>>171
( ´д)ヒソ(´д`)ヒソ(д` )
0174デフォルトの名無しさんNGNG
つーか、モロにマルチだったという説
0175デフォルトの名無しさんNGNG
うむ。マルチ放置。
0176デフォルトの名無しさんNGNG
昔かじったCをはじめから再勉強するにはどの参考書がいいですか?
0177デフォルトの名無しさんNGNG
>>176
前橋のポインタ本
0178デフォルトの名無しさんNGNG
ポインタとカーソルは違うものですよ、奥さん。
0179デフォルトの名無しさんNGNG
じゃあ、マウスポインタをマウスカーソルと言い換えても普通に通じるのは
何でですか?
0180デフォルトの名無しさんNGNG
>>178
ガッ

>>179
何を言っとるんだね君は。
0181デフォルトの名無しさんNGNG
>>180
ガッ

>>180
何って、戯れ言。
0182デフォルトの名無しさんNGNG
>>179
通じませんよ?
0183デフォルトの名無しさんNGNG
int *hoge;
hoge = (int *)malloc(sizeof(int));
free(hoge);

とやって、4行目以降ですでにhogeがfreeされているって事を知ることは出来ます?
0184デフォルトの名無しさんNGNG
if (hoge)
0185デフォルトの名無しさんNGNG
無理
0186184NGNG
ごめん嘘書いた。
0187デフォルトの名無しさんNGNG
>>183==>>126
0188デフォルトの名無しさんNGNG
#define myFree(x) {if (x){free(x);x=NULL;}}

int *hoge;
hoge = (int *)malloc(sizeof(int));
myFree(hoge);
if (hoge) {
 fprintf(stderr, "メモリ使用中だっちゃ\n");
}
0189デフォルトの名無しさんNGNG
>>188
freeはぬるぽを渡しても大丈夫(なにもしない)からマクロのifは不要。
0190デフォルトの名無しさんNGNG
>>189
知ってるけど、別にいいじゃんか。
0191デフォルトの名無しさんNGNG
>>189
ガッ
0192デフォルトの名無しさんNGNG
>>190
if文のコストしらねーのかボケ!
0193デフォルトの名無しさんNGNG
>>192
大抵の環境では最適化を有効にすれば関係無くなると思うんだが。
0194193NGNG
あぁ、だからと言って「if 文入れてもイイじゃん」とは思わないが。
0195デフォルトの名無しさんNGNG
もしNULLでコールされる可能性があるような場合は
if文のコストより関数オーバヘッドの方がでかいと思う。

でもそんな何クロックレベルの話ししてもしょうがないだろう。
テンケー的な机上の議論だね。

おれもfreeと=NULLは必ずセットで書くよ。(マクロは使わないけど)
NULLチェックすれば有効かどうかわかるもんね。
0196188NGNG
どもです。「freeしたものがNULLになればわかるのに」と思ってはいたんですが、
NULLを代入すればいいというのには気づきませんでした。言われてみれば・・・なんですが
完璧に盲点。おかげさまで助かりました。
0197デフォルトの名無しさんNGNG
あ、ミス。183です。
0198デフォルトの名無しさんNGNG
漏れ以外に、if付ける派は
居るかい?
0199188NGNG
仕事で使っているマクロとはちょっと違うけど、あんなもんです。
つまり私もif付ける派ってことで。
0200制御屋さん見習中NGNG

質問です。

gcc(windows版)を使っていて、以下のwarningがでます。

Warning : assignment makes pointer from integer without cast.

これはどのようないみなのでしょうか?


0201デフォルトの名無しさんNGNG
>>200
int型にint型でないものを代入しようとしている。
0202デフォルトの名無しさんNGNG
if は使わない派。NULL じゃなくても不定ポインタかもしれないし(w
チェックしてもあまり意味が無いような。
0203デフォルトの名無しさんNGNG
if使うのはたいていfreeのリファレンス読んだこと無い奴が多い。
NULLの代入はポインタを再利用するときだけだろ。
0204デフォルトの名無しさんNGNG
どっちでもいいことだ
0205デフォルトの名無しさんNGNG
>>203
ま、関数コールのコストとifかますコストを考えて
ifをかます判断もありえるわけだけど。

でもこのコスト差が効いてくるのってfreeに渡すポインタが
ほとんどぬるぽのときになんだよな。
あんまり考えられるシチュエーションじゃない。

ぬるぽじゃない場合がほとんどであればかえって余計なifの
コストがかかってくるわけで。

というわけでおれはifで先にぬるぽを引っ掛けたりしないな。
0206デフォルトの名無しさんNGNG
ていうか、free自体使わない
0207デフォルトの名無しさんNGNG
>>206
OSが全部解放するからいらないと(w
この話続けてもfjみたいに泥沼になるだけ
0208デフォルトの名無しさんNGNG
プロなら万が一に備えてif(p) free(p)し、mallocを使わずcallocにすべき。
0209デフォルトの名無しさんNGNG
>if(p) free(p)
でどんな万が一が防げるの?
0210ヽ(´ー`)ノNGNG
>>208
なぜ calloc がそこで出てくる?
0211デフォルトの名無しさんNGNG
>>210
callocの方が通っぽいからヽ(´ー`)ノ
0212デフォルトの名無しさんNGNG
>>201
違うだろ。
キャストなしにint型をポインタにしようとしているんだろ。
0213デフォルトの名無しさんNGNG
C歴5年にしてついにmallocを使っちゃいました。どきどき
0214デフォルトの名無しさんNGNG
>>209
万が一内部でNULLチェックを怠っている処理系があるかもしれない。

>>210
百が一アロケートしたバッファの未初期化領域を参照してしまうバグがあるかもしれない。
0215デフォルトの名無しさんNGNG
通はmallocもfreeもつかわない

reallocオンリー、これ
0216デフォルトの名無しさんNGNG
標準ライブラリくらい信用しないとやってられねぇよ。
0217デフォルトの名無しさんNGNG
とあるプロジェクトで#define malloc(size) calloc(1, size)したら直ってしまったバグがあり
今もそのマクロが有効であることは機密事項である。
0218ヽ(´ー`)ノNGNG
>>213
お前は5年間何をしていたのかと小一時間問い詰めたい。

>>214
そんなの言い出したら calloc だってどんなバグがあるか分からんだろ。
ワケワカメな事言ってるなぁ。
0219デフォルトの名無しさんNGNG
>>214
規格を無視した実装のことまで考えてられなくない?
そんなこと言ったら free() 以外の標準関数のほとんどは(ry
0220デフォルトの名無しさんNGNG
>>218
はげどう。
きちんと0に初期化してくれているかどうか心配だ。

>>219
はげどう
0221デフォルトの名無しさんNGNG
もっともメジャーでもっとも合理的な命名規則教えて
0222デフォルトの名無しさんNGNG
callocはmallocに比べると随分遅いだろ。
まあ、その遅さが実際に問題になることはそうはないとおもうが。
0223デフォルトの名無しさんNGNG
>>221
ループカウンターにはiという名前をつける。複数ある場合は、j,kと。
0224デフォルトの名無しさんNGNG
>>223
Fortranなら。
0225221NGNG
>>223
個別の規則じゃなくってハンガリアンとかまとまったものが知りたいです
0226デフォルトの名無しさんNGNG
>>225
別スレにどうぞ。
0227221NGNG
>>226
これって言語に依存した話だと思うんだけど
0228デフォルトの名無しさんNGNG
しません。
0229ヽ(´ー`)ノNGNG
>>221
とりあえず一通り読んでみたら?
 http://pc2.2ch.net/test/read.cgi/tech/1011026963/

どうせ宗教問題になるのが目に見えてるから、「好きなの使え」で
イイと思うよ。多人数でやる場合は仲間内で意見の統一が取れてれば良い。
実際問題、C で色んなライブラリを使ったソフトウェアを作る場合、
各々のライブラリの命名規則がバラバラなんてザラ。

Java や Win32API のように、推奨されている命名規則があるなら
それを使うべきだし、あっちの API とこっちの API の命名規則が
違うなんてことはあんまりない。

個人的には意味の分かる命名…かな。openssl のコードとか。
まぁいずれにせよ、ここでやるのは適切じゃないと思われ。
0230デフォルトの名無しさんNGNG
>>221
>もっともメジャーでもっとも合理的な命名規則
んなの、「リンネの2命名法」に決まっとるがな。
0231デフォルトの名無しさんNGNG
PC/AT 互換機の内蔵ブザーを鳴らしたいのですが
ポート番号がわかりません。
DOS 使用です。
御存じの方、教えて下さい。
0232デフォルトの名無しさんNGNG
>>222
遅さが問題になった時は、すぐに malloc に書き換える事が出来る。
最初から malloc だった場合はそうはいかない。
ロジックを根本から考え直す必要が出てくる。

これが本当のプロの仕事というものだ。
0233デフォルトの名無しさんNGNG
#include <stdio.h>
void main(void){
fputc('\a',stderr);
}

main関数がvoidなのは、やる気がないから(笑
実際は、マクロにしてやるといいと思われ。
0234ヽ(´ー`)ノNGNG
>>230
ググって色々読んでみたけど面白かったよ、ありがとう。

>>232
最初から malloc だったら、そもそも遅さが問題になる事は無いと思うんだが。
普段は malloc、必要に応じて calloc。これのどこに問題があるっていうの?
わざわざ遅い処理を無駄に行う事もないだろう。
0235デフォルトの名無しさんNGNG
>>230
これからのプログラマはラテン語が必修科目ってこと
0236デフォルトの名無しさんNGNG
>>232
?何のこっちゃ
0237デフォルトの名無しさんNGNG
gccはコンパイラだけで、プリプロセッサやリンカーは他のソフトを使っているということ??
0238デフォルトの名無しさんNGNG
callocを使った。
遅さが問題になった
malloc に書き換えた
解決した

……このロジックをとりあえず根本から考え直す必要が(笑)
0239制御屋さん見習中NGNG
200での質問の続きです。

int i, j, k, n;
matrix a;
a = new_matrix(n, n);
メイン関数は上記です。

関数は以下。
この警告は、無視していいのですか?

matrix newmat(int nrow, int ncol)
{
int i;
matrix a;

a = malloc((nrow + 1) * sizeof(void *));
if (a == NULL) return NULL; /* 記憶領域不足 */
for (i = 0; i < nrow; i++) {
a[i] = malloc(sizeof(SCALAR) * ncol);
if (a[i] == NULL) {
while (--i >= 0) free(a[i]);
free(a); return NULL; /* 記憶領域不足 */
}
}
a[nrow] = NULL; /* 行の数を自動判断するための工夫 */
return a;
}
0240制御屋さん見習中NGNG
続き

matrix new_matrix(int nrow, int ncol)
{
matrix a;

a = newmat(nrow, ncol);
if (a == NULL) error("記憶領域不足.");
return a;
}

宜しくおねがいします。
0241デフォルトの名無しさんNGNG
www.sra.co.jp/public/sra/product/wingnut/gcc/gcc-j.html

我々は、"GCC" をコンパイラシステム全体を指す名前として使う。
もう少し正確には、このコンパイラの言語非依存部を指す。
例えば、「GCC」の動作に影響する最適化オプションと言ったり、
あるいは単に「コンパイラ」と言ったりすることもある。
0242デフォルトの名無しさんNGNG
RTOSシステムじゃ要求仕様からしてその程度の違いが
致命的なことってあるよね。
でもそーゆーのはヒープなんざ使わんでシステムコールでとる罠。

つーわけで処理速度の話し意味ないってw
0243デフォルトの名無しさんNGNG
mallocも内部でシステムコールを呼んでいると思うけど・・・brkとか。
0244デフォルトの名無しさんNGNG
>>239
ところで、関数のプロトタイプ書いた?
0245デフォルトの名無しさんNGNG
if(abc==0)
0246デフォルトの名無しさんNGNG
>>239
matrixって何よ!っていう話と思われ。
わけがわからないものはint型と無理に解釈するコンパイラもあるし。
0247デフォルトの名無しさんNGNG
>>246
無理じゃなくて規格でそうなっているはず(宣言のない関数の戻り値の型のことでしょ?)。
0248制御屋さん見習中NGNG
すみません、ソース全部乗っけれなかったので、

matrix.h

#ifndef MATUTIL
#define MATUTIL

#include <stdio.h>
#include <stdlib.h>
#ifndef SCALAR
#define SCALAR float
#endif
typedef SCALAR *vector, **matrix;

です。

で、自己レス。
>>244さんの言うとうりでした。

ところで、さらに質問です。
大規模(大人数)プログラムで、
ある機能を追加するような、サブルーチンを
作る状況があったとします。。

そんな時、例えば、func.cと新規にファイルを作って作ったとします。
このとき、プロトタイプ宣言とか、#defineとかは、全部func.cで閉じたほうが良いのでしょうか?

今回、確認の為に、適当にmain関数をつくって確認したため、先に質問した質問警告がでて、困りました。
うまい開発方法を教えてください。
識者の方宜しくお願いします。
0249246NGNG
規格でそうなってたのか……
0250デフォルトの名無しさんNGNG
>>248
言っている意味がよくわからんが、他のファイルからも呼び出される関数の宣言や他のファイルでも使われる変数、型の定義はヘッダーファイルですべき。
0251デフォルトの名無しさんNGNG
>>234
>最初から malloc だったら、そもそも遅さが問題になる事は無いと思うんだが。
そうではない。後々問題となりそうな部分を「早期に」発見することが出来る。

calloc で遅さが問題になった時には
・ロジックを根本から考え直す
・malloc に書き換える
という2つの選択肢がある。
基本的には前者の方法で対策を取るが、
納期対応等、非常時の場合は後者の選択をすること「も」できる。

malloc の場合にはそうはいかない。
0252250NGNG
すべきというか、しないと面倒だ。
0253デフォルトの名無しさんNGNG
>>248
> プロトタイプ宣言とか、#defineとかは、全部func.cで閉じ
そんなことしたらほかのソースで使えないと思う。
0254デフォルトの名無しさんNGNG
プロトタイプ宣言は.hで。
0255デフォルトの名無しさんNGNG
>>254
staticな関数のプロトタイプ宣言は.cで。
0256デフォルトの名無しさんNGNG
>>251
もういい、しゃべるな。
0257250NGNG
extern int i;とかは変数の「定義」じゃなくて「宣言」だな(鬱
0258デフォルトの名無しさんNGNG
>>251
メモリ確保に malloc() しか使わないなら、そもそもメモリ確保について何も
考えなくてよく、ロジックの再検討に集中できる。
検討事項が多く挙がれば挙がるほど、そのプログラムの品質は低いという事だ。
0259制御屋さん見習中NGNG
>>250,252,253.254

ありがとう御座います。

こうですか?

header.hに
/* includeするファイル*/
#include <stdio.h>

/* 定義文*/
typedef SCALAR *vector, **matrix;
typedef float matNL[N][L];

#define N 10 /*10×10行列とする*/

/* プロトタイプ宣言*/
void error(char *message);
vector newvec(int n);

func.cに
#include " header.h"
を宣言して、関数色々記述。

と、いう感じですか?
0260デフォルトの名無しさんNGNG
>>247
どうして戻り値の型の話になるんだ?
239 の以下のコードは、matrix が宣言されていない限り規格では通らない。

> matrix a;


>>249
なってない。
騙されるな、247 にはこう書いてあるだろう。

> (宣言のない関数の戻り値の型のことでしょ?)
0261デフォルトの名無しさんNGNG
>> プロなら万が一に備えてif(p) free(p)し、mallocを使わずcallocにすべき。
>> calloc で遅さが問題になった時には
*初期化*で速度が遅くなったとき、なんの*ロジック*を考え直すのでしょうか?
設計からやり直すようなのって、プロじゃないような
0262デフォルトの名無しさんNGNG
>>260
MATLABじゃないの?
0263260NGNG
ごめん。
0264262NGNG
ごめん、これ。
http://www.sra.co.jp/people/miyata/algorithm/matutil.txt
0265デフォルトの名無しさんNGNG
>>260
>>248でそれが原因だったと言っているが。
0266デフォルトの名無しさんNGNG
>>259
>/* includeするファイル*/
>#include <stdio.h>

includeはプログラムごとにした方が良くないか?

あと、規模にもよるが、定義文とプロトタイプ宣言は分けた方がいいかも。
0267デフォルトの名無しさんNGNG
>>266
俺もヘッダーファイル内でincludeはあまり好きじゃないけど、関数の引数や戻り値にsize_t等を使う場合はしかたないんだよね。。。
0268デフォルトの名無しさんNGNG
/* typedef int * pint; */
pint p;

こう書いた場合、pをint型にしちゃう処理系があるの?エラーにしないで?
0269デフォルトの名無しさんNGNG
>>267
ああ、意図していることがわかった。
スマソ
0270デフォルトの名無しさんNGNG
ちょっと派生した疑問だけど、
.hでincludeする場合と.cでincludeする場合ってどう切り分けるべきなんだろう?
普段は汎用クラスは.hでinclude、依存関係のあるクラスは.cでincludeしてるんだけど
そんな感じでいいのかな?何か哲学とかある?
0271267,269NGNG
>>270
うちはそんな感じですが。
つか、コーディング規約でそうなってます。
0272デフォルトの名無しさんNGNG
>>270
ヘッダでのインクルードは、最小限にする。
0273デフォルトの名無しさんNGNG
abort と exitってどう使い分けますか?

malloc失敗したときなんかはどっちを呼んだらいいか判らなくて
悩んでいます。何をもって異常としていいんだろう。

もうひとつ
cygwinのgcc3.2.3だと
#include <stdlib.h>
main(){
 abort();
}
はsegmentation fault(Core dumped)になります
不思議です。

マジレスきぼん
0274デフォルトの名無しさんNGNG
>>273
異常終了ならexit(1);でいいよ。
0275デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/developer/library/vccore/_crt_abort.htm

abort 関数は、ストリーム バッファのフラッシュや atexit 関数、
_onexit 関数の処理を行いません。

abort 関数のメッセージの行き先は、実行中のアプリケーションのタイプ
に応じて決まります。コンソール アプリケーションでは、必ず stderr に
メッセージが送られます。シングルスレッドまたはマルチスレッドの
Windows アプリケーションでは、abort は Windows の MessageBox API
を呼び出して、[OK] ボタン付きのメッセージ ボックスにメッセージを
表示します。ユーザーが [OK] をクリックすると、プログラムをただちに
打ち切ります。

0276デフォルトの名無しさんNGNG
うちはAborted (core dumped)って出るけど。
SIGABRTじゃないの?
0277デフォルトの名無しさんNGNG
環境
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
gcc version 2.95.3-5 (cygwin special)

結果
$ ./abort
Aborted (core dumped)
0278デフォルトの名無しさんNGNG
∧_∧
 ( ´∀`)< ふろぽ
0279デフォルトの名無しさんNGNG
ずれた(T_T)
0280273NGNG
>>274
さんくす
本見てもexit()は正常終了としか書いてなかったんでパニックになってた
目から鱗 アホでした俺
0281273NGNG
あげてしまった
>>275
なるほどatexitは必ず実行されるわけじゃないんですね

>>276
うちでは何故かsegmentation faultです。たぶんこちらの環境
の何かがおかしいんだと思います不思議
gcc version 3.2 20020927 (prerelease)

hoge@none /cygdrive/d/myprog/myerr
$ ./a
Segmentation fault (core dumped)
0282デフォルトの名無しさんNGNG
void f1();
void f2();
void f1() { f2(); }
void f2() {}
int main(int argc, char* argv[]) { return 0; }

上記コードを gcc3.2で

$gcc -gcoff foo.c

としてコンパイルしたら

Assembler messages:
Fatal error: C_EFCN symbol out of scope

というエラーが出てコンパイルできません。なにが問題なのでしょうか?
0283デフォルトの名無しさんNGNG
$gcc -gcoff foo.c >& /dev/nullpo
0284デフォルトの名無しさんNGNG
>>283
ガッ
0285デフォルトの名無しさんNGNG
>>284 めざといな
0286デフォルトの名無しさんNGNG
ISO_IEC 9899_1999

 7.20.4.1 The abort function
  Synopsis
    1 #include <stdlib.h>
       void abort(void);
  Description
    2 The abort function causes abnormal program termination to occur, unless the signal
       SIGABRT is being caught and the signal handler does not return. Whether open streams
       with unwritten buffered data are flushed, open streams are closed, or temporary files are
       removed is implementation-defined. An implementation-defined form of the status
       unsuccessful termination is returned to the host environment by means of the function
       call raise(SIGABRT).
  Returns
    3 The abort function does not return to its caller.

>>276
正解。

>>281
atexit() を呼ぶとは、規格には全く書いていない。
0287デフォルトの名無しさんNGNG
>>282
どこもおかしくない。gccがタコなだけだろ。

フリーのコンパイラなんか使うから時間を無駄に使うことになる。
0288デフォルトの名無しさんNGNG
>>282
漏れんとこの gcc-2.95.1 ではそんなエラーは出ない。
0289ヽ(´ー`)ノNGNG
>>282
同じく、3.2.2ではそんなエラーは出ないよ。新しいバージョンに上げてみたら?
0290デフォルトの名無しさんNGNG
ごめん、もう眠いよ……

Using COFF on cygwin target

I'm trying to debug my program built with GCC (Cygwin) using the Microsoft
Visual C++ debugger. This debugger claims to understand COFF, which GCC
should be able to generate using the -gcoff option.

The assembler, however, fails with the error described below.


/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/../../../../i686-pc-cygwin/bin/as.e
xe -v -o Debug\gdbserver\utils.o /cygdrive/c/TEMP/ccUN6YHU.s
GNU assembler version 2.11.90 (i686-pc-cygwin) using BFD version 2.11.90
/cygdrive/c/TEMP/ccUN6YHU.s: Assembler messages:
/cygdrive/c/TEMP/ccUN6YHU.s:1421: Fatal error: C_EFCN symbol out of scope
:
:
:

とのこと。なお、cygwinの2.95.3-5 でも同じ症状がでました。
0291デフォルトの名無しさんNGNG
私の予想では……
これは、gccによる問題ではない、けれどもアセンブラの問題ではないかと思う。
C_EFCNは、binutilsでしか用いられないエラーメッセージある。
その意味は「物理的な関数の終端」である。この理由は、エラーを受け取った場所
で、すでに関数名として定義されているのと同じ名前の、アセンブラのcommonな
変数についてのデバッグstuffを読み込んだことである。
これは、どの関数がここで終了しているのかを見つけさせるものであるが、
その場合すでに(同じ名前の別の)関数は終了しているのである。
であるから、アセンブラーはこれをエラーとして表示する。

私の予想では、これはcoff debug formatに対するreal gurus
の制限に関する返答の1つでは無いかと思う。

If you want my guesses here they are -

This is not a problem with gcc, but may possibly be a problem
in the assembler (unlikely though).
C_EFCN is an internal #define used by binutils that just happens
to show up in the error message. It means 'physical end of function'.
The reason you are getting the error is that the assembler is
reading the debug stuff for your common variable, but it thinks that
the name for that is already associated with a function.
So, it goes to find what function it is currently in to end it, but the function has already been ended. So, you
hit an error condition in the assembler.

My guess as to the response from one of the real gurus 'limitation of coff
debug format'.

http://groups.google.com/groups?q=C_EFCN&hl=en&lr=&ie=UTF-8&selm=6jf79l%248gv%241%40rosenews.rose.hp.com&rnum=6
0292デフォルトの名無しさんNGNG
最近 Google のページを開こうとすると内部エラーで IE が落ちる
0293デフォルトの名無しさんNGNG
>>292
激しく基地外
0294デフォルトの名無しさんNGNG
>>292
OS再インストロールしてみてね
それでダメなら、Memoryを交換してみてね
それでダメなら、HDを交換してみてね
それでだめなら、マザーボードとCPUも交換してみてね

0295292NGNG
サウンドカードを交換したら直りますた。
0296( ´∀`)< ぬるぽNGNG
( ´∀`)< ぬるぽ
ストリームは結局
PCアーキテクチャのIOとか周辺機器を繋いでる「バス」そのもの
だと考えて宜しいのか?
0297デフォルトの名無しさんNGNG
オーキードーキー
0298デフォルトの名無しさんNGNG
>>296
だめ。
0299デフォルトの名無しさんNGNG
(1)
    unsigned int x = 1;
    char *p = (char *)&x;
    printf("%x %x %x %x\n", p[0], p[1], p[2], p[3]);

(2)
    unsigned int x = 1;
    char buf[256];
    char *p = buf;
    while (i < CHAR_BIT * sizeof (unsigned int)) {
        *p++ = x << i++ & ~(~0U >> 1) ? '1' : '0';
        if (i % CHAR_BIT == 0)
            *p++ = ' ';
    }
    *--p = '\0';
    printf("%s\n", p);


上の2種類の方法で x の値を表示させると、(1)は 1 0 0 0 、(2)は 00000000 00000000 00000000 00000001 と、
それぞれ別のバイトオーダーで表示されてしまいます。
どうしてこの様になってしまうのでしょうか?

コンパイラはgcc2.95.4です。
0300299NGNG
すみません。(2)の i は 0 に初期化されています。
0301デフォルトの名無しさんNGNG
>>299
ソース読む気ないけど、リトルエンディアンの関係でしょ。
0302デフォルトの名無しさんNGNG
 
0303デフォルトの名無しさんNGNG
>>299
実際には 301 の言う通りなんだけど、本当の原因は unsigned int 等の内部表現が
C では規定されていないから。
環境によって結果が多いに変わる可能性があるので、特定の内部表現に頼ったコード
はなるべく書かないのが望ましいね。
もちろん、特定環境でしか動かさないプログラムなら依存しまくってもいいけど、
将来に移殖の必要が出た時に苦心する事になるよ。
0304.. ◆rGsyzf.Kp2 NGNG
初心者でスマソ。
ポインタで宣言した変数"list"で
「&list」 っていうのはどういう意味なのでしょか?
0305デフォルトの名無しさんNGNG
ぜんかくあんぱさんどlist
0306デフォルトの名無しさんNGNG
>>304
たとえば、
char *list;
って定義したときの&listか?
listはポインタ型の変数でlistにはアドレスを収めることができる。
そのアドレスを収めるアドレスが&listだ。

って、混乱しそうな説明だなあ。とにかく何か変数を定義したら、
どっかメモリーに収める領域が確保される。
その収める領域(アドレス)を得るために&演算子が用意されている。
0307.. ◆rGsyzf.Kp2 NGNG
あ〜!なるほど。。
だからポインタのポインタに渡すときつかわれるのですね。。
こんな質問にこたえてくださって感謝
0308デフォルトの名無しさんNGNG
>>298
ちょっと考えてみたんだが

Cはメモリ以外のIO装置の全てをファイルと認識し
ストリームを結合してそれらを操作する。
そのストリームとは物理的なバスのことではなく、
UNIXなどのOSが仮定する概念的なインターフェイスである

こんなんで合ってますか?
0309制御屋さん見習中NGNG
>>304便乗

私も、質問です。

float **a;

とした場合、A[10][10]]などの配列を
どうやって示してあげれば良いのですか?

a=&A ×
a=&A[][10]  ×

でした。
0310デフォルトの名無しさんNGNG
>>309
キャストでもしないかぎりは無理。
ポインタをfloat (*a)[10];と定義すべし。
0311制御屋さん見習中NGNG
>>310
たすかります。

キャストするにはどうすればよいです?
ポインタは、float **aですでに決まっています。
(mallocで、a[10][10]等、確保する予定)

それと、A[10][10]を参照させたいのです。

お願いします。
0312デフォルトの名無しさんNGNG
>>311
mallocで100 * sizeof(float)するとか2ループ使って地道に確保するとか。
0313デフォルトの名無しさんNGNG
>>311
まず float *[10] を確保する。
次にループを回してそれぞれに float [10] へのポインタを代入する。

float **a;
a = (float *[10])malloc(sizoof(float *[10]));
for (i = 0; i < 10; i++) {
a[i] = (float [10])malloc(sizeof(float [10]));
}

mallocの返り値がNULLかチェックを忘れずに。また freeはこれと
逆順で。
0314デフォルトの名無しさんNGNG
>>311 まあこれでいけそうだ。freeは省略してある。

float A[10][10];

int main(void)
{
float **a;
int i;

if ((a = (float **)malloc(sizeof(float *[10]))) == NULL) exit(1);
for (i = 0; i < 10; i++)
a[i] = (float *)&A[i];

A[1][2] = 345.678;
A[3][4] = 567.891;

printf("%f %f\n", a[1][2], a[3][4]);

return 0;
}
0315デフォルトの名無しさんNGNG
>>308
>Cはメモリ以外のIO装置をファイル〜

それは「C」がではなく「UNIX(系OS)」がやってることで、、、
0316デフォルトの名無しさんNGNG
>>301
>>303
レスありがとうございます。

この場合、通常はリトルエンディアンだけれども、ある条件 (この場合はシフト
演算子のオペランドになった時でしょうか) の時にはビッグエンディアンに変換
してから操作を行っている、 ということでしょうか?
0317デフォルトの名無しさんNGNG
>>311 普通の二次元配列との互換性を無視するならこんな感じ。
同じくfreeは省いた。

int main(void)
{
float **a;
int i, j;

if ((a = (float **)malloc(sizeof(float *[10]))) == NULL) exit(1);
for (i = 0; i < 10; i++)
if ((a[i] = (float *)malloc(sizeof(float [10]))) == NULL) exit(1);

a[1][2] = 345.678;
a[3][4] = 567.891;

printf("%f %f\n", a[1][2], a[3][4]);

return 0;
}
0318デフォルトの名無しさんNGNG
>>316
演算子の評価対象になった場合はビッグエンディアンもリトルエンディアン
もないだろ。宣言してある「型」であくまでアクセスされる。
これを一旦メモリに入れるとエンディアンが問題になる。
0319デフォルトの名無しさんNGNG
>>311
ポインタへのポインタと、2次元配列は全く異なるものだよ。

float *ppf, af[10][10];
という定義があったとしようppfはまっとうな値が入ってるとして、
たとえばppf[2][1]とやったときと、af[2][1]とやったときにコンパイラが
どう評価するかというと

ppf→| ppf[0](floatを指すポインタ) |
    | ppf[1](floatを指すポインタ) |
    | ppf[2](floatを指すポインタ) |→| ppf[2][0] |
                       | ppf[2][1] | ← これ


af
| af[0][0] | af[0][1] | af[0][2] | af[0][3] |……| af[0][9] |
| af[1][0] | af[1][1] | af[1][2] | af[1][3] |……| af[1][9] |
| af[2][0] | af[2][1] | af[2][2] | af[2][3] |……| af[2][9] |
   :   ↑これ
   :
| af[9][0] | af[9][1] | af[9][2] | af[9][3] |……| af[9][9] |

こうなるわけ。たまたま一次元の配列とポインタは似たような表記で
扱うことが可能だけど、それは1次元だけの話で、それ以上はケアしてくれない。
だってppfなんてコンパイラにとっては単にポインタをさすポインタでしかないわけで、
10*10の情報とかそんなのはどこにもないからね。

だから、mallocするとかして実体をさすように自分でケアしてやらなきゃいけない。
0320デフォルトの名無しさんNGNG
>316
違う。
0321デフォルトの名無しさんNGNG
>>316
だから、整数型の内部表現は関係無い。
>> は小さくなる方に、<< は大きくなる方にシフトする。
0322デフォルトの名無しさんNGNG
>>316
そのへんがスッキリしないなら、
アセンブラやるといいよ。
少し齧る程度でいいからさ。
0323制御屋さん見習中NGNG
>>312 ,313,314,317,319

SPECIAL ThanX!

どうもありがとう御座います。
この辺は、私には難しいです。

よ〜く、読みなおして試してみます。
0324デフォルトの名無しさんNGNG
>>319
どうでもいいが、
float **ppf;
…念のため。
0325319NGNG
>>324
あ。ほんとだ。鬱だ死脳
0326デフォルトの名無しさんNGNG
データを格納する領域をあらかじめmallocしておいて、
そこに対するポインタでデータを取り出してるんですが、
データの数が多くなってmallocした領域が足りなくなった場合に、
reallocで拡張するとメモリ上の位置が変わってしまって、
データに対するポインタがうまく動かなくなってしまいます。
こういう時ってどうすればよいのでしょうか?
どなたかご教授願います。
0327デフォルトの名無しさんNGNG
>>326
reallocが返すポインタを元に計算し直せ。
0328デフォルトの名無しさんNGNG
連結リストにするとか
0329デフォルトの名無しさんNGNG
dNode *dList::find_Node(const dNode &searchNode,dNode *pStart=NULL,
int (*compare)(const dNode*,const dNode*)
=dNode default_compare);
エラー;' が、識別子 'default_compare' の前に必要ですとでるんですけど
エラーがでないようにしたいんです。
どうすればいいか教えてください。
0330デフォルトの名無しさんNGNG
これってCですか?
0331デフォルトの名無しさんNGNG
あ、ごめんなさい間違えました
C++だった
0332デフォルトの名無しさんNGNG

よろしい おちるまえにぬるぽのちから とくとめにやきつけておけ
0333デフォルトの名無しさんNGNG
キミノアタマニヤキツケテヲケヨ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>332
0334273NGNG
CYGWINバージョンあげてみたりReinstallしてみたり
Cygwinフォルダ全部消して再インストールしたりしてみたけど
abort()はやっぱりsegmentation faultですた。
いろいろコンパイルしてみてわかったのですが意味不明のsegfaultは
abort()だけでもないみたいです。
もう、Windows98インストールしなおすしかないみたいです;;
なんでだろ…。
鬱だし脳
0335デフォルトの名無しさんNGNG
他人事だが >334 がんがれ
0336デフォルトの名無しさんNGNG
299以降でリトルエンディアン、ビッグエンディアンの話が出てたので
便乗質問させていただきます。

303氏が、
>環境によって結果が多いに変わる可能性があるので、
と書いてましたが、この場合の「環境」とは何を指すのでしょうか?
OSやコンパイラに依存するのか、
はたまたマザーボードやメモリに依存するのかが分かりません。
ご教授お願いします。
0337デフォルトの名無しさんNGNG
CPUとか。
0338336NGNG
>337氏
レスありがとうございます。
0339デフォルトの名無しさんNGNG
ttp://www.ffortune.net/comp/history/cpu-motorola.htm などなど。
途中で切り替えられるようなCPUもあったっけかな、SHとか<記憶曖昧
あと、ファイルフォーマットや通信パケットなどで
リトル/ビックエンディアンどちらかきめてるとか
0340デフォルトの名無しさんNGNG
>>339
PowerPCもエンディアンを変えられたはず。
0341デフォルトの名無しさんNGNG
蛇足
ttp://www.psytec.co.jp/tips/0503/
ttp://www.microsoft.com/japan/developer/library/vccore/_core_windows_sockets.3a_.byte_ordering.htm
0342デフォルトの名無しさんNGNG
ネットワークは確かビッグエンディアン
だけど C の整数型の内部表現の話とは全く関係無い
0343デフォルトの名無しさんNGNG
>>339
途中で、て…
0344デフォルトの名無しさんNGNG
Cにおける疑問をビット単位で整合性をとりたいヤシは
アセンブラでCPUの勉強をyれ
オレモダガナー
0345デフォルトの名無しさんNGNG
4月から大学でC言語を学ぶことになりました。
そこで、C言語を習得するのに役に立った参考書やサイトなどを教えてもらえませんでしょうか?
よろしくお願いします。
0346デフォルトの名無しさんNGNG
参考書ならダイテル兄弟のテキストがお勧めかな
アメリカの大学でも採用されてるし
サイトはテキストで体系的な理解を得てから
断片的にリファレンスするのがいいと思われ
0347デフォルトの名無しさんNGNG
>>345
大学でCを勉強してきたと自称する奴のほとんどが現場で使えないと言う事実があるので、
講義を聞き流して課題をコピーするだけならやめたほうがいい。
自力で勉強する気があるなら、講義で疑問に思ったことはここで聞くといい。
いろんな考えがあることも含めていい勉強になる。
0348デフォルトの名無しさんNGNG
プログラム入門の課題は10分以内に終わらせよう。
0349デフォルトの名無しさんNGNG
>>342
今の下位層のプロトコルは大抵ビッグエンディアンだし、基本的には、ね。
だが、ストリーム中のデータに関しては上位層の責任範囲だから関係なし。
0350デフォルトの名無しさんNGNG
>>349
すみません、モトローラ方式がビッグエンディアンでしたっけ?未だにごっちゃ。
0351345NGNG
>>347
そうなんですか!?大学だけに頼らないで勉強していきます!
0352デフォルトの名無しさんNGNG
>>351
頑張れ。大学のプログラム関係の授業は単位稼ぎと思え(る位になっとけ)。
0353342NGNG
>>349
わかってる、>>341 が貼ってくれたリンクに全部書いてある
0354デフォルトの名無しさんNGNG
仕事でやっているやつもたいしたことないけどな!
0355デフォルトの名無しさんNGNG
専門行ってる奴が一般人の俺にプログラムの宿題頼んでくるんだけど
0356デフォルトの名無しさんNGNG
何かマ板向けのネタになってきた
0357デフォルトの名無しさんNGNG
エディタを作っています。
エンコーディングの自動判別をしたんですが、何か良い方法はありますか?
0358デフォルトの名無しさんNGNG

 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |     ヌノレポ    |
 |_________|
    ∧_∧ .||
   ( ´∀`)||
   /   づΦ

0359デフォルトの名無しさんNGNG
>>357
jcode.plでぐぐれ。
0360デフォルトの名無しさんNGNG
>>359
移植せぇと言うのか・・・残酷だな。
0361デフォルトの名無しさんNGNG
>>360
ハァ?
0362デフォルトの名無しさんNGNG
ネットにそれっぽい C のソースがあったから探せばいいと思う。
0363デフォルトの名無しさんNGNG
ちなみに漏れの better C で書いた CGI で SJIS/EUC/JIS を処理するルーチン
書いたけど、コードスタイルの関係であんまり晒したくない。
0364デフォルトの名無しさんNGNG
Cだったらnkfのソース見たほうがいいかも。
まんまぱくれるかもしらんし(w

あ、ライセンスにはきぃつけえよ
0365デフォルトの名無しさんNGNG
>>364
GPLじゃないの?
0366デフォルトの名無しさんNGNG
>>365
ちゃいます。nkf.cのコメント部分で利用条件についてかいてあるけど

** このソースのいかなる複写,改変,修正も許諾します。ただし、
** その際には、誰が貢献したを示すこの部分を残すこと。
** 再配布や雑誌の付録などの問い合わせも必要ありません。
** 営利利用も上記に反しない範囲で許可します。
** バイナリの配布の際にはversion messageを保存することを条件とします。
** このプログラムについては特に何の保証もしない、悪しからず。

これだけ。GPLじゃないです。
0367デフォルトの名無しさんNGNG
残すだけでいいのか。
じゃあこぴっちゃおう。
0368デフォルトの名無しさんNGNG
すんません
フラッシュでバッファのデータを吐き出したとき
ファイルからの読み出しデータの場合はどんな処理がされるんですか?
0369デフォルトの名無しさんNGNG
>>368
質問の意味がわからん。
もし、入力用に開いたストリームに対して fflush() 使った場合を訊いているなら、
その動作は


     未  定  義


なのでよろしく。
0370デフォルトの名無しさんNGNG
激しく未定義キタ━━━━━(゚∀゚)━━━━━!!!!


でも VC++ だと 「入力バッファをクリア」 になるけどナー。
0371デフォルトの名無しさんNGNG
プログラム作ってください、C++でお願いします。叩き煽りは無用です。
0372デフォルトの名無しさんNGNG
じゃあ放置で
0373デフォルトの名無しさんNGNG
>>371
ほれ
int main()
{
}
0374371NGNG
解決しました。ありがとうございました。
0375デフォルトの名無しさんNGNG
カレントディレクトリにあるファイルを調べるにはどうしたらよいのですか?
自作する場合はfopenでa,b,...,aaaa,aaab,...見たいに繰り返して何文字かの
ファイル名でオープンしていき、成功(有る)なら表示して、失敗(無い)なら
飛ばすみたいなのを考えているのですが。system("dir")はただ表示されるだけ
みたいですし。
0376デフォルトの名無しさんNGNG
>>375
標準関数だけじゃ無理。
UNIXならopendir〜readdirで。 dirとか言っているからUNIXじゃないかも。。。
0377デフォルトの名無しさんNGNG
>>375
Win32ならFindFirstFileとかかね。
0378デフォルトの名無しさんNGNG
>>375
標準 C ではディレクトリという概念が定義されていません。
ディレクトリを走査したいならコンパイラ付属のリファレンス等を見て、環境依存の
方法を探してください。
あなたの言う、全種類の名前を網羅するよう方法は全くお奨めできません。
それによってテストされるファイル名の数はどりくらいになるか見当つきますか?
0379デフォルトの名無しさんNGNG
どりくらい
どりくらい
どりくらい
どりくらい
0380デフォルトの名無しさんNGNG
371です。ひどすぎます、もう来ません。
0381デフォルトの名無しさんNGNG
>>380
そいつぁ良かった。
0382デフォルトの名無しさんNGNG
いや、そろそろネタっぽいんだけど
0383デフォルトの名無しさんNGNG
どりくらいが? ネタ?

おまえ考えすぎ!
0384デフォルトの名無しさんNGNG
いや、この文脈で 371 の件だと受け取られないとは思わなかったけれども
0385デフォルトの名無しさんNGNG
>>382-384
ネタですか?
0386デフォルトの名無しさんNGNG
>>384
「そろそろ」って ? >>371 の件だったら、「はじめから」だろ。
0387デフォルトの名無しさんNGNG
戦争反対に署名しよう!(戦争開始20日10時までに、色々な板にコピペしてください。あなたのご協力を切望します。)

http://www.thepetitionsite.com/takeaction/224622495
1.Sign This Petition!の所に名前(ローマ字)を入れボタンを押す。
2.フォームに必要事項(赤字で(required)と書かれた所)を記入し、ボタンを押す。
「E-MAIL ADDRESS」には適当なアドレスを、「STATE」には「(NON USA)」、「COUNTRY」は「Japan」を、「WHY I'M SIGNING THIS PETITION」には、戦争反対声明文を入れよう!(例:No More War!!)
3.下の「Add my Signature」ボタンを押せば、署名完了!
参考:http://xmas.site.ne.jp/topics/20010922/Petition.html
0388デフォルトの名無しさんNGNG
ここ C のスレだしなぁ…放っとこうかなぁ…けど一応ツッコミ入れとかないとなぁ…
>>373
main() オーバーロードすんな。
0389デフォルトの名無しさんNGNG
>>388
( ゚д゚)…
0390デフォルトの名無しさんNGNG
371 よりもネタっぽい人が現われたわけですが・・・
0391357NGNG
解答してくれた方、ありがとうございます。
内部エンコーディングを UCS-4 あたりにしようと考えているんですが、
いくつか捜してみましたがエンコーディングの認識の付いたものがないんです。
認識部分だけ nkf を参考にして自前で実装した方が良いでしょうか?
0392デフォルトの名無しさんNGNG
>>391
適当でイインジャネーノ?
どのみち100%の精度で認識なんて、絶対無理なんだし。
0393デフォルトの名無しさんNGNG
>>391
詳しく見てないけど、この辺は?
http://terry.jiubao.org/kanji/
0394デフォルトの名無しさんNGNG
SJISとEUC-JPのどちらでも使われているところだけで書かれているファイルをnkfに渡したらどう判断するんだろう。
0395デフォルトの名無しさんNGNG
やってみれ
多分スレ違い
0396デフォルトの名無しさんNGNG
IEでも自動判別で誤認識するよねぇ
0397デフォルトの名無しさんNGNG
>>358
ガッ
0398375NGNG
>>376-378
お答えありがとうございました。一応できました。
#include <stdio.h>
#include <windows.h>
int main(void)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind=FindFirstFile("D:\\MyCppFiles\\ファイル、ディレクトリ研究\\*.txt",&FindFileData);
if(hFind==INVALID_HANDLE_VALUE)
printf("見つかりませんでした");
else
{
do printf("%s\n",FindFileData.cFileName);
while(FindNextFile(hFind,&FindFileData));
FindClose(hFind);
}
return 0;
}
0399デフォルトの名無しさんNGNG
>>391
UCS-4はエンコーディングではない
0400デフォルトの名無しさんNGNG
>>400
UCS-400はgetではない
0401デフォルトの名無しさんNGNG
1つの文が複数行になる場合、
2行目以降をインデントしない書き方は邪道ですか?

if ( nHoge1== nHoge1 + nHoge2 + nHoge3 ||
nHoge3 == nHoge1 + nHoge2 + nHoge3 ) ←この行
  return 0;
0402デフォルトの名無しさんNGNG
見にくいと思う。ちなみに漏れはcc-mode(bsd style)まかせなのでこんな感じ
やね。

if (nHoge1== nHoge1 + nHoge2 + nHoge3 ||
  nHoge3 == nHoge1 + nHoge2 + nHoge3)
  return 0;

0403デフォルトの名無しさんNGNG
まとめて圧縮をかけてもフロッピーで複数枚になるような
サイズのディレクトリを、プログラム中でやりとりしなければ
ならないのですが、皆さんならどう作成しますか?

データサイズをみながらマウントして、情報を読み書きして、
アンマウントして・・・とか正直にいくのが正解なんですかね、
イチから作るとなると激しく面倒な気がするんですが・・・
(´Д`;)

アドバイスや、先人たちの知恵(ライブラリ等)をご存知で
したら教えてください。ちなみにLinuxです。
0404デフォルトの名無しさんNGNG
(´-`).。oO(なんでこのスレなんだろう…)
0405デフォルトの名無しさんNGNG
(´-`).。oO(いまどきフロッピーって…)
0406デフォルトの名無しさんNGNG
ふつうtar。
0407オシエテちゃんNGNG
HyperCardのwin版ってないのでしょうか?
お願い!詳しい人教えてくださいな!
0408デフォルトの名無しさんNGNG
2次元配列で混乱してきました。
int A[5][3];の宣言の意味するところは

int型の3個の要素を持つ配列を保持する5個の配列ですか?
それとも
int型の5個の要素を持つ配列を保持する3個の配列ですか?
A[0]はどんなものを保持するんですかね?
0409デフォルトの名無しさんNGNG
>A[0]はどんなものを保持するんですかね?

&A[0][0]
0410デフォルトの名無しさんNGNG
>>407
それって C 言語と関係あるの?
それって C 言語と関係あるの?
それって C 言語と関係あるの?
それって C 言語と関係あるの?
それって C 言語と関係あるの?
それって C 言語と関係あるの?
それって C 言語と関係あるの?
それって C 言語と関係あるの?


  そ れ っ て C 言 語 と 関 係 あ る の ?


0411デフォルトの名無しさんNGNG
>>409
じゃあA[1]は
&A[1][0]でいいですか?
0412デフォルトの名無しさんNGNG
>>408
前者。A[0] は int[3]
0413デフォルトの名無しさんNGNG
>>411
イイ

0414412NGNG
ただし A[0](=int[3]) は単項 & か sizeof のオペランドになるとき以外は
int[3] の先頭要素を指すポインタになる
0415408NGNG
さんくすなるほどだいぶわかりました
A[0]->□□□
A[1]->□□□
A[2]->□□□
A[3]->□□□
A[4]->□□□
みたいなかんじですね
0416デフォルトの名無しさんNGNG
あと、A[0] と A はアドレスは同じ所を表すが
型が int * と int ( *)[3]で違う
0417デフォルトの名無しさんNGNG
質問です
関数getsの引数は配列へのポインタしかとらないんですかね
例えば、宣言時に文字列リテラルで初期化した
charへのポインタを引数にして、入力ストリームから読み込んだデータで
初期化した文字列を上書きさせたりとかはできないんですか?
0418408NGNG
あひゃ
A[0]がint ( *)[3]でAがint *ですか?
0419デフォルトの名無しさんNGNG
>>417
getsの引数はcharへのポインタだが。
それと、文字列リテラルは書き換えることは出来ない。
0420デフォルトの名無しさんNGNG
>>417
文字列リテラルを書き変えてはいけないでせう
>>418
逆ぽ
0421デフォルトの名無しさんNGNG
>>418 ぎゃく。
A[0]がint * じゃないとA[0][2]見たいに出来ないじゃん
0422418NGNG
どうもたびたびスマンコ
今度こそかなりわかりました
int (*)[3]
っていうのが良く分かんなかったので
int (*)[3]はpointer to array[3] of int ですね
0423デフォルトの名無しさんNGNG
>>419
引数は確かにcharへのポインタなんですが
そのポインタが指す先のオブジェクトのメモリ領域が用意されてないと
メモリ破壊が起こるらしいっす
だから結局
引数には配列へのポインタしかとれないってことなんすかね?
0424デフォルトの名無しさんNGNG
>>422
かしこい!
0425デフォルトの名無しさんNGNG
>>423
#include<stdio.h>
int main(void)
{
    char ch;
    printf("改行してください。\n");
    gets(&ch);
    return 0;
}
メモリ破壊が起こるかどうかは入力による。
0426デフォルトの名無しさんNGNG
>>423
charへのポインタならなんでもいいんだけど、安全に動作させたかったら書き込める領域を指すポインタを渡す。
0427デフォルトの名無しさんNGNG
>>425
>>426
おお!

了解であります!
0428デフォルトの名無しさんNGNG
文字列リテラルを書換えるなんてもっての他だわ
0429デフォルトの名無しさんNGNG
ぬるぽを叩くなんてもっての他だわ
0430デフォルトの名無しさんNGNG
Win2000にセキュリティホールだってさ。
0431デフォルトの名無しさんNGNG
  セキュリティホール・・・
  (; ・∀・)  |  | 
 と    )  |  | スカッ
   Y /ノ  / /
    / )  / /Λ__Λ ?
  _/し' // ( ´∀`)>>429
 (_フ彡    (    )
0432デフォルトの名無しさんNGNG
>>431
IISらしい
http://www.kahoku.co.jp/news/2003/03/2003031801000485.htm
0433デフォルトの名無しさんNGNG
>同社によると、欠陥を放置した場合、攻撃者が
>攻撃対象コンピューターを停止させたり任意の
>プログラムを実行するなど、事実上乗っ取ることが可能。
>欠陥の中でも最大深刻度の「緊急」と位置付けている

18日発表ったら昨日か。頼むよM$。
0434デフォルトの名無しさんNGNG
処理系=コンパイラ
実装=コンパイル
と認識してしまっていいんでしょうか?
0435357NGNG
返事が遅れました、みなさんありがとう。

>>399
すみません、文字セットですよね。

みなさんはこういう対応はどうしてるんでしょう…。iconv や wchar.h じゃ
不十分だと思うんですが…。
// locale が絡んでくるから「多言語化」はできないですよね?
0436デフォルトの名無しさんNGNG
個人的には、処理系っていうとハードソフトひっくるめたコンパイル環境ってイメージだな。
実装は原語implementでしょ?コンパイルとは違う。
0437デフォルトの名無しさんNGNG
>>435
stdlibでは駄目だが、iconvならエンコーディングを自分で指定すれば
問題はないのでは?
0438デフォルトの名無しさんNGNG
for(i=0;i<strlen(player[st[sWin].player].winmes[winatr]);i++)
これって使い方あってる?
0439デフォルトの名無しさんNGNG
その行だけを出されたところで何も判断できないわけだが
0440438NGNG
上の文章でエラーが
'<' : signed と unsigned の数値を比較しようとしました。
といって弾かれるのです。
0441デフォルトの名無しさんNGNG
あまり重要でない警告。
0442デフォルトの名無しさんNGNG
警告とエラーの区別くらいつけようよ。
0443デフォルトの名無しさんNGNG
ってことは
あのコードまじで使ってるのか。
かっちょいいな
0444デフォルトの名無しさんNGNG
http://www003.upp.so-net.ne.jp/Libra/
0445デフォルトの名無しさんNGNG
>>440
i を unsigned に汁
0446デフォルトの名無しさんNGNG
警告メッセージの意味がわからないならまずコンパイラのリファレンスを調べろ。
リファレンスを調べ方がわからないと言うならばお手上げだ。
0447デフォルトの名無しさんNGNG
条件がマトリョーシカみたいだな。
0448デフォルトの名無しさんNGNG
>>447
wマトリョーシカ辞書引きそうになった。
http://www.geocities.co.jp/HeartLand-Keyaki/2341/encyclopedia/matryosh.htm
ロシアのあれな
0449デフォルトの名無しさんNGNG
マジョーリカはマジョーがえる
0450デフォルトの名無しさんNGNG
Cの書籍でvoid main(void)と書いている本の執筆者はタコと思って
いいんでしょうか?
0451デフォルトの名無しさんNGNG
すいません
標準入力ストリームからバッファに溜められたデータは
改行文字を読み込んでプログラムへ送られる時に
改行文字まで読み込むんですか
それとも改行文字はバッファに残すんでせうか?
0452デフォルトの名無しさんNGNG
>>438
間違ってるとは言わんけど、ホントに毎回 strlen() 呼ぶ必要があるか確認した方がいい。
0453デフォルトの名無しさんNGNG
for(II=0;II<kekka;II++){

}
のあとに
IIの数値を継続させたまま
for文を作るにはどうすればいいですか?
0454デフォルトの名無しさんNGNG
IIに何も代入しなければいいじゃない。。。
for(;II<kekka;II++)とか
0455デフォルトの名無しさんNGNG
>>453
意味がわかりません。
スコープって知ってますか?
0456デフォルトの名無しさんNGNG
>>453の質問の意味がわからないのはオレだけか?
0457454NGNG
>>455>>456
ループを抜けたあとにまた似たようなループをつくりたいんじゃないかと・・・
で、forではIIを0に初期化しなければならないと思いこんでいるとか。
0458デフォルトの名無しさんNGNG
>>456
俺も...。
ついでに、>>455 で唐突にスコープが出てくるのもよくわからん。
0459デフォルトの名無しさんNGNG
俺は意味は分かったがループ変数名が気持ち悪い派。
0460デフォルトの名無しさんNGNG
>>459
よく意味わかったね。すごいよ。
変数名は確かに変。意味があるならイイけど…
�Tがどっかにでてきてると思うと今日は寝れないなぁ〜
0461デフォルトの名無しさんNGNG
IIって2のことだろ
0462デフォルトの名無しさんNGNG
つまりC++であれば
for(int II=0;II<kekka;II++){
というのが許されて、スコープはfor文内なわけで・・・
まぁここはC言語スレなわけだが。
ところで453はどこへ?w
0463デフォルトの名無しさんNGNG
またC++か
0464デフォルトの名無しさんNGNG
for (void* XI = 0; XI < XII; XI++)
0465デフォルトの名無しさんNGNG
>>464
ガッ
0466デフォルトの名無しさんNGNG
なぜガッ?w
void*の++でコンパイリュエリャー
0467デフォルトの名無しさんNGNG
>>466
void *XI=0 ←ぬるぽだから。
0468デフォルトの名無しさんNGNG
>>466
Cスレだからだと思われ(w
0469デフォルトの名無しさんNGNG
>>451
改行文字はバッファに残す。
0470デフォルトの名無しさんNGNG
#define timesdo(num) for(int i=0;i<(num);i++)
main(){
 timesdo(5){
  printf("あぼーん\n");
 }
}
0471それやるなら、こうだろNGNG
#define foreach(__var, __begin, __end, __statement) do { \
 int __var; \
 for (__var = __begin ; __var < __end ; __var++) { \
  __statement; \
 } \
} while(0)


int main(int argc, char** argv) {
 foreach (i, 0, argc, printf("%s\n", argv[i]));
}
0472デフォルトの名無しさんNGNG
い、int??
0473デフォルトの名無しさんNGNG
int i=3;
func((i++)*2);

こう書いた場合、funcには必ず6が渡されますよね? 未定義とか処理系依存ではないですよね?
0474デフォルトの名無しさんNGNG
>>473
funcが関数であればいいんだが、
マクロで引数が2回以上評価されるかもしれない。
0475デフォルトの名無しさんNGNG
>>473
変数に対して副作用があるコードは、副作用完了点までにその変数が再び出現
しなければいい。
0476453NGNG
みなさまありがとうございます。

これからやってみます。

変数名のIIはiもIもiiも別の処理に使ってしまったので、
IIを使うことになったのです。

0477デフォルトの名無しさんNGNG
>>476
うわぁ……
0478デフォルトの名無しさんNGNG
>>476
君にこそハンガリアンが必要だ。
0479デフォルトの名無しさんNGNG
ファイルポインタとファイル位置指示子で混乱してきました
ファイルポインタはOSが割り当てたバッファ用のメモリ領域の先頭位置を指してて
ファイル位置指示子はそのメモリ領域で現在プログラムが読み込んでいる位置を指しているもの
という風に解釈してるんですが
>>469
残した改行文字は自動的にフラッシュされるんでしょうか?
0480デフォルトの名無しさんNGNG
ファイルポインタが指しているのはファイルの情報を収めた構造体でしょ。
0481デフォルトの名無しさんNGNG
>>480
あ、そうでしたか・・・
ちょっと頭冷やしてきます
0482デフォルトの名無しさんNGNG
>>479
質問の意味が全くわからない。
「フラッシュ」 という言葉が何を指しているのかは不明だけど、fflush() の事を言って
いるなら >>369。
で、「自動的に」 の意味が皆目見当つかない。

あと、読み込み専用に開かれているストリームの場合は、データは一方通行で巻き戻し
(fseek() や rewind() 等) が出来ず、従ってそもそもデータ位置を記録していない
場合もある。
0483デフォルトの名無しさんNGNG
>>482
了解しました。
自動的はプログラムで明示的にしなくてもで
フラッシュはfflush()のことをいいたかったです
表現が曖昧でもうしわけないです
0484デフォルトの名無しさんNGNG
int  **int_ptr,
    num;

*int_ptr = num;

ぬるぬるいんぽ。
0485デフォルトの名無しさんNGNG
>>482
> あと、読み込み専用に開かれているストリームの場合は、データは一方通行で巻き戻し
> (fseek() や rewind() 等) が出来ず、
(゚Д゚)ハァ?
0486デフォルトの名無しさんNGNG
>>485
そこで切らずに最後まで読んでくれよ。
0487デフォルトの名無しさんNGNG
>>482
> あと、読み込み専用に開かれているストリームの場合は、データは一方通行で巻き戻し
> (fseek() や rewind() 等) が出来ず、従ってそもそもデータ位置を記録していない
(゚Д゚)ハァ?
0488デフォルトの名無しさんNGNG
ワラタ
0489デフォルトの名無しさんNGNG
何でvoid main(void)なんて書いてる本が多いのでしょうか?
0490デフォルトの名無しさんNGNG
>>489
説明するのが面倒だからだと思います。
0491デフォルトの名無しさんNGNG
規格のことを良く知らないライターさんが書いてるからではなかろうか。
void main(void) が動かない処理系があっても全然おかしくないわけだし。
初めから int main(void) と書いとけば間違いないのになと思うけど。
0492デフォルトの名無しさんNGNG
>>450もみたけど
void main(void)
本の価値を決めてしまうほど
重要でもない気がする
0493デフォルトの名無しさんNGNG
>>490
説明するのが面倒とは?
0494デフォルトの名無しさんNGNG
ただ、void main(void)でANSI C準拠ですみたいなことは言わないで欲しい。
void main(void)でのサンプルコードをUNIXで動作確認しただと??
(((( ;゚Д゚)))ガクガクブルブル
0495デフォルトの名無しさんNGNG
別に大した問題じゃない。
警告がでりゃintにしときゃいい。
本当にステータスを返す必然性があるのならintにすりゃいい。
そんな事よりもっと大事な事は一杯あっぺよ。
0496デフォルトの名無しさんNGNG
言語リファレンスだったら多少問題かもしれんけどな。
0497デフォルトの名無しさんNGNG
まあしかしいきなりやられると内容に一抹の不安を覚えることは確かだ(w
0498デフォルトの名無しさんNGNG
しかし参考書の類で書いてしまうのはマズイと思うのー
0499デフォルトの名無しさんNGNG
>>498
同意。
特に入門書で、いきなり規格外のやり方を教えるのはいかがかと・・
0500デフォルトの名無しさんNGNG
DOSってどうやってつかうんでしょうか?
0501デフォルトの名無しさんNGNG
サービス停止攻撃?使うというものではないような。。
0502デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぽ
0503デフォルトの名無しさんNGNG
気合いと共に腰だめに構えて相手に突き立てる
0504デフォルトの名無しさんNGNG
 スルナ!
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        / ←>>502
0505デフォルトの名無しさんNGNG
   | \
   |Д`) ダレモイナイ・・ヌルポ スルナラ イマノウチ
   |⊂
   |


     ♪  Å
   ♪   / \   ヌルポ ヌルポ
      ヽ(´Д`;)ノ   ヌルポ
         (  へ)    ヌルポ ヌルポ
          く       



   ♪    Å
     ♪ / \   ヌルポ ヌルポ
      ヽ( ・∀・)ノ  ヌルポ
         (へ  )    ヌルポ
             >    
0506デフォルトの名無しさんNGNG
   A A ウーリャリャリャリャリャリャリャ
  ( ・∀・)   | | |
 と    )    川 ボコビシバキドカグシャ
   Y /ノ    人 ☆
    / )  ☆<  >__Λ∩
  _/し' //. V☆Д )/
 (_フ彡        /  ←>>505
0507デフォルトの名無しさんNGNG
>>501
いや、cやるならDOSつかえと、言われましたもので・・・
0508デフォルトの名無しさんNGNG
>>507
Linuxでも使え
0509デフォルトの名無しさんNGNG
ぬるぽの起源はCニダ
0510デフォルトの名無しさんNGNG
>>508
Windowsじゃだめなんですか?
0511デフォルトの名無しさんNGNG
>>510
駄目
0512デフォルトの名無しさんNGNG
>>510
やっぱLinuxだべ。
0513デフォルトの名無しさんNGNG
WindowsでCは邪道ということですか?
0514デフォルトの名無しさんNGNG
>>513
Linux+gccでやれば問題なし
0515デフォルトの名無しさんNGNG
MacOSX+gccでもいいでつか?
0516デフォルトの名無しさんNGNG
マカーはC言語を使ってはいけません。
0517デフォルトの名無しさんNGNG
>>515
いいと思われ
0518デフォルトの名無しさんNGNG
間を取ってLindowsはどうだ?
0519デフォルトの名無しさんNGNG
>>513
逆。
CにWindowsは邪道
0520デフォルトの名無しさんNGNG
というか、CよかC++を勉強したほうが(グフッ
0521デフォルトの名無しさんNGNG
LinuxにしたいけどCygwin使ってる漏れは糞ですか?
0522デフォルトの名無しさんNGNG
>>521
エエんちゃう?
そもそも Cygwin って「Windowsの糞 cmd.exe なんか使ってられないんだよもん」
という Unix 使いや、「Unix 使ってみたいけど、ちょっと敷居が…」って人向けのものでしょ。
0523デフォルトの名無しさんNGNG
ついにCを完全に死滅させることに成功し
来期からC++、Javaオンリーになりますた。
さようならC、ありがとうC君のことは永遠に忘れない。
0524デフォルトの名無しさんNGNG
>>523
ボソおまえはCから逃れられない。
0525デフォルトの名無しさんNGNG
Cygwin使ったこと無いからわからないんだけど、やっぱvoid main(void)で
エラー出るの?
技術評論社のとあるC言語の本はLinuxのgccを前提にしてるって書いてある
んだけど、void main(void)なんだよね。Linuxでも警告も出ないのってあるの?
0526デフォルトの名無しさんNGNG
test.c:5: warning: return type of `main' is not `int'
0527デフォルトの名無しさんNGNG
>>525
[user@host 22:29 user]$ cat test.c
#include <stdio.h>
void main(void) { }

[user@host 22:29 user]$ gcc test.c
test.c: 関数 `main' 内:
test.c:3: 警告: `main' の戻り値の型が `int' ではありません
[user@host 22:30 user]$ gcc --version
gcc (GCC) 3.2.2
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
0528525NGNG
>>526-527
サンクス。

なぜあの本はLinuxでvoid main(void)を使って平気だったんだろう・・・?
0529デフォルトの名無しさんNGNG
警告が出てもコンパイルは続行されるもん。
0530デフォルトの名無しさんNGNG
警告なんて一切問題のない構文でも出るし。
0531デフォルトの名無しさんNGNG
警告なら無視しちゃってもいいってことですか?
0532デフォルトの名無しさんNGNG
void* main(void) { return 0; }
0533デフォルトの名無しさんNGNG
          | | ガガガガガッ   .人
  ( ・∀・)   | |       人  <  >__Λ∩
 と    )    | |    人  <  >__Λ∩Д´)/
   Y /ノ    .人   <  >__Λ∩Д´)/   / ←>>532
    / ) .人 <  >__Λ ∩Д´)/   / ←>>532
  _/し' <  >_Λ∩Д´)/   / ←>>532
 (_フ彡 V`Д´)/   / ←>>532
            / ←>>532
0534デフォルトの名無しさんNGNG
gccなら-Wallでワーニングが出なくなるまでやらなきゃ……
0535デフォルトの名無しさんNGNG
普通、alias gcc="gcc -Wall" だろ。
0536デフォルトの名無しさんNGNG
if(a=b())
こう書いただけでも警告がでるんだが・・
0537デフォルトの名無しさんNGNG
いや、alias gcc="gcc -Wall -ansi -pedantic"だろ。
0538デフォルトの名無しさんNGNG
void main(void)の奴ってWindowsでしかCやったこと無い奴なんじゃないの?
0539デフォルトの名無しさんNGNG
HINSTANCE main(DWORD dwArgCount, LPSTR* ppArgs)
0540デフォルトの名無しさんNGNG
K&Rのソースって
main(){
}
が多いけど
-Wall でやると
何かエラーでない?
0541デフォルトの名無しさんNGNG
整数値を返していないだけだろ。
0542デフォルトの名無しさんNGNG
>>537
普通、makefile に CFLAGS=-Wall -ansi -pedantic って書くだろ...。
ここ最近 gcc なんか直接起動したことないぞ。
0543デフォルトの名無しさんNGNG
makefile中ではaliasは無効なの?
そうでなければ別に……
0544デフォルトの名無しさんNGNG
make使うほど大きなプログラムは書かないもーん
0545デフォルトの名無しさんNGNG
>>536
if ((a = b()) { }
if (a = b()) だと a == b() と間違える場合があるから、複数の式に分けるか
() で括って、明示的に示せという事らしい。

>>542
ちょっと遊びで書いたコードとかコンパイルする時に使うかな、俺は。

>>543
普通 makefile 内では alias きかん。
0546デフォルトの名無しさんNGNG
>>545
ちょっとしたプログラムでも、
たとえば abc.c なら、
% make abc
を実行しているよ。そうすりゃ自動的に、
gcc abc.c -o abc
としてくれるからね。
a.out にしたくないから、いつでも make を使う。
0547デフォルトの名無しさんNGNG
>>538
void main(void)で書かれている書籍って割と多い気がする。
googleで検索しても間違いだって書いてあるページが割とある。
だからそう言う本は避けて買えばいいんじゃない?
void main(void)系で書かれてる本で良本なのってある?
0548デフォルトの名無しさんNGNG
>>547
モノの本質を見ろと。
0549デフォルトの名無しさんNGNG
>>547
そういう本って (特に入門本・初心者本) delete[] とすべきところで
delete と書いていたり、説明を曖昧にして危ういのが多い。(また C++
の話かと言われそうだ)。しっかりした本を選ぼうと思ったら、それも
ひとつの判断材料にはなると思う。
0550デフォルトの名無しさんNGNG
>>549
そもそも参考文献スレにいかずに何調子に乗ってんの?うざいんですが。
0551デフォルトの名無しさんNGNG
>>550
void main(void) で本出してしまった人ですか?
0552デフォルトの名無しさんNGNG
>>551
大丈夫、そう言う本出す奴に限って部下か学生にサンプルプログラム書かせて
同僚辺りに文章書かせて自分は口出すだけだから何が問題か判ってないから。
0553デフォルトの名無しさんNGNG
void main()
{
printf("おまえらそんなことで熱くなるなよ\n");
}

0554デフォルトの名無しさんNGNG
どーでもいいじゃんよー
そんなちっせぇことにこだわんなよー
極初心者が↓これ見たらそんだけでムツカシソーって思うかも知らんからじゃねーのー
int main(int argc, char* argv[])
0555デフォルトの名無しさんNGNG
>>554
int main() でいいだろう(w パラメータ付けなくても。最初に int main()
を教えて、関数を学ぶときに main は誰が呼ぶかに言及すればいいんだよ。
0556デフォルトの名無しさんNGNG
char* argv[] <- 実際、最初はこれが難しかった
0557デフォルトの名無しさんNGNG
FILE* main(FILE* pfile, FILE** ppfile)で良いだろ
0558デフォルトの名無しさんNGNG
>>482
>あと、読み込み専用に開かれているストリームの場合は、データは一方通行で巻き戻し
>(fseek() や rewind() 等) が出来ず、従ってそもそもデータ位置を記録していない場合もある

いろいろ考えてみたんですが、こういうことでしょうか?
ファイルのデータ量がバッファ領域の完全バッファ量を超えた場合
超えた部分は吐き出されて、次の部分のデータを新たにバッファ領域に読み込むから
その場合、ファイル位置指示子が示している位置はファイル全体からの相対的な位置ではなく、
バッファ領域に読み込まれた部分における先頭位置からの位置となるから
正確にファイルの位置を指しているわけではない
0559デフォルトの名無しさんNGNG
1:int *p;
2:int* p;

2で書く奴キモい
0560デフォルトの名無しさんNGNG
2はC++erの書き方だーね。
漏いらはint * p;
0561デフォルトの名無しさんNGNG
おまえらまだまだだね

int* *p;

これが最高にキモい
0562デフォルトの名無しさんNGNG
2chのCスレで散々がいしゅつなFAQと宗教戦争ネタいい加減どっかにまとめたら?
0563デフォルトの名無しさんNGNG
>>559
1 の方がキモイ。char ch[] とかもう見てらんない。

>>562
お前キモイ。いい加減どっかにまとめたら、なんてもう見てらんない。
0564デフォルトの名無しさんNGNG
#define pointer *

int pointer pn;
0565制御屋さん見習中NGNG
ネタではありません、質問です。

関数の返り値で、
return OK;
または
return ERROR;

としたいです。

このとき、普通
OKは0で、ERRORは1にするのが
良いでしょうか?

それとも逆でしょうか?
(どちらも違う?)
0566デフォルトの名無しさんNGNG
>>565
ERRORは-1で。ネタではありません。
0567デフォルトの名無しさんNGNG
>>565
悪いけどネタにしか見えない。
ゴメン
0568デフォルトの名無しさんNGNG
>>565
単に成功失敗なら
#define TRUE 1
#define FALSE 0
で成功したらTRUE失敗したらFALSEを返す。

エラーの種類がいろいろなら0が成功0以外が失敗。
0569デフォルトの名無しさんNGNG
普通これくらいは数値をそのまま書くと思うけど・・・
0570デフォルトの名無しさんNGNG
普通自前かライブラリでBOOLくらい定義していると思うけど・・・
0571制御屋さん見習中NGNG
まじめです、本当。

OKは 0で
ERRORは -1
にしとけば、良いですか?

K&Rでは、OKは0で、ERRORは1
です。
0572デフォルトの名無しさんNGNG
>>571
数字をそのまま書けって。
エラーの種類がいろいろあるなら話は別だけど。
0573制御屋さん見習中NGNG
間違い!

ERROR は-1でした。
すみません!!
0574制御屋さん見習中NGNG
みなさん、すみません。

>>568さんのを
頭に入れつつ、
数字を書きます。

プログラムを提出(仕事ね)
するので、混乱しないよう、
数字にしときます。

0575デフォルトの名無しさんNGNG
>>574
プロかよっ!!
0576デフォルトの名無しさんNGNG
>>574
関数の説明のコメントは忘れずに。
0577制御屋さん見習中NGNG
>>575
見習中です。まじで。

>>576
コメントは沢山いれろと
上司に言われました。
0578デフォルトの名無しさんNGNG
>>577
おうむ返しは厳禁
0579デフォルトの名無しさんNGNG
typedef enum { False = 0, True = !False } Boooool;
でも使っと毛。
0580デフォルトの名無しさんNGNG
>>579
なんでTrue = 1にしないの?
0581制御屋さん見習中NGNG
>>578

すみません、おうむ返しとは
どういう行為ですか?

あまり、マナーを分かっていないもので。
0582デフォルトの名無しさんNGNG
>>581
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%A4%CC%A4%EB%A4%DD+%A4%AA%A4%A6%A4%E0%A4%AC%A4%A8%A4%B7&sw=2
0583デフォルトの名無しさんNGNG
>>569,572,574
数値直書きは現金。エラー複数返すときは#defineかenum使え。
0584デフォルトの名無しさんNGNG
>>583
#include <stdlib.h>
int main()
{
return EXIT_SUCCESS;
}
とかやる人?
0585デフォルトの名無しさんNGNG
ぬるぽ?
0586デフォルトの名無しさんNGNG
>>584
>>583 じゃないが、俺やってるよ。
0587デフォルトの名無しさんNGNG
>>585
ガッ
0588デフォルトの名無しさんNGNG
漏れなら
HRESULT main()
{
 return S_OK;
}
ってやるな
0589デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>585
0590デフォルトの名無しさんNGNG
>>586
ガーン・・・
0591デフォルトの名無しさんNGNG
ふつー
#ifndef __cplusplus
typedef unsigned char bool;
#define true (1)
#define false (0)
#endif
0592デフォルトの名無しさんNGNG
ちょっとききたいんだが
C FAQ 日本語訳
をちゃんと読んでいるやつはどれくらいいるんだ?

ちゃんと読んでたら議論するようなことじゃないようなことじゃないことばかりでとまどうよ
0593デフォルトの名無しさんNGNG
>>592
読みますた
0594デフォルトの名無しさんNGNG
確かに最後の行に戸惑いが覗える
0595デフォルトの名無しさんNGNG
メモリの解放っていつやればいいんですか?
0596デフォルトの名無しさんNGNG
>>595
いらなくなった時。
0597デフォルトの名無しさんNGNG
>>558
関係ない。>>482後半は意味不明だから無視するように。
0598デフォルトの名無しさんNGNG
>>597
stdinとかのことを言っているんだと思うけど。
0599デフォルトの名無しさんNGNG
>>595
メモリが独裁者によって支配されたとき。
0600デフォルトの名無しさんNGNG
>>599
root?
0601デフォルトの名無しさんNGNG
>>598
sadom stdin
0602デフォルトの名無しさんNGNG
scanfってキーバッファから入力データを読み出してるんですか?
0603デフォルトの名無しさんNGNG
>>602
抽象化された標準入力からだと思います。
0604デフォルトの名無しさんNGNG
RubyはCで作られているんだよ。
0605デフォルトの名無しさんNGNG
RubyはRubyで作られているんだよ
0606デフォルトの名無しさんNGNG
>>605
それはない。JavaはRubyでも作れるけどな。
0607デフォルトの名無しさんNGNG
でもCはCで作られているよ
0608デフォルトの名無しさんNGNG
>>598
読み込み専用のストリームは*stdinだけ*か?
また、デバイスやパイプに対するstdoutは?
0609デフォルトの名無しさんNGNG
>>608
文盲?
0610デフォルトの名無しさんNGNG
"とか"と言っているのに"のみ"に置き換えてしまう>>608の脳はどうなっているんでしょう。
0611デフォルトの名無しさんNGNG
>>609,610
>>482か?
要するに「seekできない」という「デバイスに対する動作」を、stdinから読
み込み専用すべてに誤って過般化しているという問題なんだが。
0612デフォルトの名無しさんNGNG
半角?くん、久々の登場です!
0613デフォルトの名無しさんNGNG
半角?くん?
0614デフォルトの名無しさんNGNG
はんかくはてなくん
はてなはんかくん
0615ネニグレクト・ラーファNGNG
何か質問があったら俺に聞けでつ。
最近HTMLがわかってきたでつ。
「世界の仕組み研究所」
ttp://www.geocities.jp/fieldabout/
0616デフォルトの名無しさんNGNG
半角?くんって誰?
0617デフォルトの名無しさんNGNG
ちょっとイかしたアウトロー
0618デフォルトの名無しさんNGNG
>>617
>>610のこと?>>611のこと?
0619デフォルトの名無しさんNGNG
半角二次元?
0620デフォルトの名無しさんNGNG
( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>582
0621デフォルトの名無しさんNGNG
>>582
そういう技もあったのか…
0622デフォルトの名無しさんNGNG
ぬるぽ?
0623デフォルトの名無しさんNGNG
ズレテンジャネーカ
  ( `Д´)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V・∀・)/
 (_フ彡        /  ←>>620
0624デフォルトの名無しさんNGNG
ドリフのハンマーで頭殴ったときの効果音が好きだった。
0625 NGNG
質問です
かなり大きな数(読み方がわからないくらいのオーダーです)を
Cで扱うにはどうすればよいでしょうか。
よろしくお願いしいます。
0626デフォルトの名無しさんNGNG
>>625
文字列
0627デフォルトの名無しさんNGNG
>>625
多倍長ライブラリを使う。
0628デフォルトの名無しさんNGNG
演算子のオーバーロードってできないの?
0629デフォルトの名無しさんNGNG
う足す足すなら出来ます。
0630デフォルトの名無しさんNGNG
リニアホイールなら出来ます。
0631デフォルトの名無しさんNGNG
ヴォイジャーのワープコアなら出来ます
0632デフォルトの名無しさんNGNG
ループの中でプロトタイプが
BYTE func(BYTE c); の;関数を何度も呼び出す場合
呼出し側でたとえば
while(1)
{
func(var) ;

}
このようにある時、
変数varがint型かBYTE型かでスピードが変わったりしますか?
0633デフォルトの名無しさんNGNG
>>632
することもあるししないこともあります。
コンパイラの最適化やCPUアーキテクチャによって変わります。

一概にどう書けば速くなる、とは言えませんが、経験的には int で
積むのが素直で速いコードになる気がします。
でも最終的にはコンパイラの吐いたコード見て調べるしかないと思います。
0634632NGNG
>>633
早速ありがとう。 勉強になるなぁ。
0635デフォルトの名無しさんNGNG
>>633
>でも最終的にはコンパイラの吐いたコード見て調べるしかないと思います。
no.
コード見ただけで、キャッシュや、遅延分岐等の影響まで判断出来たら神。
実際に時間計るしかないってのが正解だと思われ。

もちろん言いたい事は解るし、他も概ね同意だけど。
0636デフォルトの名無しさんNGNG
着弾凄い
0637デフォルトの名無しさんNGNG
>>636
イラク?
0638デフォルトの名無しさんNGNG
おお、燃えてる・・・
0639デフォルトの名無しさんNGNG
燃えるイクラ
0640デフォルトの名無しさんNGNG
最近のCGの進歩ってものすごいものがあるね。
光のエフェクトはいうまでもなく建物のモデリング・シェーディングや
煙の物理計算も信じられないほどリアル。
0641デフォルトの名無しさんNGNG
お前の脳内イラクの人も大変だな
0642デフォルトの名無しさんNGNG
>>640
CGの進歩というよりコンピュータの進歩
0643デフォルトの名無しさんNGNG
>>632
結果をint変数に引き取る場合、一般的に戻り値はintのほうがタイトなコードになる。
;int i = func();
call func
mov r1(as int i), r0(ret)
and r1, 0xff ;戻り値がBYTEの場合のみ必要

ただし、関数側でBYTEからintに拡張する場合は結果的に同コスト。
;in func
;return b;
mov r0(ret), r1(as BYTE b)
and r0, 0xff ;戻り値がintの場合のみ必要
return (to caller)

なお、一般的には関数から定数を戻す場合はintで戻すほうがいいが、
CPUによってはBYTE定数のほうがタイトなコードになる場合もある。
;in func
;return -1;
mov r0(ret), 0xffffffff
; mov r0(ret), 0xff ;イミディエイト値の幅の差で命令長が短くなる
return (to caller)
0644デフォルトの名無しさんNGNG
>>635
そんなことを言い出したら...

> 実際に時間計るしかないってのが正解だと思われ。

と言うのも怪しい。計る度に違うこともあるからね。

俺は、このスレ的には >>633 で正解だと思う。
0645デフォルトの名無しさんNGNG
関数引数または戻り値にintより小さい整数型を使うと
パフォーマンスを損なう可能性があると言える。

漏れは、intより小さい整数型は構造体メンバか、ポインタが必要な場合にしか使わない。
0646デフォルトの名無しさんNGNG
アセンブリて知っといた方がいいんすかね?
めんどくさいんで勉強したくないんすが
できれば無視してじゃばに行きたんすが
0647デフォルトの名無しさんNGNG
>>646
先人たちのおかげで知らなくても生きてはいけそうです。
でも、かなり楽しそうな分野であることも間違いないです。

て言うか、アドレスとかビット演算とかって高級言語でも常識だから文法さえ覚えれば書けそうな予感。
0648デフォルトの名無しさんNGNG
アドバイスおながいします。
バイナリのファイルを1バイトづつ読み込んで検証するプログラムを作ろうと思っています。
FILE *fp;
char buf = 0;
fp = fopen(file_location, "r")
while(fread(&buf, 1, 1, fp) != EOF) {
printf("%02X,",buf);

}
fclose(fp);
っていう感じでやろうと思ったんですが、これだとint型が僕の環境だと4バイトもあるので
bufの中身が4D000000みたいになってしまいます。(欲しいデータ4Dです)
でbufを1バイトのchar型にしたら少しうまく行ったのですが、
なんかおかしなやり方をしている気がします。
また、ファイルの終端の判断もおかしくて、一生終わりません。
終わり方はあとで考えるとして、1バイトのデータを読み込むためには
どのような方法がいいんでしょうか。
0649デフォルトの名無しさんNGNG
>>648
unsigned charってとこじゃないの?
0650デフォルトの名無しさんNGNG
>fp = fopen(file_location, "r")

fp = fopen(file_location, "rb")
とりあえずここはこうじゃないの?
0651デフォルトの名無しさんNGNG
>>648
関数マニュアル fread をよく読め。
戻り値は EOF じゃなくて成功した要素数。
0652デフォルトの名無しさんNGNG
おお!>>649さん、>>650さん、ありがとうございます。
この2点、書籍でも確認できました。まず変更してみます。
必要に迫られて作ってるのですが、先が思いやられるです(^^;)。
0653デフォルトの名無しさんNGNG
>>651さん どうもです。
そうですよね、やっぱり。第3引数が1だからきっと1以外で終了
なんだろうなあと思ったんですが、止まらなくなったので
いろいろ試してたです。がんばります。
0654デフォルトの名無しさんNGNG
>>653
こうしてみる。

fp = fopen(file_location, "rb");
// fp エラーチェックを入れる
while(fread(buf, 1, 1, fp) != 0)

1バイトずつ読むなら int c; while( (c = fgetc(fp)) != EOF ) で
いいと思うけども。
0655デフォルトの名無しさんNGNG
>>653
そうだね。1以外で終了ってことはつまり1で続行するから。
while(fread(buf,1,1,fp)==1) だね。
がんばって。
0656デフォルトの名無しさんNGNG
>>653さん ありがとさんです。
なるほど、fgetcでOKだったんですね。テキスト書類しか扱ったことが
なかったので、とりあえずfgetcとかchar型変数とか普通のやり方じゃ
だめなんだと思ってました。
とりあえず、unsigned charと終了条件の変更ですべてうまく行ったっぽいです。
"rb"に関しては変更しなくても何故かうまく行きましたが、とりあえず
ちゃんと変更しておきました。>>654さんのも今から試してみます。
ありがとうございましたー。
0657デフォルトの名無しさんNGNG
普通"r"。

"rb"なんかにする必要があるのはへんなOSだけ。
0658デフォルトの名無しさんNGNG
>>657
そうですね、移植性も気にせずとてもいいお考えだと思います。
あなたの前途を祝して、乾杯。
0659デフォルトの名無しさんNGNG
>>656
バイナリはバイナリモードで開くと覚えておいて。
バイナリ指定をしないと、例えばバイナリで (0xD)CR (0xA)LF と
いうコードが出てきたとき、ライブラリが '\n' に変換する。
これはCでMicrosoftのテキストファイルを開くときに都合がいいけど
バイナリでこの処理されると困るから。
0660デフォルトの名無しさんNGNG
fopen等でフルパスを与えられる事はこのスレのちょっと前に乗っていて分かった
のですが、一つ下、一つ上のディレクトリの指定の仕方があるなら教えてください。
0661デフォルトの名無しさんNGNG
嫌ですっ!
0662デフォルトの名無しさんNGNG
相対パスってことを言ってますか?
C言語以前の問題ですがw
0663デフォルトの名無しさんNGNG
そうたい!
0664デフォルトの名無しさんNGNG
>>662の中の人も大変だな。
0665デフォルトの名無しさんNGNG
C言語極めたらプログラマーになれますか?
0666デフォルトの名無しさんNGNG
>>665
安いコーダーとしてなら使ってもらえるんではないでしょうか?
0667デフォルトの名無しさんNGNG
極めなくても、
プログラムを組む人をプログラマーと言いますが何か?
0668デフォルトの名無しさんNGNG
他のスレで、レスがないのでここで聞いてみます。
すみません。教えてください。
C言語でAPIが呼ばれる毎に識別可能なメモリ領域を確保するには
どのようにしたらよいでしょうか。
0669デフォルトの名無しさんNGNG
まろっくしてたりなくなったらりあろっく
0670デフォルトの名無しさんNGNG
まほろまてぃっくしてたりなくなったらみなわまてぃっく
0671デフォルトの名無しさんNGNG
>>670
荒らすな
0672デフォルトの名無しさんNGNG
定数(例えば5)をファイルに書き出す時に
書き出すバイト数を決めておきたい場合(例えばsizeof(int))は、

int n=5;
fwrtie( &n, sizeof(int), 1, fp );

みたいに書くしかないんでしょうか。
0673デフォルトの名無しさんNGNG
>>672
何を期待しているのかわからない。っていうか引数の順番それでよかったっけ?
0674デフォルトの名無しさんNGNG
>>673
引数は正しい。
戻り値見てないとかは置いといて。
0675672NGNG
5を、(例えば4バイトで)ファイルに書き出したい。
fprintfだとバイト数は指定できないからfwriteを使ったのだが。
それとも、fwriteの使い方間違ってる?

0676デフォルトの名無しさんNGNG
ところで、
1: fwrite( &n, sizeof(int), 1, fp );
2: fwrite( &n, 1, sizeof(int), fp );
どっち使ってる?
戻り値チェックしないとして(w
処理系にもよると思うけど、関数内部で速度的な差とかあり?
0677674NGNG
>>675
間違ってないよ。使う関数もfwriteで正解。
エンディアンとかで問題無ければ。
0678デフォルトの名無しさんNGNG
挑戦age
0679デフォルトの名無しさんNGNG
fwr t i e
には突っ込まないのか?
0680デフォルトの名無しさんNGNG
ブロックバイト数×ブロック数だから1が正解。
sizeof struct×配列数を想定していると思われ、
処理速度等はディスクキャッシュとかに左右されるのでは?

あと、質問の例として出したコードに戻り値チェックしてないとか言うのは
揚げ足取り以外の何者でも無いですなw
0681674NGNG
>>680
戻り値の事書かないで「全面的に正しい」なんて書いたら
揚げ足取られるの漏れの方だから(w
0682デフォルトの名無しさんNGNG
>>676
関数内で size*n してるだけなので、
速度はまず変わらないと思われ。
0683デフォルトの名無しさんNGNG
>>672
ファイルサイズ固定じゃなきゃいけないとか、
バイナリデータじゃなきゃいけないとか、
大きな値を格納するときに極力サイズを減らしたいとか、
簡単に見られちゃ困るとか、
そういった要請がないならテキストファイルにしとき。
つまり、fwrite(&n, sizeof(int), 1, fp);の代わりにfprintf(fp, "%d\n", n);な。

データが2次元的な構造なら
for (iy = 0; iy < height; iy++) {
 for (ix = 0; ix < width; ix++) {
  if (ix > 0) {
   fprintf(fp, ", ");
  }
  fprintf(fp, "%d", data[iy][ix]);
 }
 fprintf(fp, "\n");
}
とでもすればcsvファイルとしてエディタでもExcelでも読み書きできてデバッグに便利だ。
0684660NGNG
できました。と言うか、実験もしない、具具ってもいませんでした。すいません。
HTML等と大体一緒なんですね。\\と2つ使うのを除いては。
・何も指定しないと今のフォルダ
・フォルダ名\\で今のフォルダにあるフォルダの中に入る
・..\\でそのフォルダの1つ上のフォルダに戻る
0685デフォルトの名無しさんNGNG
HTML?
0686デフォルトの名無しさんNGNG
URLのことかと。
0687デフォルトの名無しさんNGNG
つーか、>>660 は「ファイルシステム」について調べた方がいいな。
0688デフォルトの名無しさんNGNG
ディレクトリ区切りはMS-DOS系の場合、バックスラッシュ(\)なので
Cではエスケープして"dir\\file"とする必要がある。
ここで注意しないといけないのは、ShiftJisの2バイト目が'\\'と同じコードに
なる可能性があるのでディレクトリ区切りとファイル名の一部と区別がつけにくいこと。
某芝のMP3プレイヤのバグもこれが理由だった。

こんなOSいやだ。
0689デフォルトの名無しさんNGNG
>>688
>ShiftJisの2バイト目が'\\'と同じコードになる可能性があるので

べつに区切り文字がなんであろうと同じ問題が起きるだろ?
0690デフォルトの名無しさんNGNG
>>689
つーか OS の問題じゃねーだろ。
初期の DOS は忘れたけど、Windows になってからはそんな問題聴いたことがないよ。
問題があるのは、Shift-JIS に対応していないタコな処理系で日本語使おうとしているタコな >>688 だろ。
0691デフォルトの名無しさんNGNG
ShiftJIS で二バイト目に '/' が来ることってあるんだっけか?
0692デフォルトの名無しさんNGNG
>>691
あれ? 無いみたいだ 689のこと忘れてください・・・
0693デフォルトの名無しさんNGNG
>>689
ディレクトリ記号をファイル名に使ってしまうOSなんて、DOS系以外知りませんが?
>>690
自前でフルパスを分解するような処理を書いたことないなら黙ってたら?
>>691
字は読める?
0694デフォルトの名無しさんNGNG
>>691
>>689のこと言ってたのか、すまん。
0695660NGNG
>>687
?。パスのやり方が違うのですか。うまく指定したフォルダにファイルを作れたのですが。
0696デフォルトの名無しさんNGNG
>パスのやり方

はぁ?
0697デフォルトの名無しさんNGNG
>>695
あきらかに君のレベルとは違う話してるので、気にしなくてよろしい。
0698デフォルトの名無しさんNGNG
>>693
> 自前でフルパスを分解するような処理を書いたことないなら黙ってたら?

普通 ライブラリか API 使うだろ。

自分で書いたとしてもたいしたことないけどね。
0699デフォルトの名無しさんNGNG
どうでもいいことで、煽ったり煽られたりするな
0700デフォルトの名無しさんNGNG
>>688
DOSやWindowsでも"dir/file"でアクセスできる。
0701デフォルトの名無しさんNGNG
setvbufはOSが割り当てるバッファとは別の場所に
バッファを設けるやつなんすか?
0702デフォルトの名無しさんNGNG
>>700
入力は'/'だけじゃなくて'\\'も受け付けないといけなかったりするもんで。
0703デフォルトの名無しさんNGNG
>>701
と、いうかプログラマが用意してやらないといけない。
その領域は少なくともクローズされるまでは確保されていなければならない。
0704デフォルトの名無しさんNGNG
>>702
入力として外部から与えられるならプログラム中に書くように '\\' と二つにする必要はない
(これはいいよね?)。
その他の場合も普通の API ならプログラマが特に気にしないといけない実装になってる方がおかしい。
もしそういうAPIの環境下なら適当なwrapperをかけてやるといい。
0705デフォルトの名無しさんNGNG
最近Cをはじめて、時々聞くのですが
「標準ライブラリ関数の自作」ってどうやるんですか?
最初からC言語側で用意されてる関数を自作ってことですよね?
たとえば、printf()やscanf()等の自作はどうやるのでしょうか?

知ってるかた、教えてください。よろしくお願いします。
0706デフォルトの名無しさんNGNG
>>705
glibcというGNUライブラリで実装されているよ。
勉強になるから読んでみるといい。

(ニヤ
0707706NGNG
実装というか、実装ソースが公開されている。ということで。
0708デフォルトの名無しさんNGNG
>>705
printf/scanf 共に最小単位が一文字なんだから最後は(仮想的な)一文字入出力に行き着くのはわかるよね
そこまでは <stdarg.h> を使った可変長引数関数を作ることになる
そこから先の部分は(バッファリングの実装を含めて)環境依存になると思う
0709デフォルトの名無しさんNGNG
キーボードからのバッファリングについて質問なんですが
バッファに読み込んだ1行データはプログラムが読み出したときに
バッファから開放されるんですか?
それともデータはバッファに残ってて、バッファ内の読み出し位置を示すポインタが
次の読み出し位置をポイントするだけなんでしょうか?
0710デフォルトの名無しさんNGNG
>>709
普通後者
0711デフォルトの名無しさんNGNG
>>710
礼を言う
0712デフォルトの名無しさんNGNG
>>711
早く言ってよ。
0713デフォルトの名無しさんNGNG
>>712
I LUV U BABY
0714デフォルトの名無しさんNGNG
曲名じゃねーか。
0715デフォルトの名無しさんNGNG
今Cを勉強している者なのですが、
例題とかを公開してるページってないでしょうか?
知っていたら是非教えて下さい。
0716デフォルトの名無しさんNGNG


    ぐ    ぐ    れ
0717デフォルトの名無しさんNGNG
ぐぐりましたが、参考書のオンラインショッピングしか出てきません。
0718例題NGNG
int a;
0719難問NGNG
「自身と同じ型の関数ポインタ」を返す関数の型って、どう書けば良い?
例えば↓で ? の部分に何を書いたら良いのか。

? hoge()
{
 return hoge;
}

一応 void* でもコンパイルは通るが、↓のようなコードは通らない。

phoge = hoge;
for( cnt=0; cnt<10; ++cnt )
  phoge = phoge();
0720デフォルトの名無しさんNGNG
これはどう考えてもムリだということは一目瞭然と思われ。
phoge = phoge();
0721デフォルトの名無しさんNGNG
>>719
直接に定義することはできない。
汎用の関数ポインターを返す関数を 用意して、
ポインターを渡すたびに関数の型にあわせて慎重にキャス トを行う。
または関数が構造体を返すようにする。
その構造体は、そ の関数へのポインターだけをメンバーに持つようにする。

以上はC FAQの引用である

あと、void *に関数ポインタをいれてはいけない。
0722デフォルトの名無しさんNGNG
>>719
それってエラー出ないの?
そういうコトが起きる可能性があるから
同名変数の2重定義とか気をつけるんじゃない?
0723デフォルトの名無しさんNGNG
>>722
何か勘違いしてませんか
0724デフォルトの名無しさんNGNG
厳密に定義はできないんじゃないかな。
無理矢理キャストすればなんとでもなりそうだけど。

ちなみにgccだけど、void * で
 phoge = phoge();
は動いたよ。
0725デフォルトの名無しさんNGNG
void *に保証されていることはオプジェクト(すなわちデータ)を指すポインタを格納できることだけだ。
関数ポインタをvoid *に変換することは移植性が高くない。(マシンによっては関数ポインタは非常に大きい。どのデータポインタよりも大きい)

しかしながら、すべての関数ポうん他派、呼び出す前に適切な型に戻す限り、互いに変換可能が保証されている。
だからどのようなものでよいからなんらかの関数型(普通はint (*)()かvoid (*)())を汎用の関数ポインタとして使えばよい。
オブジェクトへのポインタと関数へのポインタをかわるがわる保存する場所が必要なら、
移植性の高い解決策はvoid *と汎用の関数ポインタからなる教養態を使うことである。

これ嫁
0726デフォルトの名無しさんNGNG
>>725
これの引用元は何?
0727デフォルトの名無しさんNGNG
>>726
失礼、これの引用もとは C FAQ

ただしオンラインのFAQでは欠番だった。
本で出ているほうが欠番も少ないし、一つ一つ細かく、ちゃんとコード例も多い
0728デフォルトの名無しさんNGNG
>>727
ありがとう
0729728NGNG
ちょっと目から鱗だった。
0730デフォルトの名無しさんNGNG
ちょっと目からぬるぽだった。
0731デフォルトの名無しさんNGNG
ドウイウイミダヨ
          | | ガガガガガッ   .人
  ( ・∀・)   | |       人  <  >__Λ∩
 と    )    | |    人  <  >__Λ∩Д´)/
   Y /ノ    .人   <  >__Λ∩Д´)/   / ←>>730
    / ) .人 <  >__Λ ∩Д´)/   / ←>>729
  _/し' <  >_Λ∩Д´)/   / ←>>730
 (_フ彡 V`Д´)/   / ←>>730
            / ←>>730
0732デフォルトの名無しさんNGNG
>>682
本当にそう思うか?
ディスクフルがもうすぐ起こる状態で第 2 引数と第 3 引数を入れ替えて実験
した事は無いか?
0733デフォルトの名無しさんNGNG
>>732
どっちにしろ動きはOS依存。
0734デフォルトの名無しさんNGNG
>>676
1 の方が早い実装があると思うがどうよ
(いやもちろん作為的に逆には出来るけど)
覚えてたら後で実験してみる
0735デフォルトの名無しさんNGNG
最大の謎はなんでfwriteはあんなインターフェイスになっているかだ

fwrite( buffer, buffer_size, fp);

で別にいいじゃないのか?
0736デフォルトの名無しさんNGNG
たとえば要素数が10個のint型の配列を書き込むときはそうした方が自然だから。callocと同じ。
0737デフォルトの名無しさんNGNG
>>736
だとするなら、fwrite関数はそれを意味するように呼ぶべきだよね
実行効率を気にするよりも
0738デフォルトの名無しさんNGNG
>>735
I/Oが単純なバイトストリームじゃない環境だと、動作が異なるという話を聞
いたことがあるような気がする。
そんなのもちろん使ったことないし、よく覚えてないが。
0739デフォルトの名無しさんNGNG
>>734
してみたけど一緒だった。
考えてみりゃ早くなるなら早くなるように作るのが当然だわな
0740デフォルトの名無しさんNGNG
int型year変数があり西暦が入っているのですが、sprintf一発で下2桁の年号
を文字列で取り出したいです。
可能なんでしょうか?
可能だとしたら、どのように指定すれば良いか教えて下さい。
宜しくおながいします。
0741デフォルトの名無しさんNGNG
sprintf(buffer, "%d", year % 100);
0742デフォルトの名無しさんNGNG
>741
即レス誠にありがとうです。解決です。
0743デフォルトの名無しさんNGNG
int型の変数をchar型にキャストしたい時って、対象のchar型変数は
配列にする必要があるのでしょうか?ご教授お願いします。
0744デフォルトの名無しさんNGNG
無い
0745デフォルトの名無しさんNGNG
どうもありがとうございました。
やってみます。
0746デフォルトの名無しさんNGNG
>>1
C言語ってなんですか?
0747デフォルトの名無しさんNGNG
>>746
しね
http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&q=C%8C%BE%8C%EA%82%C6%82%CD&lr=
0748デフォルトの名無しさんNGNG
((提案なんだけど、(読みやすくするために))全ての式にカッコ(()←これね)を付けようよ。)
(i++);
((s)=((a)+(d[((org((i)))+(i))])));
0749デフォルトの名無しさんNGNG
(((ちょっと)提案なんだけど、(読みやすくするために))全ての式にカッコ(()←これね)を付けようよ。)
(i++);
((s)=((a)+(d[((org((i)))+(i))])));
0750デフォルトの名無しさんNGNG
>>748
i++ という式に括弧を付ける。
(i++);
(i++) というのは式なので、これに括弧を付ける。
((i++));
((i++)) とい(略。

春だからってイイ気分なのは構わんが、黙って ROM ってろ、ボケ。
0751デフォルトの名無しさんNGNG
((あっ…)ごめんなさいね(二重カキコ(をしちゃったね)))
0752デフォルトの名無しさんNGNG
ガクブルみたいだな。
0753デフォルトの名無しさんNGNG
>>748
そういう奴はLispでプログラム書いてろ
0754デフォルトの名無しさんNGNG
俺には正規表現のように見える。
0755デフォルトの名無しさんNGNG
>>753
Lisp を貶めてるだけの馬鹿だと思われるので、Lisp 界に引きずりこまないでください。
0756デフォルトの名無しさんNGNG
ここで「たくさん釣れた」がくるのに100ペリカ↓
0757制御屋さん見習中NGNG
スレ違いな質問かもしれません。

(質)
組み込み系にCでプログラミングする際の
問題点等参考になるページありませんか?

特にタスク間のリエントラントについてなのですが。

お願いします。
0758デフォルトの名無しさんNGNG
>>757
リエントラントならまず大域的なりソースにアクセスしない。する場合は
1)排他処理をきちんとする
2)該当リソースを管理するタスクを用いてタスク間通信でやりとりする
といった方法を採択する、位か。

>>756
100ペリカげと(w
0759制御屋さん見習中NGNG
>>758
ありがとう!

大域的なリソースとは何ですか?
externな変数?ですか?
0760756NGNG
>>758
> 100ペリカげと(w
外しちまったや(笑)。

>>759
> 大域的なリソースとは何ですか?
たしかにやってしまいがちな例は extern 変数だが、そうとは限らない。
例えば、君は制御屋さんみたいだからデバイスへのアクセスも行うことが
あると思うが、これも大域的なリソースだ。
というか、まずはググれ。ここで説明するよりも膨大な量の資料が
見付かるはずだよ。
0761デフォルトの名無しさんNGNG
>>759
それはまぁ基本。排他もよく考えて使わないとロックする場合がある。
「見習い」ということでOJTみたいなことやってるなら多分スタックだけで
済むサブルーチンではないかと思うけど。
0762制御屋さん見習中NGNG
>>760,761
助かります。

確かに、761のいうとうりなのです。
が、それじゃあ面白くないので、
OJTと並行して(マルチタスク(笑))
知識も持ちたいんですよ。

実はリエントラントも知らなかった
超初心者。見習より丁稚ですね。

組み込み Cでググって色々出てきました。
0763デフォルトの名無しさんNGNG
>>762
OSの基礎本を買って読むとよろし。排他の必要性とかデッドロックの種類分けとか
ちゃんと載ってるから、それを踏まえておけば後は作るだけだ。
0764制御屋さん見習中NGNG
>>763
OSですね。

参考文献ありましたら、教えて欲しいです。

先日 CQ出版 リアルタイム/マルチタスクシステムの
徹底研究
という本を買ったのですが、かなり難しかったです。
0765デフォルトの名無しさんNGNG
strlen関数使わずに文字数数える方法ってありますか?
0766デフォルトの名無しさんNGNG
きみにはむり
0767スレ違いなので誰かいいスレ示してあげてNGNG
>>764
それはきっと具体的なコードとか示してるんじゃない?
もっと概念的なのでいいと思うんだけど。

> ttp://www.yfcbookshelf.com/operatingsystem's%20books1.htm

うわ、8800円かよ…まぁ会社で買ってもらえ(w
でも自分で買った方が身につくとは思うけど
0768スレ違いなので誰かいいスレ示してあげてNGNG
>>765
1)指を折る
2)
unsigned l;
const char *p;
for (l = 0, p = "abc"; *p++; l++)
;
printf ("%u\n", l);
0769デフォルトの名無しさんNGNG
>>768
サンクスです。
0770デフォルトの名無しさんNGNG
いやいや sizeof("abc")-1 だろ。
0771スレ違いなので誰かいいスレ示してあげてNGNG
あれ? それってポインタのサイズにならないんだっけ
0772デフォルトの名無しさんNGNG
ネタにマジレスはカコワルイですよ。
ここはこう言うベキデス。

>>770
(・∀・)カエレ!!
0773デフォルトの名無しさんNGNG
>771
$ cat t.c
int main()
{
printf("%d\n", sizeof("hello world."));
}
$ gcc t.c
$ ./a.out
13
0774デフォルトの名無しさんNGNG
今、中学生でK&Rを買おうと思ってるんですが、
みなさんの意見を聞くと邦訳版より原著版の方がいいと聞きます。
英検2級あれば原著版読めるでしょうか?
0775 ◆8Bf1cDJWMA NGNG
>>774
中学生で英検2級?
オミソレ。
0776デフォルトの名無しさんNGNG
春厨のくせに英検2級とはたいした能力ですな

と釣られてみるテスト
0777774NGNG
原著版って結構PC用語出てきますか?
辞書で引ける範囲の単語だけだったら買うのですが・・。
0778デフォルトの名無しさんNGNG
>>773
ほんとに13だったけど微妙だなあ
0779デフォルトの名無しさんNGNG
いや、sizeof に対してはポインタに変換されないってちゃんと規格にあったす
0780デフォルトの名無しさんNGNG
char buf[sizeof("255.255.255.255")];
とかよく使うけどな。
0781デフォルトの名無しさんNGNG
>>780
利点がわかりません
0782デフォルトの名無しさんNGNG
buf[16] って数値を直接入れるのが嫌じゃない?
0783デフォルトの名無しさんNGNG
#define KEY_WORD "foo"
char buf[sizeof(KEY_WORD)];
とか?
0784デフォルトの名無しさんNGNG
何かstatic_assertを思い出したよ
0785デフォルトの名無しさんNGNG
>>782
char buf[] = "255.255.255.255";
じゃいかんのか?
0786デフォルトの名無しさんNGNG
>>785
それはランタイム時に初期化コードを通る
0787デフォルトの名無しさんNGNG
charの配列の要素数は256の倍数にしていますが。
0788デフォルトの名無しさんNGNG
>>780
それするくらいなら、
#define MAX_IP_LEN 15
とかの方がマシだろ。意味分かんなくなるよ。
0789デフォルトの名無しさんNGNG
い? それだと逆に「何故 15 なのか」ってのがわからないじゃん。
0790デフォルトの名無しさんNGNG
>>789
はぁ?
buf[sizeof("255.255.255.255")] って書いてあるのと、
buf[MAX_IP_LEN] って書いてあるのとどっちが可読性がいいよ。
マクロの方にはコメントでも入れときゃいいじゃん。
0791デフォルトの名無しさんNGNG
>>790
15 だったら buf[MAX_IP_LEN + 1] じゃね?
でも sizeof 使うのはいくらなんでもキモすぎ。
0792デフォルトの名無しさんNGNG
#define MAX_IP_LEN sizeof ("255.255.255.255")

に何故考えが及ばん…
0793デフォルトの名無しさんNGNG
sizeof か…。俺は数字を直接書く。
というか、sizeof 使った方法なんて思い付かない。
0794デフォルトの名無しさんNGNG
#define VERY_BIG sizeof(MY_TIMPO)
0795デフォルトの名無しさんNGNG
$ gcc 1047275669.c
1047275669.c: thread 内の `int main(int, char**)':
1047275669.c:>>794: 嘘(・A・)イクナイ
$
0796デフォルトの名無しさんNGNG
最近のコンパイラ賢くなったよな。
0797デフォルトの名無しさんNGNG
メンドクセェナ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>776
0798デフォルトの名無しさんNGNG
>>795
そんな馬鹿な。まさか BCC5.5は・・・

エラー E2188 test.cpp 7: >>794 嘘(・A・)イクナイ (関数 main() )
*** 1 errors in Compile ***
** error 1 ** deleting test.obj

ほんまやぁ・・・
0799デフォルトの名無しさんNGNG
% cat null.c
#include <stdio.h>
main(int argc, char **p){
 printf("%s\n",*p = NULL);
 /*
  ∧_∧
 ( ´∀`)< ぬるぽ
 */
}
% gcc null.c
a.c: In function `main':
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /
% ./a.out
(null)
%
0800デフォルトの名無しさんNGNG
printf("%dcm\n",VERY_BIG)
./a.out
8cm
0801デフォルトの名無しさんNGNG
printf("%dcm\n",VERY_BIG)
a.exe
42.195km
0802デフォルトの名無しさんNGNG
printf("%dcm\n",VERY_BIG)
./a.out
Segmentation Fault(core dumped)
0803デフォルトの名無しさんNGNG
(´-`).。oO(>>802 のティムポはポインタでした…と)
0804デフォルトの名無しさんNGNG
printf("%c",16)等の半角の罫線は環境依存ですか?
0805デフォルトの名無しさんNGNG
>>804
端末依存です。
0806デフォルトの名無しさんNGNG
(´-`).。oO(しかも>>802 のティムポは不正な場所を刺してた…と)
0807デフォルトの名無しさんNGNG
ぬるぽキタ━━━━━(゚∀゚)━━━━━!!!!
0808デフォルトの名無しさんNGNG
      | \
      |∀・) ダレモイナイ‥
      |⊂    ナグルナラ イマノウチ
      |

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>807
0809804NGNG
>>805
98/Meでは表示されるのですが、表示されないパソコンとかありますか?
0810デフォルトの名無しさんNGNG
>>809
端末というか、端末の使用するフォントに禿しく依存。
0811デフォルトの名無しさんNGNG
AT互換機の内蔵フォントなら基本的に同じ(IBM文字セット)
だからDOSなどのテキストモードを使うやつなら全部同じにでるはず。
0812デフォルトの名無しさんNGNG
>>811
DOS/Vになった時点で・・・
0813デフォルトの名無しさんNGNG
>>811
DOSの頃から自前のソフトウェアフォントを使うアプリケーションはあったわけだが
0814デフォルトの名無しさんNGNG
>>812
だから、「テキストモード」に限定してあるのさ。
今時、そんなの使うOSなんてないかもね。
0815デフォルトの名無しさんNGNG
2バイト文字を1バイトに圧縮する方法を教えて下さい。
明日までになんとかできるでしょうか?
0816デフォルトの名無しさんNGNG
>>815
どんな事がしたいのか、ちゃんと書きましょう。
0817デフォルトの名無しさんNGNG
>>815
2バイト文字の中からあなたの好きな255文字を選んでください。話はそれからです。
0818デフォルトの名無しさんNGNG
>>815
2^n(k) 符号を使ってください。
基本は >>817 で、それをもっと高度にしたものです。
詳細は、電子情報通信学会の論文誌を読んでください。
0819デフォルトの名無しさんNGNG
こちらはエぬティーティです。
お客様のお掛けになった電話番号は現在使われておりません。
ぽ ーという発信音がす る までしばらくお待ちください。
0820809NGNG
>>810-814
お答えありがとうございました。
0821デフォルトの名無しさんNGNG
質問おながいします。
バイナリファイルを扱うコードを書いているです。
以前ここで教わって、読み込む変数はunsigned char型にしましたです。
理由は1バイトづつ配列に入れたかったからであります。
普通文字列を扱うときは配列の最終要素を\0にするようなので、今回は文字ではないものの
処理の都合上、最後に\0を付けようと思ったのですが、バイナリデータを配列に飛び飛びで
格納すると間に\0が入ってしまうことがあって、うまくありませんでしたです。
例えば、00000006という、ひとかたまりのデータがあって、これを
unsigned char buf[5]に入れる場合、buf[0]が\0になってしまうので終端と区別が
つきません。上記の場合は4要素と分かっていますが、読み込んでみないとデータのサイズが
分からない場合が多々あるので困っています。そこで終端に印をつけるのはあきらめて、
先頭にデータサイズを記述しておけばいいのではないかと思いました。
という訳で解決です。..って、あれ?そうじゃなくて、何だかこの方法はとても
スマートでないような気がしてならないので、ご意見を聞かせていただければと
思う出ス。長文すみません。

ときに、NULLと\0の違いがわかりません。どう実験しても同じように振舞います。
0822デフォルトの名無しさんNGNG
バイナリデータを文字列として扱ってはいけません。
一定バイト数ごと処理するか、読み込んだバイト数を覚えておいてその分処理すればよいです。
0823デフォルトの名無しさんNGNG
>>822さん
なるほどです。ということは前述の方法で処理するほかないということですね。
どうもありがとうございます。

あと、もう一つお聞きしたいことがあるのです。
配列をcallocで必要サイズきっちりに用意すれば、おそらくsizeofでサイズが
わかると思うのですが、関数の引数で先頭のポインタだけを受け取って、
関数内でサイズを得る方法はありますか。
0824デフォルトの名無しさんNGNG
>>823
alloc系で確保したメモリのサイズを知る手段はない。
自分で管理するしかない。
それが面倒ならC++でvectorでも使えば楽ができる。
でもそのくらいのcプログラムは書けるようになっておいたほうがいい。
がんがれ。
0825デフォルトの名無しさんNGNG
あれー。ちょっと気の利いた方法だと思ったのに、だめでしたか。
では、やはり前述の方法でがんがりがす出す。
本当にどうもありがとうございます。
0826デフォルトの名無しさんNGNG
>>821
> ときに、NULLと\0の違いがわかりません。どう実験しても同じように振舞います。

>>823
> 配列をcallocで必要サイズきっちりに用意すれば、おそらくsizeofでサイズが
> わかると思うのですが、関数の引数で先頭のポインタだけを受け取って、
> 関数内でサイズを得る方法はありますか。

C FAQ を読めば,目が覚めるでしょう.
0827デフォルトの名無しさんNGNG
ディスクファイルをメモリ上にキャッシュするタイミングって何時なんですかね?
ファイル入力関数を呼び出した時なのか、ファイルをオープンした時なのか
教えて下さい

0828デフォルトの名無しさんNGNG
>>827
キャッシュ?
C言語の話かそれ?
0829デフォルトの名無しさんNGNG
>>827
fopenなんかの話?
いままで見た事ある実装は読んできた時バッファに貯めてる。

と言うか、そんな事気にするプログラムは書いちゃいけません。
0830デフォルトの名無しさんNGNG
>>829
ありがとう
てことはfopen()を呼び出した段階では
バッファは空ということで良いんでしょうか?
0831デフォルトの名無しさんNGNG
>830
その情報は一体何の役に立つのだろう・・・
0832デフォルトの名無しさんNGNG
またまたアドバイスをいただけますか。
先ほどの動的な割り当てメモリのサイズ取得は不可能と伺って青ざめてしまいました。
というのも下記のようなデータ構造を考えていたからです。
struct event {
byte *delta; // デルタタイム、後で動的に割り当てる
byte statas[2]; //ステータスバイト
byte *datas; // データ、後で動的に割り当てる
};
static struct chunk {
byte type[5]; // チャンクタイプ
byte length[5]; // データ長
struct event *events;//イベント、後で動的に割り当てる
} chunks[17];

これは実は音楽のMIDIデータの構造なんですが、chunk.eventsをcallocで割り当てるには
struct eventのサイズが必要なんですが、eventのメンバにはさらに動的なメモリ割り当て
を必要とするものがあるので、sizeofでサイズが取得できなければ、
そもそもchunk.eventsにメモリを割り当てることができなくなってしまいます。
このようなデータは構造体を使わずにもっとプリミテチブな操作をするしかないですか?
0833デフォルトの名無しさんNGNG
あ、ごめんなさい。
typedef unsigned char byte;
でした。
0834デフォルトの名無しさんNGNG
> chunk.eventsをcallocで割り当てるにはstruct eventのサイズが必要なんですが、
必要ないだろ?
もうちょっとポインタについて勉強しろ。
0835デフォルトの名無しさんNGNG
>>832 1バイト入力するごとに realloc してみたら?
0836デフォルトの名無しさんNGNG
んー、必要ないですかぁ。何故必要ないかわからないのでポインタ勉強してきますです。
reallocというのはナイスアイデアですね!!これを使う方向でも考えてみます。
0837デフォルトの名無しさんNGNG
mallocで複数回にわけて取得したメモリを
一括して解放する方法を教えてたもれ。
0838デフォルトの名無しさんNGNG
>>837
ミリ。freeするのが面倒だったらガベコレ使え。
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
0839デフォルトの名無しさんNGNG
>>837
exit()
0840デフォルトの名無しさんNGNG
>>837
パソコンの電源を切れ
0841デフォルトの名無しさんNGNG
837のいってること俺も悩んだ
p1=malloc(1*sizeof(int));
if (p1==NULL)
  goto hellzone0;
p2=malloc(1*sizeof(int));
if (p2==NULL)
  goto hellzone1;
hellzone1:
  free (p1);
hellzone0:
この調子でhellzoneが5個になったわけだが

setjmpとか使うのかのう?
0842デフォルトの名無しさんNGNG
p1=p2=p3=p4=p5=NULL;
if ((p1=malloc(1*sizeof(int))) == NULL) goto hellzone;
if ((p2=malloc(1*sizeof(int))) == NULL) goto hellzone;
……
hellzone:
free(p1); free(p2); free(p3); free(p4); free(p5);
0843デフォルトの名無しさんNGNG
ども、なるほど
今までfreeはぬるぽダメかと勘違いしてました
でも本見たら思いっきり何も起こらないだけだと
書いてありました

ppp=malloc(1*sizeof(int**));
*ppp=malloc(1*sizeof(int *));
**ppp=malloc(1*sizeof(int));
あとこういうのはどうしてますか?
0844デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←843


C FAQかなにかに規格に準拠していない古い処理系のためにぬるぽを渡すなと書かれていたけど、
そんなものまで面倒見切れないよね。
0845デフォルトの名無しさんNGNG
windowsをクラッシュさせるコードをおせいてくらはい。止めてみたいのレスだーっハハハハハハハ。
0846デフォルトの名無しさんNGNG
while(1) fork();ってやったらLinuxが動かなくなったなぁ。
0847デフォルトの名無しさんNGNG
>>845
>>840
0848デフォルトの名無しさんNGNG
>>843
>>842 とやり方は何も変わらないが。
0849デフォルトの名無しさんNGNG
freeの仕様をうまく使ってすっきりと書いただけだろ。
0850デフォルトの名無しさんNGNG
それすらわかってない香具師がいるわけでして
0851仕様書無しさんNGNG
ぬるぽに投票してください。
http://pumpkinnet.to/ranking/words/
0852851NGNG
すいません誤爆です。
でも投票してください。
0853デフォルトの名無しさんNGNG
ファイル位置ポインタがファイルの先頭を指してる場合において
そのファイルにrewind()を適用した場合の動作を教えて下さい
0854デフォルトの名無しさんNGNG
エラーがクリアされる
0855デフォルトの名無しさんNGNG
>>851-852
ワロタw 投票してやったよ。でも一位の1%にも満たねーじゃねーかヽ(`Д´)ノ

>>953
つーか man rewind。
0856デフォルトの名無しさんNGNG
>>855
'man' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0857デフォルトの名無しさんNGNG
manはlinuxだよ。
つーかM$ならMSDN嫁よ。
0858デフォルトの名無しさんNGNG
>>855
1 位には追いつかなくても、トップ 10 にはねじ込むべし!!
0859デフォルトの名無しさんNGNG
投票しますた
0860デフォルトの名無しさんNGNG
>>851
>2ch語、エッチ系、掲示板やサイトのローカルネタ、一般人に対する物、誹謗中傷等はお受けいたしません。

って書いてある割に2ch系ばっか。
0861デフォルトの名無しさんNGNG
ああっ、指摘してはいけない事を・・・
0862デフォルトの名無しさんNGNG
いずれにしてもマニュアルぐらい読め、と。
0863デフォルトの名無しさんNGNG
>>857
M$以外はlinuxしか知らんのなら黙ってろ
0864デフォルトの名無しさんNGNG
>>863
だからなんだよボケ。
CYGWINとでもいいたいのか?
煽りたいだけならおまえが黙ってろ。
0865デフォルトの名無しさんNGNG
#include <もちつけ>
0866デフォルトの名無しさんNGNG
黙ってたら煽れないだろヴォケ
0867デフォルトの名無しさんNGNG
おら、こっぱずかしいなあ
0868デフォルトの名無しさんNGNG
>>863-867
ぬるぽに投票してください。
http://pumpkinnet.to/ranking/words/
0869デフォルトの名無しさんNGNG
> From: [857] デフォルトの名無しさん <sage>
> Date: 03/03/26 11:54
>
> manはlinuxだよ。
0870デフォルトの名無しさんNGNG
なんでUNIXと言わないんだろう。
0871デフォルトの名無しさんNGNG
簡単かもしれない質問ですが、

for(i=1;(int)i<10;i=i+0.1) printf("%f",i);
(iはdouble型)

↑のループが10.0まで表示されてから終わるのですが、
どうして9.9で終わらないのでしょうか?

また、iをfloat型で宣言すると数値が狂うのですが
これは変数の精度によるものなのでしょうか?
一応、コンパイラはBCC5.5です。
0872sageNGNG
ぬ♥る♥ぽ♥
0873デフォルトの名無しさんNGNG
>>870
私が857本人ですが、
linuxでもunixでも同じじゃん(このレベルでは)
system5もBSDも、red hotもslackwareも、manコマンドはあるだろうよ。
0874デフォルトの名無しさんNGNG
>>873
処理系を限定していないこのスレで、よくそんな言い訳が堂々とできるな。
0875デフォルトの名無しさんNGNG
>>871
2 進数での浮動小数点数は、0.1 ぴったりを表現できない。
その為わずかに誤差が出るので、そのような問題が発生する。
浮動小数点数の誤差について調べる事。
0876デフォルトの名無しさんNGNG
857=864は釣りだろ?
0877デフォルトの名無しさんNGNG
>>874
それは>>855に言ってくれw
フォローのつもりだったんだが・・・
とにかく調べリゃ一瞬でわかることを書くな、と。
それだけだよ。
0878デフォルトの名無しさんNGNG
なんで GNU/Linux じゃないんだろう?
0879デフォルトの名無しさんNGNG
red hotってなんだよ・・・






って今度は俺が釣られたよ。もうぬるぽ
0880デフォルトの名無しさんNGNG
>>875

ぐぐって調べてみました。
「丸め」については二進数の感覚にまだ慣れてないせいで
わかりづらいところもありましたが、
9.9までで終わらない理由については納得できました。
ありがとうございました!
0881デフォルトの名無しさんNGNG
>>857
こんな過疎地で釣りかよ…。
0882デフォルトの名無しさんNGNG
float の0.1の内部表現はたぶんこなぐあいでした
-1^(0) * 1+(0.5033165) * 2^(123-127)

#include <stdio.h>
main(){
   float f=0.1;
   int sisuubu;
   int kasuubu;
   int fugou;
   int *i;
   void *p;
   p=&f;
   i=p;
   fugou =( *i>>31) & 1;
   printf ("fugou = %d\n",fugou);
   sisuubu = (*i>>23) & 0xFF;
   printf ("sisuubu = %d\n",sisuubu);
   kasuubu = (*i)& ((1<<23)-1) ;
   printf ("kasuubu = %d\n",kasuubu);
   printf ("-1^(%d) * 1+(0.%d) * 2^(%d-127) =%f "
,fugou, kasuubu,sisuubu,f);
}
0883デフォルトの名無しさんNGNG
ぬるぽの人も大変だな。
0884デフォルトの名無しさんNGNG
ソダナ
0885デフォルトの名無しさんNGNG
ようかんがえたら
i=(int *)&f;
これで良かったのか
0886デフォルトの名無しさんNGNG
あとポインタがiってのも変だな
鬱だし脳
0887デフォルトの名無しさんNGNG
ふと目に付いた、
「お兄ちゃん、ボク妊娠しちゃううううぅっ!」
に投票してしまいました。
こんな僕をぬるぽしてください。
0888デフォルトの名無しさんNGNG
ちんぽ
0889デフォルトの名無しさんNGNG
ぐーぐったけど成果なしだったので質問します

バックスペースを「\b」に置き換えて、入力を出力に複写するプログラム
を書きたいのですけど、
#include <stdio.h>
main()
{
int c;
while((c = getchar()) != EOF){
if (c == '\b')
printf("\\b");
else
putchar(c);
}
}
と、したのですけど、うまくいきません。
タブを「\t」に置き換えて入力を出力に複写するのはできました
どうすればいいのでしょう?
0890デフォルトの名無しさんNGNG
入力データに問題があるんだろ
0891デフォルトの名無しさんNGNG
>>889
キーボードからじゃなくてファイルから読んでみるとか。
0892デフォルトの名無しさんNGNG
ファイル関係はまだ勉強しないうちでの問題でして、
かならずキーボードからの入力となります。
これから言語を学ぶ上で特に必要のない事なら、わからないままでいいかな。
とも思うのですが、やるせない感が強くて・・・
コンパイラの問題とかもあるのでしょうかね?ちなみにWinXPで、VC++です
0893デフォルトの名無しさんNGNG
>>892
別に勉強しなくても(コマンドプロンプトなら)プログラム実行するときに<を使ってリダイレクトすればファイルから読めるけど。
0894889NGNG
あ、リダイレクトかー。そうすればわかりますね。
指導してくれた皆様、どうもありがとうございました。
0895デフォルトの名無しさんNGNG
今度はどうやってファイルにバックスペースを書き込むんですかぁ?かな。
0896デフォルトの名無しさんNGNG
>>895
さすがにそこまで馬鹿じゃねーだろ(藁

>>891みたいなのがこのスレに常時してると思うとあんま笑えねーけどな
0897891NGNG
俺、馬鹿なこと言ったのかな・・・
0898デフォルトの名無しさんNGNG
>>897
いや、どっちかと言うと質問者のやりたいことの方が問題あるから。
0899デフォルトの名無しさんNGNG
main(){puts("\b");}
をパイプでつなげ。なんかアホみたいだが。
0900デフォルトの名無しさんNGNG
0901デフォルトの名無しさんNGNG
>>882
ダウト。
0.1は
>-1^(0) * 1+(0.5033165) * 2^(123-127)
ではなく
-1^(0) * (1+(5033165) / 2~23) * 2^(123-127)
にならないといけない。
ちなみに、(5033165) / 2^23 ≒0.6なわけだな。
この時点で、0.6 * 2^23 = 5033164.8なので0.2の誤差がある。
これを10進の桁数に換算すると高々8桁弱しか精度がないことがわかる。
0902デフォルトの名無しさんNGNG
確かに考えたら数がかなりおかしいですね。

2進数で仮数部の一番最初の桁の重みが2^-1で
最後のけたが2^-23だから
確かにその通りです
カッコの位置も完全におかしいし、
おかげで浮動小数点数がちょっとだけわかりました。
0903デフォルトの名無しさんNGNG
ageておきます
0904デフォルトの名無しさんNGNG
自然数Xに対して

・1の時処理1を行う
・2の時処理1と処理2を行う
・3以上の時処理1と処理2と処理3を行う

ということがやりたくて、以下のようにコードを書いたのですが明らかにスマートじゃない
ですよね・・・。ぜひ、模範解答をお願いします。

switch(X){
more:
処理3
2:
処理2
1:
処理1
break;
default:
goto more;
}
0905デフォルトの名無しさんNGNG
普通に
if (x >= 1)
 処理1;
if (x >= 2)
 処理2;
if (x >= 3)
 処理3;
じゃダメなのか?
0906デフォルトの名無しさんNGNG
Xがintなら
if (X>2){
処理3
}
if (X>1){
処理2
}
if (X>0){
処理1
}
でダメかな?
自然数だからいいんだけどdefaultのとこ
Xがintだったら負の数とか0の場合も突入しそうだしなんか変な感じ
0907904NGNG
あ、説明不足でした。
この場合Xは呼び出しコストが高い関数の戻り値として返されます。
素直に一時変数に落として>>905-906のやり方でやればいいんですが、このためだけに
変数宣言すると、あとで処理を追いづらくなりそうで。というか、変数名を考えたり
するのが面倒というのが正直なところか。(まぁ、こんな風に処理するほうが
追いづらいって話もありますが ^^;)

制御構文一個だとこれが限界ですかね?
0908デフォルトの名無しさんNGNG
904 の記述が正しいのなら別に構わないと思うんだが
0909デフォルトの名無しさんNGNG
switch(X){
default:
処理3
2:
処理2
1:
処理1
}
でいいじゃん。
0910デフォルトの名無しさんNGNG
下記のようなデータを検索する際に困っております。
00 d2 00 0b c0 e0 00 31 00 00 99 01 01 00 13 c0
e0 01 00 00 00 20 00 00 00 14 00 00 00 01 00 01
00 07 c0 e0 03 01 00 00 0a c1 01 01 00 01 20 01
01 00 08 01 03 00 01 85 00 00 08 01 03 00 01 85
最初の2バイトが全体のデータ長を表します(この場合210バイト)
次の2バイト(00 0b)が11バイトの一塊のデータ。つまり
00 0b c0 e0 00 31 00 00 99 01 01 というカタマリ。
次の(00 13)が19バイトで
00 13 c0 e0 01 00 00 00 20 00 00 00 14 00 00 00 01 00 01
というカタマリになっています。
こんなデータを検索し3行目の(00 0a)が見つかったら1バイト(c1)を飛ばし
(01 01)をチェックする。チェックした結果(01 01)であれば、また1バイト飛ばし
次の2バイト(01 20)を変数に代入という処理をしたいのですが、
毎回データが可変長で先頭から何バイト目という指定ができず困っています。
わかりづらい質問で大変恐縮ですが御教授いただけると幸いです。
よろしくお願い致します。
0911デフォルトの名無しさんNGNG
>次の2バイト(00 0b)が11バイトの一塊のデータ

?
0912910NGNG
>次の2バイト(00 0b)が11バイトの一塊のデータ
これは(00 0b)の0bは10進数で11ですよね?
その数分のバイト数で00 0bの先頭から11バイトが
ひとつのデータのカタマリと表現したかったのです。

わかりづらくてすみません。
0913デフォルトの名無しさんNGNG
>>912
分かりづらいと言うか変と言うレベル。私は離脱します。スマソ。
0914デフォルトの名無しさんNGNG
>>910
データへのアクセスを絶対アドレス?でできないことに困っているの?
別に先頭から順次読んでいけばよいと思うが。

LHAの実装で同じような処理をしたことがあるが、
そんな疑問、持ちもしなかった。
0915デフォルトの名無しさんNGNG
4番目のデータを読む前に4番目の塊がはじまる場所を
2+塊1の長さ+塊2の長さ+塊3の長さ
で出しておけばいいんじゃね?
1バイト飛ばして0101チェックはシラネーてか面倒くせー
c=getc();
while ((c=getc())==256){c=getc();}
とかでできんじゃね?
シラネーけど
0916デフォルトの名無しさんNGNG
>>910
データ長やマーク(0101、c1など)を抜いて別の場所にコピーするコードを考えれば
解は自ずから明らかとなろう
0917デフォルトの名無しさんNGNG
あ,嘘でした
でも,面倒くさい俺もパス
0918910NGNG
ツレネェヨ(´Д` )ウワァァン
セチガレェヨヽ(`Д´)ノ ウワァァン!!

ウワァァァン━ヽ(`Д´)ノ━(ヽ`Д)━( ヽ`)━ヽ( )ノ━(ヽ )━(Д´ヽ)━ヽ(`Д´)ノ━!!!

0919デフォルトの名無しさんNGNG
>>907
関数の呼び出しコストが気になるなら、戻り値を変数に保存しておけばいいわけだが・・・
0920デフォルトの名無しさんNGNG
>>910
なんか知んないけど、データの先頭アドレスが unsigned char *p に入ってるとして...

unsigned short int GetLength(unsigned char data[]){
 return (data[0] << 8) + data[1];
}

unsigned short int Result; /* 結果 */
unsigned short int TotalLength = GetLength(p);
p += 2;
/* 一行目 */
unsinged short int Length = GetLength(p);
p += 2 + Length;
/* 二行目 */
Length = GetLength(p);
p += 2 + Length;
/* 三行目 */
Length = GetLength(p);
p += 2;
/* 1バイトスキップ */
p++;
if(GetLength(p) = 0x0101){
 p += 3;
 Result = GetLength(p);
} else {
 fprintf(stderr, "見つかんねーぞ、ゴラァ\n");
}

ぐらいでいいんじゃねーのか。
1〜2行目の処理をループにするなり、全体サイズをはみ出していないかチェックするなりは自分で考えてくれ。
0921910NGNG
>>920
マジデアリガ�dゴザイマス・・・
アナタハたぶん
  神
間違いないです。
認定します。漏れの中で
920サソは神
0922デフォルトの名無しさんNGNG
このスレを利用させてもらってた者なんですが、
レベルの低いPGしかこのスレにいないのか?
質問者の欲しい答えが返っていないような例を多数見るし、アホばっか?
って思うこと多数だYO!

やっぱ2chなんだなー。マ板とかは建前のない答えが来るからいいんだけどさ
0923デフォルトの名無しさんNGNG
>>922
可哀想・・・
0924デフォルトの名無しさんNGNG
ネタっぽい質問にはそれ相応な返答をしなきゃいけないと思って…
ゴメンネ
0925922NGNG
納得!>>924さんありがと。
ネタぽい質問の区別が出来るのはすごいね。
プログラムは経験で覚えていくって聞いたけど、俺はまだまだですね(1年1ヶ月)
)>>923の返事はちと意味わかんなかった。
2chを勉強の糧の一つとして過ごしている俺の現状が可愛そうてことかな?
そうだとしたらこれからこないことにすっかな。
・・・ってのは馬鹿のすることか。
必要な情報だけ取り入れられるようにこれからもがんばっていこっと
0926デフォルトの名無しさんNGNG
>>922
コテになって、質問答えまくって!!1
0927デフォルトの名無しさんNGNG
>>925
やっぱり可哀想・・・
0928デフォルトの名無しさんNGNG
俺は現状でもいいと思うので922がマ板に行って
居なくなるのが一番両者ともに嬉しいかと思われ
0929デフォルトの名無しさんNGNG
>>922
質問者はどんな情報でもありがたい。
ヒントとかキーワードとかでもそれを元にググったり出来るし・・
それが>>922にとってレベルが低かろうが知ったこっちゃない。
マジ、余計おせわと思う。
0930デフォルトの名無しさんNGNG
お前ら釣られすぎw
0931デフォルトの名無しさんNGNG
みっともないねぇ・・自分の質問を無視された払いせか?
0932デフォルトの名無しさんNGNG
>>929
>ヒントとかキーワードとかでもそれを元にググったり出来るし・・

それすらしない馬鹿がここを頼ってるんだと思われ。
少なくともまともに検索した奴は質問文にキーワード混ぜて検索したことアピールしてくるし
言ってることもしっかりとした基礎知識に基づき、論理的に正しい場合が多い。

0933904NGNG
>>909
うわ、defaultってcaseの前に置いてもきちんと動作するんですね。
つーことで、これでいくことにします。ありがとうございました。
0934デフォルトの名無しさんNGNG
reallocに付いて曖昧なので教えてください
man だと
If realloc() fails the
original block is left untouched - it is not freed or
moved.
となってますが
ptr=realloc(ptr,sz);
みたいな記述でreallocが失敗した場合
これってメモリリークするってこと?
いったん
ptr2=realloc(ptr,sz);
とかやってptr が失われないようにした方がいいのですかね
0935デフォルトの名無しさんNGNG
>>934
そのたうり
0936デフォルトの名無しさんNGNG
このコードは危険?

int my_realloc(void **memblock, size_t size)
{
  void *p = realloc(*memblock, size);
  if(p)
  {
    *memblock = p;
    return 0;
  }
  return -1;
}
0937デフォルトの名無しさんNGNG
>>936
とっても。
0938937NGNG
>>936
あ、ぼけてた。
いいんでない?
0939デフォルトの名無しさんNGNG
C言語って死滅しちゃうの。
0940デフォルトの名無しさんNGNG
>>939
君よりは長生き
0941デフォルトの名無しさんNGNG
>>940
流石に20年は持たんだろう。
0942デフォルトの名無しさんNGNG
>>941
COBOL もそんな事言われてましたが結局は・・・
0943デフォルトの名無しさんNGNG
>>942
はじっこの方に追いやられたな。
0944デフォルトの名無しさんNGNG
枯れた技術が必要なときもあるさ
0945デフォルトの名無しさんNGNG
FORTRAN は研究関連でもまだ原液
COBOL は2000年問題で復活して、最近 OpenCOBOL が活発になったらいいなぁ。

UNIX系OSには、2038年問題があるから、
少なくともC言語は、そのときに一時的にかもしれないが、流行るだろう。
0946デフォルトの名無しさんNGNG
>FORTRAN は研究関連でもまだ原液

早く薄めなきゃいかんな。
0947デフォルトの名無しさんNGNG
とっても初心者な素朴な質問ですが,
int型のa,b(またはc)が宣言,初期化されているとき.

for(i=1; i<a+b; i++);

というコードと,

c=a+b;
for(i=1; i<c; i++);

では,実行速度に差がありますか?
0948デフォルトの名無しさんNGNG
>>947
結局最適化の時点で同じにされそうだけどね。
0949デフォルトの名無しさんNGNG
空ループなので、最適化すれば、どっちも削除される(ことが多い)。
削除されなくても、最適化によって同じやうなものになったり、ならなかったり。
初心者なら見やすい方書けばええよ。
0950デフォルトの名無しさんNGNG
アッセンブラはいつ頃死滅する?
0951デフォルトの名無しさんNGNG
>>948
即レスありがとうございます.
上に書いたほうが,早い(可能性がある?)ということですよね?
まことに初心者ですみません.
0952947NGNG
>>951=947上じゃなくて下でした.
0953デフォルトの名無しさんNGNG
>>951
普通に考えると、前者が後者以上の速度を出す事は考えられない。
最適化によって、後者と同等のレベルのコードになる可能性があるという話。
0954947NGNG
どうもです.皆さんありがとうございました.
0955デフォルトの名無しさんNGNG
甘い。
後者は変数領域を確保するが、前者は確保する必要がないので
よりタイトなコードになる可能性がある。
0956デフォルトの名無しさんNGNG
甘い。
後者が変数領域を確保するとは限らない。
つーか、それは速度とはあまり関係無い。
0957デフォルトの名無しさんNGNG
age
0958デフォルトの名無しさんNGNG
後者でcをregister宣言しとくと、最も最適化されそうな気がするのは
勘違い?
0959デフォルトの名無しさんNGNG
>>958
今の最適化が進んだコンパイラはregister宣言を無視することが多い。
もしくは最適化の邪魔になってかえって遅くなることもあるそうな(伝聞)。
0960デフォルトの名無しさんNGNG
redy ・・・ set ・・・ start!
0961デフォルトの名無しさんNGNG
>>960
ready ・・・ set ・・・ start!
0962デフォルトの名無しさんNGNG
directory_iterator
0963C言語二日目NGNG
高橋麻奈・著の「やさしいC」を読みました!!!疲れた。
ある程度C言語を習得した気分ですが(w
実際は習得率なん%でしょうか?(20%いってる?)
習得率100%の基準は皆さん次第で。
あと、これからステップアップしてくためにはどんな本orサイトがお勧めですか?
0964デフォルトの名無しさんNGNG
>>963
0.2%
0965デフォルトの名無しさんNGNG
ぬるぽは0.49%

  ∧_∧
 ( ´∀`)< ぬるぽ

ぬるぽ募集中
http://pumpkinnet.to/ranking/words/

【ぬるぽに投票した人】
http://pc.2ch.net/test/read.cgi/prog/1048837306/l50
0966C言語二日目NGNG
>>964 
逝ってきます!
0967デフォルトの名無しさんNGNG
クソッ、CD-ROMドライヴを抑えてるネジを潰してしまった。
0968デフォルトの名無しさんNGNG
>>965
思わず
「おかしいですよ!カテジナさん!!」
に投票してしまった・・・
0969デフォルトの名無しさんNGNG
>>968
1時間後はヨロシク。

  ∧_∧
 ( ´∀`)< ぬるぽ
0970デフォルトの名無しさんNGNG
>>959
無視するとともに勝手にレジスタに置くんだろ?
0971デフォルトの名無しさんNGNG
>>956
> 後者が変数領域を確保するとは限らない。

アフォ ? 変数領域を確保しないとも限らないんだよ ?

> つーか、それは速度とはあまり関係無い。

「全然」ではないよね。つまり、あんたの >>953 は単なる思い込みってことだ。

現実、前後の状況によって、どっちが早くなるかは様々だ。
>>947 では、a, b, c が int 型とまでは書いてあるが、例えば c が volatile int c と宣言されて射たりしたら、後者が遅いことは十分に考えられる。
0972デフォルトの名無しさんNGNG
>>971
煽りはスピードが命。
0973デフォルトの名無しさんNGNG
>>971
流石に volatile まで持ち出すのは行き過ぎではないかと。
0974デフォルトの名無しさんNGNG
>>971
カエレ!!
0975デフォルトの名無しさんNGNG
>>971
文章が支離滅裂だな
0976デフォルトの名無しさんNGNG
>>971
c に volatile付けないとイカン状況で>>947の前者みたいな
書き方するのもいかがかと。
0977デフォルトの名無しさんNGNG
>>971
春だなぁ。
0978デフォルトの名無しさんNGNG
>>971
なんか、総攻撃にあってるな
0979デフォルトの名無しさんNGNG
>>971
  ∧_∧
 ( ´∀`)< ぬるぽ
0980デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>971
0981デフォルトの名無しさんNGNG
>965 >969 >979
(・∀・)ガッ
0982デフォルトの名無しさんNGNG
新スレ立ててきます。
0983C言語やろうNGNG
よく2chとかで  

int main()
{ printf....................

ていう書き方をみるけど

int main(void)
{printf......................

のように引数がないときは 、引数のない関数void型をつかわなきゃいけないん
じゃないの??
voidを使ってるのと使ってない差を教えてください
0984デフォルトの名無しさんNGNG
>>983
糖衣構文
0985C言語やろうNGNG
↑糖衣??
0986デフォルトの名無しさんNGNG
等位?等意?
0987デフォルトの名無しさんNGNG
春+日=あほか
0988デフォルトの名無しさんNGNG
>>983
さんざん既出。
c++では同じ意味。
cではかなり違う意味。
「じゃないの?」と思うなら少しは自分で調べてみよう。
0989デフォルトの名無しさんNGNG
セイロガン糖衣A
0990デフォルトの名無しさんNGNG
>>988
Cでも同じだが・・・
0991990NGNG
ああ、関数の定義を呼び出しよりも前に書いたら意味がちがくなるな。
0992デフォルトの名無しさんNGNG
>>990
返値みたくint型と評価されるとか言いたいんでしょうか。

じゃあ、

void hoge()
{
/*暗黙のint型の引数にどうやってアクセスすればいいのか?*/
}

int main()
{
hoge();/*引数の数が足りないのでエラー*/
}
0993990NGNG
俺は↓のように書くから。

void hoge(void);

int main()
{
hoge();
return 0;
}

void hoge()
{

}
0994990NGNG
つまりプロトタイプ宣言では意味がちがくなると言いたかっただけ。
0995デフォルトの名無しさんNGNG
// intを返す関数hogeのプロトタイプ宣言。引数チェックなし
int hoge();

// intを返す関数hogeのプロトタイプ宣言。引数なし。
int hoge(void);
0996さとしNGNG
int *pa;
とした場合は pa がポインタって言うのはわかるけど
*paっていううのは、変数じゃないしなんなんですか??
0997デフォルトの名無しさんNGNG
式
0998デフォルトの名無しさんNGNG
>>996
ポインタpaを間接参照。
int a=8;
int *pa=&a;
/* *pa==8 */
0999デフォルトの名無しさんNGNG
>>997
黙れ春厨
1000デフォルトの名無しさんNGNG
1000か?
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。