5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語なら、俺に聞け! <21>

1 :伝説の日下部陽一:02/05/22 14:33
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・comp.lang.c FAQ
http://www.eskimo.com/~scs/C-faq/top.html
・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/
推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/

・前スレ
<20> http://pc.2ch.net/test/read.cgi/tech/1021459016/

他のリンクは>>2-を見な。

2 :伝説の日下部陽一:02/05/22 14:34
コンパイラ

ぼくもgccは好きです!
http://gcc.gnu.org/

タダで使えるBorland C++!
http://pc.2ch.net/test/read.cgi/tech/1002377328/l50

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

その他
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

3 :デフォルトの名無しさん:02/05/22 14:35
(゚Д゚)/
お疲れー

4 :デフォルトの名無しさん:02/05/22 14:52
ともっち大好き!!!

5 :デフォルトの名無しさん:02/05/22 14:52
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  ともっち!大好きだ−!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \


6 :デフォルトの名無しさん:02/05/22 14:52
ともっち!ハァハァ!

7 :デフォルトの名無しさん:02/05/22 14:53
糞壁だと質問が付きにくい、という罠。
もはや知らん人の方が多いと思われ。

8 :デフォルトの名無しさん:02/05/22 14:53
\ママ〜また1000横取りされちゃったよ〜
 \やつら殺してやりたいよ〜
  \__________
      ∨    ∧_∧
           " 。  。 ミ   / ̄ ̄ ̄ ̄ ̄
            ゝ∀ く  < あらあら、まあまあ
           ∧_∧  |   \_____
        三  (    とノ
      三   /   つ |
     三  _ ( _  /|  |
        (_ソ(_ソ(_ )

9 :デフォルトの名無しさん:02/05/22 14:53
てめーら、ともっちで立て直せ!

10 :デフォルトの名無しさん:02/05/22 14:54
僕は、17歳高校2年生。
3ヶ月前まではこんなことを言って皆さんをハァハァさせてしまいました。
http://pc.2ch.net/test/read.cgi/tech/1014370940/
だけど、それから優しいお兄さんたちにいろいろと教えてもらいながら、
勉強することで、C言語を大体マスターすることができました。

今ゲームを開発しているのですが、兄さんは僕自身を開発するとか
言って、なかなかプログラミングに集中させてくれません。
質問するたびに僕の体を触ってくるので正直困っちゃってます。
ぼく自身、そういうのは好きだけど、それだけじゃゲーム作りが進まないので、
ここに質問させてください。よろしくお願いします。
FAQ的な質問ならぼくも回答します。間違いがあれば、先輩方の訂正を
お待ちしております。

なお、課題の○投げは一応別スレへ、ということでお願いします。

プライベートな質問に関してはスレの950が過ぎたあたりから受け付けますので
それまでそういったことは、なるべく謹んでください。





11 :デフォルトの名無しさん:02/05/22 14:55
                     ノ⌒)
         ∧_∧     ( _ノ、ノ
         ( ´Д`)    / /  。
       /⌒    ⌒'/ /    。
      /_/|       / /     。
    (ぃ9 ./    / //      。
       /   / /3
      (   / //
       \. \\
         \. \\
          >  ) )
         / //
         / / /
         / / /
       ( ヽ ヽ
        \__つ)



12 :ともっち:02/05/22 14:56
僕は、17歳高校2年生。
3ヶ月前まではこんなことを言って皆さんをハァハァさせてしまいました。
http://pc.2ch.net/test/read.cgi/tech/1014370940/
だけど、それから優しいお兄さんたちにいろいろと教えてもらいながら、
勉強することで、C言語を大体マスターすることができました。

今ゲームを開発しているのですが、兄さんは僕自身を開発するとか
言って、なかなかプログラミングに集中させてくれません。
質問するたびに僕の体を触ってくるので正直困っちゃってます。
ぼく自身、そういうのは好きだけど、それだけじゃゲーム作りが進まないので、
ここに質問させてください。よろしくお願いします。
FAQ的な質問ならぼくも回答します。間違いがあれば、先輩方の訂正を
お待ちしております。

なお、課題の○投げは一応別スレへ、ということでお願いします。

プライベートな質問に関してはスレの950が過ぎたあたりから受け付けますので
それまでそういったことは、なるべく謹んでください。

13 :デフォルトの名無しさん:02/05/22 14:56

                     ノ⌒)
         ∧_∧     ( _ノ、ノ
         ( ´Д`)    / /  。
       /⌒    ⌒'/ /    。
      /_/|       / /     。
    (ぃ9 ./    / //      。
       /   / /3
      (   / //
       \. \\
         \. \\
          >  ) )
         / //
         / / /
         / / /
       ( ヽ ヽ
        \__つ)
我慢できない、、、、

14 :デフォルトの名無しさん:02/05/22 14:56
くだらんことで荒らすなよ。

15 :デフォルトの名無しさん:02/05/22 14:57
http://tomotti69.hotmail.com

16 :デフォルトの名無しさん:02/05/22 14:57
ともっちスレはマ板にあるだろ!
いい加減にしろよ!!

17 :991:02/05/22 15:02
というわけで前スレよりやってきました。
>>前スレ994さん

その参考書には、「C言語ではグラフィックに対して
規定の書き方が米国の委員会では定まっていないため
いろいろあるから、オーソドックスなものをここに記す。」
みたいな事を書いていたのですが、
そのgraphics.hないので困ってます。
そこで、グラフィックソフトのglibw32.libをDLし
解説どおり.cfgのIとLにパスを書いたのですが、
うまくincludeできません。#include"glibw32"
としても、コンパイルしかけたあとに
外部シンボルがどうとか言ってエラーになります。
DOS上で「bcc32 〜.cpp glibw32.lib」とすれば
うまく表示できます。フォルダの階層も間違いなく
指定できてるように見えるのですが…。う〜ん。


18 :デフォルトの名無しさん:02/05/22 15:02
http://www.kobayashi.co.jp/seihin/abn/01.html
@いぼん

19 :デフォルトの名無しさん:02/05/22 15:05
元祖ともっちスレで最初にホモねたふったの私です。
申し訳ありません>C墓のみなさん

みなさん、ここは技術板です。
プライベートなネタはマ板でよろしくお願いします。
http://pc.2ch.net/prog/

20 :デフォルトの名無しさん:02/05/22 15:05
>>17
#include <graphics.h>
はヘッダーを取り込むだけ。
標準以外のライブラリはコマンドラインなりで明示的に指定しないとリンクできない
#pragma comment(lib, "glibw32.lib")
これで出来るかもしれない

21 :デフォルトの名無しさん:02/05/22 15:06
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  誰になんと言われようとも俺はともっちのことが好きだ−−−!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \

22 :デフォルトの名無しさん:02/05/22 15:10
>>21
ともっちは俺のだから、見てるだけにしといてね

23 :991:02/05/22 15:11
>>20
わかりました。やってみます。
ただ、今は学校の図書館なのでコンパイルできる環境がないです。
テキストにコピーして持って帰って試してみます。

24 :デフォルトの名無しさん:02/05/22 15:30
このスレ、回転が速すぎ。
Win32のスレとか、VC++のスレとか、使い分けて分散して欲しい。

25 :デフォルトの名無しさん:02/05/22 15:33
>>24
でも質問の内容はCの構文と標準関数が殆どだよ。

26 :do?f?l:02/05/22 15:54
Cプログラムをコンパイルして出来る
実行形式ファイル名って自分で変えられる

・・・よね?

27 :デフォルトの名無しさん:02/05/22 16:04
>>26
御心配なく。
a.outをwin.exeにリネームしてもコンソールにhollo worldがでてきましたから。

28 :デフォルトの名無しさん:02/05/22 16:08
>>27
horror word?

29 :デフォルトの名無しさん:02/05/22 16:18
a.outをmicrosoft.comにリネームしたら・・・

大量のcoreファイルが出力されました。

30 :デフォルトの名無しさん:02/05/22 16:28
>>25
せめて、宿題は宿題スレに行ってほしいと思う今日このごろ。

31 :デフォルトの名無しさん:02/05/22 17:01
age

32 :デフォルトの名無しさん:02/05/22 17:05
>>26
単なるファイルだからできる。
できるけどWinなら使えなくなる可能性はある。

33 :デフォルトの名無しさん:02/05/22 18:39
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  >>19なんでてめえがあやまってんだよ!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \

34 :デフォルトの名無しさん:02/05/22 18:50
DE キタ━━(゚∀゚)━━ァ!



35 :クラカーの卵:02/05/22 19:38
pythonってどうなんでしょうか?

36 :質問:02/05/22 19:40
{
// TODO: この位置にコントロール通知ハンドラ用のコードを
追加してください

CWnd * h=GetDlgItem(IDC_PICT1);
CDC * pDC=h->GetDC();

CButton*r1=(CButton*)GetDlgItem(IDC_RADIO1);//チェックボタン
CButton*r2=(CButton*)GetDlgItem(IDC_RADIO2);
CButton*r3=(CButton*)GetDlgItem(IDC_RADIO3);
CPen p,*oldp;
if (r1->Getcheck())
p.CreatePen(PS_SOLID,1,RGB(255,0,0));
else if (r2->Getcheck())
p.CreatePen(PS_SOLID,1,RGB(0,255,0));
else
p.CreatePen(PS_SOLID,1,RGB(0,0,255));
oldp=pDC->SelectObject(&p);

pDC->Ellipse(20,20,150,150);//円を書く

pDC->SelectObject(oldp);

}


--------------------構成: a02 - Win32
Debug--------------------
リソースをコンパイル中...
コンパイル中...
a02Dlg.cpp
C:\VC++6.0DATA\TEST1\a02\a02Dlg.cpp(186) : error C2039:
'Getcheck' : 'CButton' のメンバではありません。
c:\program files\microsoft visual
studio\vc98\mfc\include\afxwin.h(2704) : 'CButton'
の宣言を確認してください。
C:\VC++6.0DATA\TEST1\a02\a02Dlg.cpp(188) : error C2039:
'Getcheck' : 'CButton' のメンバではありません。
c:\program files\microsoft visual
studio\vc98\mfc\include\afxwin.h(2704) : 'CButton'
の宣言を確認してください。
cl.exe の実行エラー

a02.exe - エラー 2、警告 0

なんで??

37 :デフォルトの名無しさん:02/05/22 19:41
GetCheck ?

38 :デフォルトの名無しさん:02/05/22 20:01
>>36
これほど親切なエラーメッセージより分かりやすい説明は漏れには出来ん

39 :質問:02/05/22 20:07
CBottunの宣言ってなんなのさー
ちゃんと宣言してるのに。しだりないってか?

40 :デフォルトの名無しさん:02/05/22 20:09
>>37=39もしかしてブビ上がり?

41 :40:02/05/22 20:10
スマソ>>37

>>36=39もしかしてブビ上がり?

42 :デフォルトの名無しさん:02/05/22 20:13
せめてタイプミスなんかは自分で解決してほしい。
さらに言えば質問する前にスレを選んで欲しい。


43 :質問:02/05/22 20:16
GetCheckってとこがまちがってるの?

44 :デフォルトの名無しさん:02/05/22 20:33
>>42
三村 (;´д`).。oO( Typo かyp! )

45 :デフォルトの名無しさん:02/05/22 20:57
>>35
こっちへ。
Pythonお勉強スレッド Part2
http://pc.2ch.net/test/read.cgi/tech/1020718991/l50

46 :デフォルトの名無しさん:02/05/22 22:03
localtime って static 変数へのポインタ返すの?

連続して呼んだら結果失われる?

47 :デフォルトの名無しさん:02/05/22 22:06
>>46
その通り。結果を残しておきたかったら、どこかにコピーしなければならない。

48 :デフォルトの名無しさん:02/05/22 22:09
質問があります。

C言語でのブール値の扱いについてなんですが、
 #define FALSE 0
 #define TRUE (!FALSE)
ってありますが、
これって
#define FALSE 0
#define TRUE 1
でも同じですよね、
!FALSEの式の値は1なので。。。。(組み込みの演算なので)

厨房の漏れに教えてください。



49 :デフォルトの名無しさん:02/05/22 22:11
(´-`).。oO(CにTRUE、FALSEなんてあったっけ?)

50 :785:02/05/22 22:12
ないから定義してるんだRO

51 :デフォルトの名無しさん:02/05/22 22:12
つか、true, false使えよ。

52 :50:02/05/22 22:13
しまった。785って。。。(鬱


53 :48:02/05/22 22:15
>50
そうです。

C99には_Bool型ってのがあるらしいけど。。。




54 :デフォルトの名無しさん:02/05/22 22:18
!は非ゼロをゼロに
ゼロを非ゼロにします。
K&Rか規格書でも読みなさいな

55 :デフォルトの名無しさん:02/05/22 22:33
そうそう。
strcmpの戻り値は1,0,-1のどれかだと思っている人も多い。

56 :48:02/05/22 22:40
>54
それは資料等を見て、知っておりますが、

int i;

i= !0;
printf("%d",i);

ってやると
1
という結果が得られるのですが、
是は処理系依存?

vc++とgcc(cygwin)ではそうなったのですが。
もしかしたら、 組み込みのブール値扱いになって、!0自体の式の値が1に
なって、こういう結果になるのかなって思いまして。。。


57 :デフォルトの名無しさん:02/05/22 22:41
>>47

そうか、ありがとう。
なんで構造体直接返さないんだろう。


58 :デフォルトの名無しさん:02/05/22 22:42
>>56
処理系依存。

59 :デフォルトの名無しさん:02/05/22 22:44
strcmp()の戻り値って、0と!0だけじゃ都合悪いの?

60 :デフォルトの名無しさん:02/05/22 22:47
>>59

それだと辞書順ソートができないだろうが。


61 :54:02/05/22 22:48
スマソ
K&Rには0か1しかならないと書いてあった。

62 :デフォルトの名無しさん:02/05/22 22:49
>>59
strcmpは同じかどうかを判断するための関数じゃなくて、大小を比較するための関数。

63 :デフォルトの名無しさん:02/05/22 22:49
>>61
何ページ?

64 :デフォルトの名無しさん:02/05/22 22:50
>>57
構造体を=を使ってそっくりそのまま代入できると保証されたのはANSI Cからだからじゃない?

65 :デフォルトの名無しさん:02/05/22 22:52
!演算子は0か1を返すと規格で定められている。
結果の型はint。

処理系依存じゃないよ。

66 :デフォルトの名無しさん:02/05/22 22:54
>>65
そうなのか。
じゃあこれからはi=1の代わりにi=!0を使おう。

67 :デフォルトの名無しさん:02/05/22 22:58
構造体の値を返す関数って標準ライブラリにはないんじゃない?
似たことをやるときも「結果はここへ書け」というアドレスを引
数として渡すのがC伝統のスタイル。

最近Unixで追加されたリエントラントなバージョン(localtime_r
とかasctime_rとかstrtok_rとかgethostbyname_rとか)もその
スタイルになっている。

68 :デフォルトの名無しさん:02/05/22 23:00
そりゃ構造体がでかかったらオバーヘドがイパーイかかってだめYO

69 :デフォルトの名無しさん:02/05/22 23:02
strcmp()って大小比較する関数だったんだ、、
勉強になる、感謝

70 :デフォルトの名無しさん:02/05/22 23:03
そうか、やはり値を返すと効率悪いからかな。
必要なときは自分でコピーしろと。Cらしいな。

71 :デフォルトの名無しさん:02/05/22 23:14
FILE *fopen(const char*, const char*);
この戻り値から推測するに、、、
fopen()でどこかにFILE構造体の変数を宣言して、fclose()で変数解放って寸法でしか?
ストリームとか全然分からないけど

72 :デフォルトの名無しさん:02/05/22 23:23
>>71
そういう時はライブラリのソースを読むのが一番よい。

73 :デフォルトの名無しさん:02/05/22 23:29
超初心者に超やさしいサイト教えてください・・・

74 :デフォルトの名無しさん:02/05/22 23:30
71じゃないけど
やぱーりメモリ確保して解放してたのね。
ライブラリてソースややこし。
#if の嵐。

75 :デフォルトの名無しさん:02/05/22 23:31
>>73
猫んどけ。

76 :デフォルトの名無しさん:02/05/22 23:35
>>73
http://www.bekkoame.ne.jp/~medaka/r_c/c_class.html
↑ここなんかなかなかわかりやすいと思うのだが・・・・

77 :デフォルトの名無しさん:02/05/22 23:37
>>76
いやしかし、しょっぱなから void main()とやっているな・・・・・
やっぱり勧めるのやめようかな・・・・・

78 :デフォルトの名無しさん:02/05/22 23:50
くだらない質問でスマソ
int *p ;
p = (int *)malloc(0) ;
これって、pの値は処理系依存ですか?
それとも、NULLになるんですか?

79 :デフォルトの名無しさん:02/05/22 23:55
不定だよん。


80 :48:02/05/23 00:00
54さん
65さん

ありがとう〜。

組み込みのブール値扱いでよかったんですね。



81 :78:02/05/23 00:05
>>79
不定って、もしかして、あの
「何が起きても、おかしくない」
っていう不定ですか

82 :デフォルトの名無しさん:02/05/23 00:09
>>78
そうそう
コンピュータがいきなり壊れても
突然ペットの犬(ジェニファー)が死のうとも
突然アナルにバイブが差し込まれても文句は言えない。

83 :shige:02/05/23 00:09
malloc(0) の動作は処理系依存であり、NULL を返すかユニークなポインタを返すかのいずれかになる (ISO/IEC 9899:1990 7.10.3)。処理系に依存するため、特定の動作を期待したプログラムは書かない方が良いだろう。

ちなみに、malloc(0) がユニークなポインタを返す場合は、malloc() がふつうに返すポインタと同じで、malloc() が管理する領域に "少なくとも 0 バイト" の領域を作ってその先頭のアドレスを返すだけである。NULL を返さない理由としては、

n バイトの領域を確保する
その n バイトの領域を使う
最後にその n バイトの領域を解放する
という一連の処理で、n が 0 か 1 以上かで場合分けしなくてすむようになるから、というのが考えられる。



84 :78:02/05/23 00:23
>>83
かなり怪しいお名前ですが、ありがとうございます

85 :デフォルトの名無しさん:02/05/23 00:30
なんだC++がわからなくて荒らして他のはおまえか

86 :デフォルトの名無しさん:02/05/23 00:34
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C++


87 :デフォルトの名無しさん:02/05/23 00:37
( ΦωΦ)=○)'3') ←shige = matumoto = Ruby

88 :デフォルトの名無しさん:02/05/23 00:44
"A >>>>>> B" は、「Aは遥かな道のりを経てBへと進化する」と読みます。
そこの所をお間違えなく。


89 :デフォルトの名無しさん:02/05/23 00:53
入門するときはやはり本を買ったほうがいいのかな・・・・?

90 :デフォルトの名無しさん:02/05/23 01:40
K&RのP22、文字数のカウントすつところでテキスト通り
long nc;
nc=0;
while(getchar() != EOF)
++nc;
printf("%ld\n",nc);
ってやってるのに、testとタイプしても何も表示されません。
次の
double nc;
for(nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f\n",nc);
でも文字数がカウントされるはずなのに何も表示されません。
ご教授ください

91 :デフォルトの名無しさん:02/05/23 01:47
>>90
WindowsならCtrl+Z、UNIXかまたはWindowsでもcygwinならCtrl+Dを押して
EOFを入力すること。

92 :90:02/05/23 01:50
>>91
おお、できました。
勝手に最後をEOFと見てくれないんですね。
勉強になりました。

93 : :02/05/23 01:52
>>90
test とタイプした後、EOF の入力として CTRL-D をタイプする。(UNIX or Linux)
Windows or DOS なら CTRL-Z だっけ?
このスレかどっかでも議論になってたな。
もしくは

94 :デフォルトの名無しさん:02/05/23 02:12
>>92
一行読み込んだ時点で最後と見なされる仕様だと
二行目以降が扱えないじゃん・・・

95 :デフォルトの名無しさん:02/05/23 02:21
>>94
そんな時は全体をwhile (1)かfor (; ; )などで囲めばよい。

96 :デフォルトの名無しさん:02/05/23 02:47
>>79
malloc(0)の値は不定じゃないです。


97 :デフォルトの名無しさん:02/05/23 02:55
>>96
不定だよ。C++のnewと混同してない?

98 :デフォルトの名無しさん:02/05/23 03:06
>>96
free(0)が無害なのと混同してるだろ。

99 :デフォルトの名無しさん:02/05/23 03:09
>>96
realloc(p,0)がfree(p)と等価なのと混同しているだろ。

100 :デフォルトの名無しさん:02/05/23 03:14
100ズダー

101 :デフォルトの名無しさん:02/05/23 03:18
>>83 ホンモノですか?

102 :96:02/05/23 03:19
不定じゃないってば。みんなてきとーなこと言わないで。

7.20.3 Memory management functions

If the size of the space requested is
zero, the behavior is implementation-defined: either a null
pointer is returned, or the behavior is as if the size were
some nonzero value, except that the returned pointer shall
not be used to access an object.

「null pointerを返すか、あたかもnonzeroの引数が渡されたかのように振る
舞う(ただし返されたポインタはオブジェクトをアクセスするのには使えない)。
どちらになるかは処理系定義。」


103 :デフォルトの名無しさん:02/05/23 03:20
>>102
不定じゃないけど処理系依存。
どちらにしろ迷惑。
つーかmalloc(0)なんて無意味なことはやめろ。

104 :デフォルトの名無しさん:02/05/23 03:21
NULLにもなりうるのか?
うーんそりゃ困った・・・

105 :96:02/05/23 03:24
>>103
おれはやってないよ。
単に間違いをただしただけでなぜ怒る?負け惜しみ?

106 :デフォルトの名無しさん:02/05/23 03:25
>>105
いや、レスの後半は質問した奴に対するレス。

107 :デフォルトの名無しさん:02/05/23 03:28
>>96
禿しく外出のことを今さら書いて
鬼の首でも取ったように偉そうに…

108 :デフォルトの名無しさん:02/05/23 03:29
0に限らず、mallocに定数を渡すことってある?

109 :デフォルトの名無しさん:02/05/23 03:35
>>108
え? sizeof(struct nantoka)って定数だろ。

110 :デフォルトの名無しさん:02/05/23 03:38
>>109
ああ、リスト、二分木構造があったか・・・

111 :C初心者:02/05/23 04:13
C言語でRS232Cからシリアル通信で

D,5,5

と送信するだけのプログラム書いてもらえませんでしょうか?
すいません。Cがまだ未熟なもんで・・・これさえできません。
お願いします

112 :デフォルトの名無しさん:02/05/23 04:40
#include "comm.h"

int main()
{
 return send_comm(1, "D,5,5");
}


113 :デフォルトの名無しさん:02/05/23 05:21
C99 ではこうなってるね。

A non-null pointer returned by a call to the calloc,
malloc, or realloc function with a zero requested size
is used to access an object (7.20.3).

114 :デフォルトの名無しさん:02/05/23 05:28
>>113
C++のnewと同じだね。考え方は。

115 :デフォルトの名無しさん:02/05/23 05:44
>>111
Windowsならこうなる。OSとか処理系とか書けよ。
hCommDev = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
str[0] = 'D';
str[1] = '5';
str[2] = '5';
WriteFile( hCommDev,(void *)str, 3, &WriteByte, NULL );


116 :デフォルトの名無しさん:02/05/23 09:05
Cの初心者です
二次方程式の解なんですが、
ax2+bx+C=0
b2−4ac<0が虚数解になる旨を表示するソースプログラムはどう書けばいいんですか?
というか、数学が苦手分野なので解かりません
どなたか教えて下さい
(2乗がわかりづらくてスミマセン)

117 :デフォルトの名無しさん:02/05/23 09:06
課題丸投げなら別スレにいけ。


118 :デフォルトの名無しさん:02/05/23 09:31
>>116
printf("虚数解になる\n");

119 :デフォルトの名無しさん:02/05/23 10:23
>>116
× b2−4ac<0が虚数解になる
○ ax・・・=0が虚数解になる

ifをつかえ

120 :デフォルトの名無しさん:02/05/23 10:32
y/n入力させてループさせようとしてるのですが
scanfを飛ばしてloopに行ってしまいます・・・
ソースの一部↓
printf("RU = %f\n",RU);
printf("続けますか?(y/n)");
scanf("%c",&flag);
printf("\n");
if(flag='y') goto loop;
else ;

121 :デフォルトの名無しさん:02/05/23 10:36
120
==

122 :デフォルトの名無しさん:02/05/23 10:37
>>116
b*b-4*a*c<0

123 :デフォルトの名無しさん:02/05/23 10:41
>>121
ミスの指摘ありがとうございます。修正しました。
しかし、今度はscanfを飛ばしてプログラム終了してしまいます・・・

124 :デフォルトの名無しさん:02/05/23 10:51
>>120
scanf("%c", &flag);

read(0, &flag, sizeof flag);

では駄目か?
それともscanf関数を使う縛りがある?

125 :デフォルトの名無しさん:02/05/23 10:57
>>123
fflush(stdin);
scanf("%c",&flag);

scanf(" %c",&flag);
/*input bufferの振る舞いは実装依存*/

126 :デフォルトの名無しさん:02/05/23 11:12
>>124
同じ結果です・・・

127 :デフォルトの名無しさん:02/05/23 11:15
>>125
出来ました。ありがとうございます。
しかし、何が悪かったのかわからない・・・

128 :デフォルトの名無しさん:02/05/23 11:23
>>127
fflush(stdin)でできたということは、標準入力に残っていた文字が原因だったということでしょう。

fflush(stdin)はやらない方が良い方法なんだけど。

129 :デフォルトの名無しさん:02/05/23 11:46
>>128
実装依存だからね。

130 :デフォルトの名無しさん:02/05/23 11:51
>>129
じゃなくて、同じ実装でも毎回同じ結果とはかぎらない。

131 :デフォルトの名無しさん:02/05/23 11:59
未定義の動作(undefined behavior)
・何が起っても不思議ではない。

未規定の動作(unspecified behavior)
・規定された何通りかの動作のうちいずれかになる。

処理系定義の動作(implementation-defined behavior)
・未規定の動作のうち、どれになるか処理系が文書で明示しなければならない
 もの。


132 :デフォルトの名無しさん:02/05/23 12:23
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < おなにしますた
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /     
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д`) < しますた
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) スマタ     
    / ./     ( ヽ、     / /⌒> )     ゚(  )−          
   (  _)      \__つ  (_)  \_つ     / >     

133 :デフォルトの名無しさん:02/05/23 12:27
一番小っこいのがいないな

134 :拡大:02/05/23 12:33
 (゚д゚) スマタ
 ゚(  )−
 / >    . モミジマンジュー
       ↑

135 :デフォルトの名無しさん:02/05/23 12:34

           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < おなにしますた
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /     
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /ω\\     ( ´Д`) < しますた
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) スマタ     
    / ./     ( ヽ、     / /ω> )     ゚(  )−          
   (  _)      \__つ  (_)  \_つ     / >     

136 :笑む獅子:02/05/23 12:46
自前のライブラリ.libはどうやって使うの?

137 :デフォルトの名無しさん:02/05/23 12:48
136
プロジェクトに追加する。

138 :デフォルトの名無しさん:02/05/23 12:49
link時に混ぜる

139 :笑む獅子:02/05/23 12:52
>>137
ねぇ聞いてるの?
ねぇーってばー!

140 :笑む獅子:02/05/23 12:53
>>138
ばかー!

141 :デフォルトの名無しさん:02/05/23 12:55
気持ち悪いハゲだな

142 :デフォルトの名無しさん:02/05/23 13:06
>>136
VC++のcl.exeなら/link [.libファイル名]

143 :デフォルトの名無しさん:02/05/23 13:16
/linkは別に指定しなくても良い罠

144 :笑む獅子:02/05/23 14:51
みんなそうやっておしえてくれないんだから、
ヘッダファイルになんて書けば良いの?
sample.lib
include<sample.h>
int main(){

}

145 :笑む獅子:02/05/23 14:52
ぼくたんが使ってるのはbcc32.exe(無料)

146 :デフォルトの名無しさん:02/05/23 14:54
bcc32 source.c sample.lib

もしくは、
#include <voke.h>
#pragma comment(lib, "voke.lib")

int main()
{
}

147 :笑む獅子:02/05/23 15:00
ぼくたんが買った本にはpragmaが載ってなかった・・・糞本でした。
共立出版の聖書を買うべきだった・・・

148 :笑む獅子:02/05/23 15:02
ぼくたんの経験だとライブラリファイルとヘッダファイルは同じファイル名でした。


149 :笑む獅子:02/05/23 15:08
>>146
なんでそうなるの?
変な事例として
何も書かないint main(){}
test.cをコンパイル
>bcc32.exe test.c
するとtest.obj , test.exeが出来る
>tlib test.lib +test.obj
このtest.lib
を使うのにその方法はどうかと

150 :デフォルトの名無しさん:02/05/23 15:22
voke.libをtest.libに直せヴォケ

151 :デフォルトの名無しさん:02/05/23 15:25
以降、笑む獅子は無視してください。

152 :デフォルトの名無しさん:02/05/23 15:26
ボケは何をやってもボケ。

153 :哀む師仔:02/05/23 15:34
こんにちわ。エヘ
みーんなだーいきらい

154 :哀む師仔:02/05/23 15:36
>>150
人格破綻者ですか?

155 :デフォルトの名無しさん:02/05/23 15:37
>>154
うざいな。お前。消えろ。
教えてもらう気がないならこのスレに顔をだすな。

156 : :02/05/23 15:41
学習意欲満々だよコレマジ

157 : :02/05/23 15:44
あちこちにおちてるライブラリ集には
ヘッダに知らない文法で宣言してあるよみ

158 :デフォルトの名無しさん:02/05/23 15:47
>>155
秋葉原人らしからぬ言動だな。。けしからん!「萌え」と言え!

159 : :02/05/23 15:50
つべこべ言わずに教えろみ

160 :デフォルトの名無しさん:02/05/23 15:56
別スレに書いたらこちらへ誘導されたのでこちらに改めて書きます。
私はUNIXでemacsとgccコンパイラを用いてC言語を勉強しています。
先日、fork()を習ったのですがfork()が一体どういう仕組みなのか分かりません。
fork()は自分自信を複製するものだということで
fork();
printf("A\n");
と記述すればAが2つ出力されることは分かりました。
ところが先生が例として書いたプログラムの中に
i=fork();
というのがでてきました。こうなると、iに一体何が代入されているのか分かりません。
i=fork();
fork();
printf("%d\n", i);
などとしてあるとi=0 i=0 i=4836 i=4836の4つがこの順番で表示され
fork();
i=fork();
printf("%d\n", i);
とされてあるとi=0 i=4851 i=0 i=4852のようにこの順番で表示されるのですが、
何がどのようになって、なぜこのように順番が変わって結果が表示されるのかが
さっぱり分かりません。
もしよろしければどうか教えてください。

161 :デフォルトの名無しさん:02/05/23 15:56
あの〜リンク先読んだ者ですけど
ある程度までは説明があるのですけれども
肝心なものから逃げています
つまりそれは.libと.hなのですみ

162 :デフォルトの名無しさん:02/05/23 15:58
萌えーーー

163 :デフォルトの名無しさん:02/05/23 16:36
>160
man fork

164 :デフォルトの名無しさん:02/05/23 16:42
>>160
C言語の質問と言うよりUNIXの質問だな。
しかもマニュアルすら読んでないことが明らかだ。
まずは >>163 のとおり。

165 :デフォルトの名無しさん:02/05/23 16:53
線形探索法の問題です教えてください。
配列aと一つの値Keyを引数とし、Keyに等しい値を持つ配列要素を見つけてその
添字の値を返す関数を作れ、Keyに等しい値がない場合は-1を返す
関数原型は次のとおりとする。
int search(int a[], int size, int Key );

166 :デフォルトの名無しさん:02/05/23 16:54
スティーブンス嫁

167 :デフォルトの名無しさん:02/05/23 16:54
pragma使わなくても出来ないの?
define使ってたような・・・

168 :デフォルトの名無しさん:02/05/23 16:56
スティーブンスってなんですか?

169 :デフォルトの名無しさん:02/05/23 16:58
{
int i;
for(i = 0;i < size;i++)
if(a[i] == Key)
return i;
return -1;
}

170 :デフォルトの名無しさん:02/05/23 17:00
>>165
宿題は宿題スレで…
それにしてもレベル低すぎるぞ

171 :デフォルトの名無しさん:02/05/23 17:01
>>165
探索法の中でも最も単純な方法じゃないか。

172 :デフォルトの名無しさん:02/05/23 17:02
もしもしーーー
俺に聞けって言うから悩みを相談してるのに、救済措置もないのかYO!



173 :デフォルトの名無しさん:02/05/23 17:03
>>172
>>169


174 :165:02/05/23 17:03
すいません助かりました!

175 :デフォルトの名無しさん:02/05/23 17:03
>>172
どの悩みじゃ?
このスレは回転速いから自分の質問を上げたレス番号を>>xxxで示すよろし

176 :デフォルトの名無しさん:02/05/23 17:05
{
 unsigned i, j, k, index;
 srand(time(0));
 for (i = 0; i < (unsigned)-1; i++)
 for (j = 0; j < (unsigned)-1; j++)
 for (k = 0; k < (unsigned)-1; k++) {
  index = rand() % size;
  if (a[index] == Key)
  return
 }
 return -1;
}


177 :デフォルトの名無しさん:02/05/23 17:07
>>176
(unsigned)-1・・・・
limits.hのUINT_MAXでいいような・・・

178 :デフォルトの名無しさん:02/05/23 17:08
>>176
殴られたい?

179 :165:02/05/23 17:14
さっきの者ですが関数をmainで確認するのはどうしたらいいんですか?
簡単な質問ですいません一昨日はじめたばっかなんで

180 :デフォルトの名無しさん:02/05/23 17:15
>>179
main関数からsearch関数を呼ぶ。

181 :笑む名無し:02/05/23 17:16
>>178
お前は人殺し認定委員会鑑査に任命された。
よって、

182 :デフォルトの名無しさん:02/05/23 17:17
>>181
abort();

183 :笑む名無し:02/05/23 17:20
>>175

>>167の事じゃないの?


184 :165:02/05/23 17:22
引数はどうしたらいいんですか?


185 :デフォルトの名無しさん:02/05/23 17:23
>>167
は質問になってないぞ。どれかのの途中だろ?

186 :デフォルトの名無しさん:02/05/23 17:23
int main()
{
int array[] = {0,1,2,3,4,5},index, n;
char buf[256];

puts("0〜5まで探したい値を入力してね(^-^)"):

if((index = serach(array, sizeof array, atoi(gets(buf)))) != -1)
printf("それはarray[%d]に入ってるよぉ〜♪", index);
else
puts("んなもんありゃしない(´-`)y-~~");

return 0;
}

187 :デフォルトの名無しさん:02/05/23 17:25
>>184
どうしたらいいですか。って、あなた自分でint search(int a[], int size, int Key );と定義したんでしょ?
それに見合う引数を渡せばいいの。

int ia[]{4,2,92,54,222,8,1};
search(ia, sizeof size/sizeof(int), 8);

とか。

188 :デフォルトの名無しさん:02/05/23 17:27
>>186
1バイトのchar型以外はsizeof arrayをsizeof(type)で割らないと。

189 :デフォルトの名無しさん:02/05/23 17:27
なにげに潜む186の罠

190 :187:02/05/23 17:28
× int ia[]{4,2,92,54,222,8,1};
○ int ia[]={4,2,92,54,222,8,1};

191 :187:02/05/23 17:29
しかもsizeof sizeってなんだよ(T_T)
sizeof iaだろ(T_T)
もう嫌(T_T)

192 :1:02/05/23 17:30
200ゲットーーーーーーーーーーー

193 :165:02/05/23 17:32
atoiとかまだ使えないんですけど、
stdio,stdlibをちょろっとやったんで


194 :デフォルトの名無しさん:02/05/23 17:33
ああ失礼。
最初のputsにセミコロンとsearchとsizeof array/ sizeof(int)を適当に修正してちょ

195 :デフォルトの名無しさん:02/05/23 17:33
>>193
まあ、ゆっくり一つずつ確実に覚えてゆこうよ。

196 :笑む名無し:02/05/23 17:35
ぼくたんがこんなに苦労してるのは、買うべき物を買わず、無料で済ませようとしているがゆえの暗中模索
買っちゃえばいいんだよな〜
いまさらvc6++,bcb5もな・・
C#ってもううってんの?いくら?VBより早い?学割きく?
msからパンフとどいたよ、ムチャクチャ高いYO

197 :質問:02/05/23 17:35
char a[20];

とかの[20]ってどういう意味があるの?
これがないとエラー出る場合とない場合あるけど。

198 :165:02/05/23 17:35
まあ全部ネタですが

199 :デフォルトの名無しさん:02/05/23 17:36
>>197
要素数。
int array[]={1,2,3};とやった場合は必要な要素数をコンパイラが自動的に判断してくれるからOK

200 :デフォルトの名無しさん:02/05/23 17:38
  |-□□-| 200ですね
   \ - /

201 :デフォルトの名無しさん:02/05/23 17:40
char a[20];

関数内だったら定義も兼ねて20バイトのメモリ領域が割り当てられる。
初期化している場合に限り添え字はつけなくても構わない。
その時は代入している数をコンパイラが数えて必要量確保してくれる

202 :201:02/05/23 17:42
  |-□□-| 202ですね
   \ - /

203 :165:02/05/23 17:47
ありがとうございます!
もう一ついいですかね?
2つの整数の最大公約数を求める関数を作りたいんですけど
最大公約数がMAX(x,y)だとすると
MAX(x,y)==MAX(y,x%y)
で大丈夫ですかね?

204 :デフォルトの名無しさん:02/05/23 17:50
もうちょっと本を読んでから質問してホスイ・・・

205 :デフォルトの名無しさん:02/05/23 17:50
最大公約数を求めるのってユークリッド互除法を使うんでしょ?

206 :165:02/05/23 17:51
すいません
そういう難しい言葉だとわからないんですけど....

207 :デフォルトの名無しさん:02/05/23 17:52
だめ。何より名前がだめすぎるgcdね。

208 :デフォルトの名無しさん:02/05/23 17:52
(;´-`).。oO(最大公約数ってなんだっけ?・・・・)

・・・・

(;;;´-`).。oO(そろそろ引篭ってないで数学でもやり直すかなぁ)

209 :デフォルトの名無しさん:02/05/23 17:54
>>194
sizeof array/ sizeof(int) って
(sizeof array) / sizeof(int) じゃないとまずくない?
sizeof演算子は / より優先度高いし。

さらにいえば (sizeof array) / (sizeof array[0])にしたいけど

210 :デフォルトの名無しさん:02/05/23 17:54
>>208
36と24の最大公約数は12とかだったような・・・・
やべー、小学校からやり直さないと!

211 :デフォルトの名無しさん:02/05/23 17:56
>>203
googleで 最大公約数 検索しる

212 :デフォルトの名無しさん:02/05/23 17:56
>>209
優先度が高いから括弧は必要ないんじゃない?

213 :209:02/05/23 18:03
>>212
あー、ぼけてた。サンクス
寝不足はいかんな…

214 :スレ立てようと思ったけどやめた:02/05/23 18:27
ある部分をコメントにするとき、なんて言うのでしょうか?

コメントアウト? コメント化?

じゃあコメントしてある部分を元に戻すのは? コメントイン?
なんかおかしい・・・

コメントにする行為、コメントを外す行為
を対義語として納得できるような単語をみんなで考えませんか?

215 :デフォルトの名無しさん:02/05/23 18:29
コメントアウト->萌
コメント除去->萎

216 :デフォルトの名無しさん:02/05/23 18:29
コメンタイズ、アンコメンタイズ

217 :214:02/05/23 18:31
一発で明確な答えが得られないということは、やはり
かなり深い問題だったようですね。
マジメに議論したらそれだけでこのスレが終わりそうだから
やっぱスレ立てたほうがいいかな。
でもマ板向けっぽいしなぁ。

218 :デフォルトの名無しさん:02/05/23 18:35
隠蔽と公表でいいじゃん。

219 :デフォルトの名無しさん:02/05/23 18:36
>>214
ここではなく、マ板なら需要あるべ。
スレ立ててみぃ。
てか、ここでヤルなよ (゚Д゚)ゴルァ

220 :214:02/05/23 18:38
>>218
「そこの行を隠蔽して、こっちの関数を公表ね」
とか業務で通じますか?通じやしませんよ。

221 :218:02/05/23 18:39
>>220
ネタにマジレスですか。
さっさとマ板に逝けよ。

222 :デフォルトの名無しさん:02/05/23 18:40
>>216に納得できない>>214はマ板に逝ってよし

223 :デフォルトの名無しさん:02/05/23 18:40
>>220
っていうか、口で伝えるなら自分でやれば半分以下の時間で終わるぞ

224 :214:02/05/23 18:49
http://pc.2ch.net/test/read.cgi/prog/1022147315/
立てました。

225 :デフォルトの名無しさん:02/05/23 19:01
  ノ     ∧     /) ∧
  彡  ノW \从/V  W \   ミ
  (  ノ        |      ノ \)
  ∩V      、、 |       >V7
  (eLL/ ̄ ̄\/  L/ ̄ ̄\┘/3)
  (┗(      )⌒(      )┛/
   ~| \__/ |  \__/ |~     / ̄ ̄ ̄ ̄ ̄ ̄
    爻     < |  ;     爻    <更新するなら早くしろ、でなければ帰れ
    ~爻     \_/  _, 爻~      \______
     ~爻__/⌒ ̄ ̄ ̄~~ヽ_ 爻~
     /    ー ̄ ̄\_ ̄\
  _一‘     < ̄ ̄\\\J
<\       ー ̄ ̄ヽ_ヽJ   ̄\_
  \     _ニニニヽ )       ~\
   \  _/⌒|\ ヽ_~~ ~⌒\_
  __/~    V \_|     ~\_

226 :デフォルトの名無しさん:02/05/23 19:03
>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1>>1

227 : :02/05/23 21:08
void (*po[])()={one,two,three,four,five,six,cancel};
scanf("%d",&no);

(*po[no])( haich1);
ってあってますか?ポインタ関数

228 :デフォルトの名無しさん:02/05/23 21:08
http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq4.html
ここの2番目の質問の答えで
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
とかいてあるんですがこれをDOSプロンプトを
開いて打てということでしょうか??


229 :デフォルトの名無しさん:02/05/23 21:12
>>228
>BCC32.CFGを作成しなければなりません

230 :デフォルトの名無しさん:02/05/23 21:21
>>229
作り方を教えてください。

231 :デフォルトの名無しさん:02/05/23 21:26
>>230
これでも使え。
http://www.cmagazine.jp/setbcc.html

232 :デフォルトの名無しさん:02/05/23 21:35
>>231
自分で作ってみたいんでですけどむずかしいですか?

233 :デフォルトの名無しさん:02/05/23 21:45
>>232
メモ帳でもつかえ。
DOSプロンプトがお気に入りなら、
一.DOS プロンプトを開いて
二..BCC をインストールしたディレクトリに移動し
三.以下のように打ち込む。ctrl+z で終了だ。
>copy con BCC32.CFG
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib

234 :デフォルトの名無しさん:02/05/23 22:01
classの中で構造体の初期化は出来ないんですか?
struct a{ int x,y;};
class b {
struct a c={1,2};
};

235 : :02/05/23 22:01
12345678秒などというのを
〜年〜日〜時〜分〜秒または
〜y〜d〜h〜m〜sと変換するようなうまい関数はないでしょうか?
なければ、modでちくちくやるしかないんでしょうかね?

236 :デフォルトの名無しさん:02/05/23 22:05
>>234
スレ違いだけど一応答えておきます。
struct a {
int x, y;
a(int i, int j) { x = i; y = j; }
};

class b {
struct a aa;
b() : aa(1, 2) {}
};
以降の議論はC++相談室で。

237 :デフォルトの名無しさん:02/05/23 22:06
>>234
C++ スレにいけ。

>>235
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/ctime.3.html

238 :デフォルトの名無しさん:02/05/23 22:09
>>235
localtime()

239 :デフォルトの名無しさん:02/05/23 22:21
>>233
メモ帳使ったとしたらどうやって作るの??
面倒かもしれないけど教えてくれたらうれしいです。

240 :デフォルトの名無しさん:02/05/23 22:23
>>239
説明書がついているはずだぞ?

241 :デフォルトの名無しさん:02/05/23 22:24
>>239
すまん。白状するとメモ帳の使い方を知らんのだよ。
秀丸なら目を瞑ってでも使えるのだがな。

242 :デフォルトの名無しさん:02/05/23 22:30
>>241
起動してみればわかるだろが。
Windowsの標準的なUIだし、機能少ないし。

243 :デフォルトの名無しさん:02/05/23 22:32
・・・

244 :デフォルトの名無しさん:02/05/23 22:34
>>242
ネ(中略)マジレ(中略)ルイ!

245 :デフォルトの名無しさん:02/05/23 22:37
ネ(カ)マ ジレ(ンマ サクラギ)ルイ?

246 :デフォルトの名無しさん:02/05/23 22:38
241はネタに見えない。

247 :デフォルトの名無しさん:02/05/23 22:41
239を小ばかにしてるネタにしか見えない。

248 :デフォルトの名無しさん:02/05/23 22:45
 ネタ VS マジ
カーン
    (゚д゚)
    ( ×) ファイッ
    / >

249 :デフォルトの名無しさん:02/05/23 22:46
ネタに一票。
つーか厨房板でやれ。

250 :デフォルトの名無しさん:02/05/23 22:48
239 がネタだろ…

251 :デフォルトの名無しさん:02/05/23 22:49
両方ネタの罠

252 :デフォルトの名無しさん:02/05/23 22:49
つまらんネタはうざいな。

253 :デフォルトの名無しさん:02/05/23 22:51
failed.

254 :デフォルトの名無しさん:02/05/23 22:53
239はネタ(or 天然)
241はネタ
242はなんつーか、なんか通じない人


255 :デフォルトの名無しさん:02/05/23 22:56
なんか242がかわいそう・・・・
しかたないけどね。

256 :デフォルトの名無しさん:02/05/23 22:57
>>255 やさしいひと・・・ ハァハァ

257 :デフォルトの名無しさん:02/05/23 23:20
>>239ですけどネタじゃないです。
天然と思われてます??
まじでわかりません。
ファイル名がBCC3
拡張子が.cfgのファイルを作るってことでしょうか?


258 :デフォルトの名無しさん:02/05/23 23:23
ネタじゃなければ天然だ

259 :デフォルトの名無しさん:02/05/23 23:24
>>257
メモ帳を起動して、
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
を入力する。
BCC32.CFGという名前をつけて保存する。
場所はBinだったかな?

260 :デフォルトの名無しさん:02/05/23 23:31
>>258さんくす!
>>258
>copy con BCC32.CFG
の意味とかあんまり知らないもので。。。


261 :デフォルトの名無しさん:02/05/23 23:33
239 はプログラミングやる前に Windows の使い方を勉強してくれ。

262 :デフォルトの名無しさん:02/05/23 23:34
>>260は以下の間違い。
>>259さんくす!
>>258
>copy con BCC32.CFG
の意味とかあんまり知らないもので。。。

263 :デフォルトの名無しさん:02/05/23 23:35
うえからC系5スレがならんでる・・・

264 :デフォルトの名無しさん:02/05/23 23:36
がんがれ

265 :デフォルトの名無しさん:02/05/23 23:37
>>261
"cd c:\"
"mkdir bcc"
"cd bcc"
とか操作をよく理解してないです。
それらを勉強するのにいいサイト若しくは書籍ないですか?

266 :デフォルトの名無しさん:02/05/23 23:37
>>265
MS-DOSって書かれた書籍まだ書店にいくつか残ってるから買って。

267 :デフォルトの名無しさん:02/05/23 23:38
DOSを勉強してがんがれ

268 :デフォルトの名無しさん:02/05/23 23:38
誰かBCCのインストーラとIDEもどき作る!
\300程度のシェアウェアなら案外売れるかも。

269 :デフォルトの名無しさん:02/05/23 23:38
>>265
コンパイルだけなら勉強するまでもなかろうよ。
必要なコマンドは10個もないだろ。

270 :デフォルトの名無しさん:02/05/23 23:39
>>268
IDEじゃなかったかもしれんが、CPadは似たようなことができなかったか?

271 :デフォルトの名無しさん:02/05/23 23:39
>>269
どんなの??
10こ書いてくれません?

272 :デフォルトの名無しさん:02/05/23 23:40
>>268
IDEって??

273 :デフォルトの名無しさん:02/05/23 23:40
>>266
ありがとう。探してみます。

274 :デフォルトの名無しさん:02/05/23 23:40
>>271
cd
dir
del
ren
bcc32

275 :デフォルトの名無しさん:02/05/23 23:41
どーしてもBCC32.cfg.txtになります、たすけてください。

276 :デフォルトの名無しさん:02/05/23 23:41
>>274
autoexec.batの編集とかは?

277 :デフォルトの名無しさん:02/05/23 23:41
正直、239のレベルでは、bccをインスコできても、
まともにつかえるとも思えない。
知識の無い香具師は、金で購え。
VC、BCB買え。本買え。

278 :デフォルトの名無しさん:02/05/23 23:42
ilink32.cfg:
-L"c:\Borland\Bcc55\lib"
これも必要?

279 :デフォルトの名無しさん:02/05/23 23:42
>>275
笑えない。

280 :デフォルトの名無しさん:02/05/23 23:42
>>275
名前を変えて

もうネタとしか思えないんだけど(笑)

281 :デフォルトの名無しさん:02/05/23 23:42
>>275
ren BCC32.cfg.txt BCC32.cfg

282 :デフォルトの名無しさん:02/05/23 23:43
>>276
メモ帳につっこんで直接書き換える。

283 :デフォルトの名無しさん:02/05/23 23:43
>>277
同意。

技術、時間、金

どれか一つがあればPC道は成せる。


284 :デフォルトの名無しさん:02/05/23 23:43
>>274
意味も教えてやれ。

285 :デフォルトの名無しさん:02/05/23 23:44
>>277
勉強しますよ。
単にDOSの命令を知らなかっただけです。

286 :デフォルトの名無しさん:02/05/23 23:45
プリコンパイルヘッダとは、
> プリコンパイルヘッダーファイルは,ディスクにあるシンボルテーブルのイメージをファイルに格納しておき,
> 後でそのファイルをディスクから読み込むだけで済むので,すべてのヘッダーファイルを再び解析する必要がなく,
> コンパイル速度が著しく向上します。
> 特に複数のソースファイルの中に同じヘッダーファイルが入っているような場合は,
> シンボルテーブルをディスクから直接読み込む方が,ヘッダーファイルのテキストを解析するよりはるかに高速です。
(C++Builderのヘルプより)
だそうです。
どうするかと言うと、bcc32.cfgの後ろに
-H
-Hs
を追加します。
-Hsは-Hcでもいいのですが、-Hsだと-Hcほどメモリを使用しないらしいです。
で、bcc32.cfgはこうなります。

bcc32.cfg:
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
-H
-Hs


287 :デフォルトの名無しさん:02/05/23 23:45
cd /?
dir /?
del /?
ren /?
bcc32 /?

288 :デフォルトの名無しさん:02/05/23 23:46
>>287
ヘルプを見ろってことか。

289 :デフォルトの名無しさん:02/05/23 23:47
>>283
>>277
お前はその三つのどれがあったのだ?

290 :デフォルトの名無しさん:02/05/23 23:48
>>275
保存するときにファイル名を "" で囲め。

291 :デフォルトの名無しさん:02/05/23 23:49
>>289
俺?多分時間。

時間があれば試行錯誤によって技術力は向上する(効率は知らんが)。
技術があれば効率が上がり時間を有効利用できる。

で、金が何を生み出すかと言えば・・・俺にはわからない。
逆に金なんてない方が人間工夫する。


292 :デフォルトの名無しさん:02/05/23 23:50
レベル云々言うのはやめろよー。勉強すればいいんだから。

293 :デフォルトの名無しさん:02/05/23 23:51
>>292
に、しても分相応って言葉がある。

294 :デフォルトの名無しさん:02/05/23 23:53
>>292
まぁな。239がまともにbccをまともに使えるようになるかどうかわは
わからん。まともに使えると思えないといった277の気持ちもわかるが。


295 :デフォルトの名無しさん:02/05/23 23:54
>>293
お前はBCCインストールするとき全て
失敗せずにわからないとこもなくできたのか?

296 :デフォルトの名無しさん:02/05/23 23:54
>>294
やる気と根気があればなんとかなると思うよ。

297 :デフォルトの名無しさん:02/05/23 23:55
俺はできたよ

298 :デフォルトの名無しさん:02/05/23 23:56
>>297
cd
dir
del
ren
bcc32
の意味とかわかってたんだろ?

299 :デフォルトの名無しさん:02/05/23 23:57
delとrenは今でも知らない

300 :デフォルトの名無しさん:02/05/23 23:59
>>298
メモ帳を起動して、
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
を入力する。
BCC32.CFGという名前をつけて保存する。
この作業は難しくなかった?っていうかどこにも
かいてなかったでしょ。俺もインストールするとき
まったくわからんかった。

301 :デフォルトの名無しさん:02/05/24 00:00
>>298
まぁ、質問した彼も勉強する姿勢はしっかり持ってるんだから許してやろう。
コマンドの使い方を聞くんじゃなくて参考文献を聞いてくるんだ。PCQAのアフォより遙かにまし。
まぁ、彼にはWindowsとDOSの基礎からきっちり学んでもらうとして。w


302 :デフォルトの名無しさん:02/05/24 00:00
>>300
readme.txtは通常、説明書ファイルです。

303 :デフォルトの名無しさん:02/05/24 00:01
>>300
あれ?確か書かれていたような気がするよ?


304 :!298:02/05/24 00:03
>>300
ヘルプに書いてなかったか?

305 :デフォルトの名無しさん:02/05/24 00:03
そうか、ついに、readmeをよむという風習すら失われたかのか……

306 :デフォルトの名無しさん:02/05/24 00:06
>>303
ちゃんと書いてあるよ。

307 :デフォルトの名無しさん:02/05/24 00:06
>>305
readmeでなくhelp

308 :306:02/05/24 00:06
うお、誤爆・・・

309 :デフォルトの名無しさん:02/05/24 00:09
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib

じゃなくて

-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"

どっちが正しい?

310 :デフォルトの名無しさん:02/05/24 00:10
>>309
スペースを入れろ。

311 :デフォルトの名無しさん:02/05/24 00:10
>>309
パスにスペースはいるなら下
入らないなら従来バージョンの上でも動く。

ってとこじゃないの?

312 :デフォルトの名無しさん:02/05/24 00:13
初期化されたstatic変数がメモリ上でROMに配置される処理系があったとします。

313 :デフォルトの名無しさん:02/05/24 00:14
はぁ

314 :デフォルトの名無しさん:02/05/24 00:14
現実にはありません。それを踏まえて聞いて下さい。

315 :デフォルトの名無しさん:02/05/24 00:15
bcc32.cfg ファイル
ilink32.cfg ファイルはなぜダウンロードしたファイルにのなかになくて
自分で作らないといけないのでしょうか??

316 :デフォルトの名無しさん:02/05/24 00:16
>>315
BCCをインストールする場所によって中身が変わるから。

317 :デフォルトの名無しさん:02/05/24 00:19
>>315
使いたいライブラリによって…以下同文

318 :デフォルトの名無しさん:02/05/24 00:21
インストール先を決めた時にファイルを作成するということはできないんでしょうか??


319 :デフォルトの名無しさん:02/05/24 00:23
>>318
そういうツールをつけてもいいかもね。
インストール後、ダブルクリックでOKという感じで。

320 :デフォルトの名無しさん:02/05/24 00:24
>>318
(インストーラがあれば)できるだろうがそうはなっていない。
現実を見なさい。営利団体のフリーのソフトに何を期待している?

321 :デフォルトの名無しさん:02/05/24 00:25
>>320
手軽さ。
と言ってみたい。

それなら買えってことになるんだけど。

322 :デフォルトの名無しさん:02/05/24 00:36
ターゲットが、お勉強する人の為ではなく
他のユーザーの引き抜きだから
インストールしても、ヘルプも見ない奴には使わせねーぞ
って言う某社の意気込み

323 :デフォルトの名無しさん:02/05/24 00:42
readme読みなさい。

2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib

ちゃんと書いてあるよ。この説明が初心者にわかりやすいかどうかは別にしてもだ。

324 :デフォルトの名無しさん:02/05/24 00:43
>>268
http://www.vector.co.jp/soft/win95/prog/se180695.html

いんすとらは無いがな


325 :デフォルトの名無しさん:02/05/24 00:49
>>318
bcc のインストーラーは Cマガジン についてなかったか?

326 :デフォルトの名無しさん:02/05/24 01:22
>>325
>>231 で紹介した。その返事が >>232 だった。

327 :デフォルトの名無しさん:02/05/24 01:28
>>326
自分で作るなんてえらいじゃないかー。
>>231の使ったからいまの議論がどうも理解できん。

328 :初心者:02/05/24 01:33
コンパイルしたときに、
warning:unknown escape sequence: '\' followed by char code 0x48
っていうエラーがでるんですが、何がいけないのでしょう。
この行には  printf("番号の順にソートする\n");
とだけしか書いてないんですが・・

329 :デフォルトの名無しさん:02/05/24 01:36
>>328
\nのnが全角になっていたりしない?

330 :デフォルトの名無しさん:02/05/24 01:37
>>328
コンパイラは何?

331 :デフォルトの名無しさん:02/05/24 01:49
gccだとSJISで書かれた漢字では通らん文字があるぞ。
EUCで上記を書き直すか、\をどっかの2バイト文字の後に入れる。

332 :?:02/05/24 01:50
\番号の順にソートする\n
or
番\の順にソートする\n


333 :初心者:02/05/24 01:57
>>329
なってませんでした
>>330
コンパイラはgccです
>>331
なるほど。確かめてみます。

334 :デフォルトの名無しさん:02/05/24 02:00
 ママ〜 やったよ〜ム板のチンカスどもに勝ったよ〜
 \__  ______
      ∨    ∧_∧
           " ,  、 ミ   / ̄ ̄ ̄ ̄ ̄
            ゝ∀ く  < あらあら
           ∧_∧  |   \_____
        三  (    とノ
      三   /   つ |
     三  _ ( _  /|  |
        (_ソ(_ソ(_ )

335 :初心者:02/05/24 02:01
ちなみに、今構造体をソートするところで手がとまってます。
うーん。。どうやるんだろ・・
比較の方法でいこうと思うんですが、値をいれかえていくとき、
たとえばkou[1]って構造体の中身とkou[2]って中身を入れ替えたいときって、
もうひとつ記憶するやつがいりますよね?tempとか適当において。
その型っていうのは何なんだろう・・
int じゃないし、char でもない・・・ う〜ん

336 :デフォルトの名無しさん:02/05/24 02:06
便乗ですが、LinuxのgccでSJISでも「表示」とかの文字が問題なく
コンパイルできるようにするにはどうしたらいいんでしょう?

けっこう頑張って調べたのですが挫折しました。

337 :デフォルトの名無しさん:02/05/24 02:08
>>335
struct HOGE {
 int a;
 char c;
} hoge;

として
struct HOGE temp;
でコピーできる。

338 :初心者:02/05/24 02:19
>>337
なるほど!!
あぁ、腑におちた時って快感。。

339 :デフォルトの名無しさん:02/05/24 02:29
>>328
0x48って'H'だね。\Hって文字の並びがその行のどこかにあるね。

340 :初心者:02/05/24 02:43
ううん・・ 構造体のソート、
temp = kou[i];
kou[i]= kou[j];
kou[j]= temp;
じゃまずいのかな・・ tempの中身もkouと同じ型を同じ分だけ揃えてるし・・
imcompatible types in assignment って相変わらずいわれてる・・

>>339
実は、隠れてるのか!あっちゃ、まずいんですね。

341 : :02/05/24 02:51
struct foo { ... };
struct foo kou[???];
struct hoge { ... };
struct hoge temp;
ってしているだろ。

struct hoge { ... };
struct hoge kou[???];
struct hoge temp;
ってするんだよ。


342 :デフォルトの名無しさん:02/05/24 02:53
>>340
同じ型を揃えてる・・・ってことは
struct {
} temp;
struct {
} kou[10];
とやってる?
struct KOU {
} kou[10];
struct KOU temp;
とやるんだよ。


343 :342:02/05/24 02:53
がぁ・・・かぶったソマソ

344 :341:02/05/24 02:59
してる/やってる?→やる
仲良くしよう。

345 :デフォルトの名無しさん:02/05/24 03:49
gccとBorland C++の違いって何?

346 :デフォルトの名無しさん:02/05/24 03:50
トヨタとニッサンの違いがわからんか?
なら人間やめな(省略)

347 :デフォルトの名無しさん:02/05/24 04:11
gcc=日本語対応してない(ダメ文字がある)、C99のかなりの機能が使える

348 :デフォルトの名無しさん:02/05/24 04:23
トヨタもニッサンも、ほとんどの国の人間にとっては
単なる、メイドインジャパン だろ?
それが分からない位で人間やめてたら(省略)

349 :336:02/05/24 04:35
>>336
どなたか、gccでのSJISの通し方、ご存知でないですか?

350 :デフォルトの名無しさん:02/05/24 04:43
nkf で euc にして通したらいい
けど、そもそもコンソールで sjis/eucj 読めるの?

351 :336:02/05/24 05:13
>>350
nkfってことはいったんソースを全部書き換える必要があるのでしょうか?
makefileでさくっと処理する書き方はありますか?

Windows上でソースの開発をしてるのでLinuxでは
直接読めなくての構わないのです。
Linux上で表示する場合は、内部でEUCに変換するコードをかましてます。

352 :デフォルトの名無しさん:02/05/24 05:22
makeってコンパイラと全く関係ない処理も出来たりして

353 :336:02/05/24 05:47
>>352
なるほろ・・・。
ワーク用のディレクトリを作って、そこでまとめて変換して
コンパイルすれば良さそうですね。
EUC変換コードを外さないと・・・。

gcc、SJIS対応オプションとか追加してくれないかな・・・。

354 :デフォルトの名無しさん:02/05/24 06:02
djgpp(MSDOS用gcc)には SJIS パッチ作った日本人がいたよ。
gcc 2.95 だから同じバージョンならそのパッチあてたら通るように
なるかもね。gcc を make しなきゃならんが。。
それとも誰かが作っているかもしれない。漏れは知らないけど。。

355 :デフォルトの名無しさん:02/05/24 06:35
みなさん、なぜそんなに詳しいのですか??
仕事で使うからですか?
趣味ですか?
学生ですか?

356 :デフォルトの名無しさん:02/05/24 06:41
>>355
例えば中2からプログラムを始めるとする。
大学卒業時にはキャリア9年の日曜プログラマの誕生だ。

357 :デフォルトの名無しさん:02/05/24 07:16
>>312の続きです

 ただし、初期化なしで宣言された場合はRAMに配置されます。その場
合、初期値は自動的にゼロになることが保証されています。
 ROMに配置されることを回避しつつ、これを任意の値に初期化する
ためにはどのようにすればよいでしょうか?

358 :デフォルトの名無しさん:02/05/24 07:17
こんな感じかな?
.SUFFIXES .sjis
.sjis.c:
nkf -e < $> > $@
a.c:


359 :デフォルトの名無しさん:02/05/24 07:49
>>357
bss

360 :336:02/05/24 08:13
>>354
パッチあててgccをmakeですか・・・。
DJGPPの2.7.2用ならここにあるようでした。
http://www.st.rim.or.jp/~jack/djgpp-jp.html
gccはこれかな?ただうちのは2.96なので合わないかも。
http://www2.airnet.ne.jp/pak04955/patch.htm

>>358
nkf -e < $> > $@
makefile初心者なものでこの意味を勉強してみます。

361 :デフォルトの名無しさん:02/05/24 10:27
ともっち!!


362 :デフォルトの名無しさん:02/05/24 10:34
初歩的な質問ですいませんが、教えてください。

連番のファイル名を作りたいのです。例えばfile001.txt,file002.txt,,,のような。
このときに便利のいい関数あるいは作り方はあるのでしょうか?

sprintf(filename,"file%3d.txt",i);
のような書き方では「file 1.txt」になりますよね。。。

363 :デフォルトの名無しさん:02/05/24 10:36
うーむ。俺も知らんなぁ。
数値から文字列にする時の効率のいい処理ってあるのかしら....


364 :デフォルトの名無しさん:02/05/24 10:36
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < おなにしますた
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /     
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /ω\\     ( ´Д`) < しますた
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) ボクモ男デス     
    / ./     ( ヽ、     / /ω> )     ゚(  )−          
   (  _)      \__つ  (_)  \_つ     /ω>     


365 :デフォルトの名無しさん:02/05/24 10:37
file%03d

366 :デフォルトの名無しさん:02/05/24 10:38
"file%03d.txt" かな?

367 :デフォルトの名無しさん:02/05/24 10:46
ディレクトリとファイルの判別するにはどうしたらいいのですか?
関数とかあれば教えてください。

368 :362:02/05/24 11:24
> 365,366

ありがとうございます、その通りです。
素早いレスに感謝!

369 :デフォルトの名無しさん:02/05/24 12:22
へぇ、そんなコードで解決できるんだ。
今夜早速やってみよっと!

370 :デフォルトの名無しさん:02/05/24 12:34
任意のファイル内に指定した文字列があるかどうか判定するには
どうすれば良いでしょうか?

371 :デフォルトの名無しさん:02/05/24 12:43
grep

372 :デフォルトの名無しさん:02/05/24 12:51
>>370
はっきり言って標準ライブラリないの関数の機能くらい覚えてくれ。
sting.hなんてただでさえ使うこと多いんだから。最近は少ないか。

strstr


373 :デフォルトの名無しさん:02/05/24 12:55
>>367
> ディレクトリとファイルの判別するにはどうしたらいいのですか?
残念ながらCの標準関数にはディレクトリをどうにかする関数はない。
ディレクトリの配下を調べるためにも非標準の関数をつかわなければならない。

unixの場合、(winは知らん)
stat関数でファイルの状態を取得し、
S_ISREG()、S_ISDIR()マクロでファイルかディレクトリかを判定できる。


374 :デフォルトの名無しさん:02/05/24 12:55
>>372
多いだろ(w

375 :デフォルトの名無しさん:02/05/24 12:58
>>373
Win(っていうかDOS)はFindFirstとFindNextにフラグ与えればよかったと思う。

376 :デフォルトの名無しさん:02/05/24 12:59
ありそうな関数が標準ライブラリにない場合は、
大抵は標準関数を少し工夫して使うと希望通りに動作するね。
定番はitoaの代わりにsprintfを使うことだね。

377 :デフォルトの名無しさん:02/05/24 12:59
>>374
いや、みんなCStringとかさ・・・。C++だけど。
って言うか可変長文字列犯罪的に便利です。
法規制すべきです。w


378 :デフォルトの名無しさん:02/05/24 13:01
>>375
GetFileAttributesで。


379 :デフォルトの名無しさん:02/05/24 13:01
>>367
標準ライブラリにはない。OS依存。
WinならGetFileAttributes(filename)&FILE_ATTRIBUTE_DIRECTORY
Unixならstat(filename, &stat_buf), S_ISDIR(stat_buf.st_mode)


380 :デフォルトの名無しさん:02/05/24 13:02
>って言うか可変長文字列犯罪的に便利です。
いつの時代の人間ですか?

381 :NOT 377:02/05/24 13:05
>>380
あなたの意見を聞きたい。

382 :デフォルトの名無しさん:02/05/24 13:05
>>380
標準ライブラリだけで生きてたころ・・・。

383 :デフォルトの名無しさん:02/05/24 13:06
今でもmalloc,realloc使いまくりの俺はどうなるんだろ・・・・

384 :デフォルトの名無しさん:02/05/24 13:06
みなさん、学生?

385 :デフォルトの名無しさん:02/05/24 13:07
>>384
はい。
雇ってください。

386 :デフォルトの名無しさん:02/05/24 13:13
>>385
なぜCに詳しいんですか?独学ですか?

387 :デフォルトの名無しさん:02/05/24 13:14
>384
今日、中間テストで分からなかったので、適当に解答欄をCソースで埋めておきました

こんな漏れでも、PGできますか?

388 :デフォルトの名無しさん:02/05/24 13:15
>>386
学校で一通り習った後、独学で。

389 :デフォルトの名無しさん:02/05/24 13:22
>>387
高校生かよ、俺が高校生の時代パソコンなんて触らせてもらえなかった。
というかパソコンなんて家になかった。

390 :デフォルトの名無しさん:02/05/24 13:22
>>388
大学?

391 :デフォルトの名無しさん:02/05/24 13:23
>>390
専門学校

392 :デフォルトの名無しさん:02/05/24 13:33
>389
家にPCなかったら、ちとキツいなぁ
張り切ってC勉強してきます。えっへん

393 :デフォルトの名無しさん:02/05/24 13:38
>>392
むかつくのでタイーホ

394 :デフォルトの名無しさん:02/05/24 13:41
>>392
まず、紙のキーボードで#include1000回。
stdio.hの書き取り100回&丸暗記。
それを一週間続ければPCを使わせてやろう。
精進せぇよ。


395 :デフォルトの名無しさん:02/05/24 13:42
>>394
VC++6.0付属のstdio.hの中身を丸暗記してきます!!

396 :デフォルトの名無しさん:02/05/24 13:48
私は女性の体の仕組みを詳しく丸暗記できるくらいまで調べてきます。

397 :デフォルトの名無しさん:02/05/24 13:49
C言語とはちと内容が違うが、8進数ってどんなプログラムに
使われているんですか?
ふと気になったもので・・・

398 :デフォルトの名無しさん:02/05/24 13:50
>394
stdio.h の丸暗記・・・

399 :デフォルトの名無しさん:02/05/24 13:52
>>379
UNIXのファイルシステムのpermissionだ。

400 :デフォルトの名無しさん:02/05/24 13:52
ディレクトリの内容調べるプログラム作ってるんですけど
フォルダの中にファイルがいくつあるか分からないじゃないですか?
んで、char* pFile[1000];とかやっちゃうと1000個までしか調べられませんよね。

いくつあるか分からない場合、その場に応じて拡張?できるような変数の確保の仕方ってどうやるんですか?

401 :デフォルトの名無しさん:02/05/24 13:53
>>397

UNIXシステムコールのopen関数のフラグとか。

#define O_RDONLY 01
#define O_WRONLY 010
etc

402 :デフォルトの名無しさん:02/05/24 13:54
>>400
malloc,calloc,realloc

403 :デフォルトの名無しさん:02/05/24 13:54
char *pFile[1000]
凄いなぁ

404 :デフォルトの名無しさん:02/05/24 13:57
>>401
どうもありがとうござんす。


405 :デフォルトの名無しさん:02/05/24 13:59
>>404
誤爆しているけど、>>399にも言えよ。

406 :デフォルトの名無しさん:02/05/24 14:07
文字列を比較する時に、比較対象が複数ある場合の効率良い比較方法ありませんか?

例を挙げると

char word[] = "apple";
BOOL flag = FALSE;

if (strcmp(word, "apple") == 0) {
 flag = TRUE;
else if (strcmp(word, "orange") ==0) {
 flag = TRUE;
else if (strcmp(word, "lemon") ==0) {
 flag = TRUE;
}

この場合、判定が3つだからまだ良いですけど、判定対象が100個とかあった場合に
if文を100個連ねるのはスマートじゃない気がします。
何か良い方法は無いでしょうか?

407 :デフォルトの名無しさん:02/05/24 14:08
>>406
system("awk 〜 >a.txt");
fp = fopen("a.txt","r");

ごめん。

408 :デフォルトの名無しさん:02/05/24 14:09
>>406
並列でやる方法も考えればあるけどバカらしい。

409 :デフォルトの名無しさん:02/05/24 14:12
>>406
ステートマップを作るか、ツリーを作る
どっちにしろ死ぬほど面倒。


410 :デフォルトの名無しさん:02/05/24 14:15
lex

411 :デフォルトの名無しさん:02/05/24 14:15
比較の対象になる文字列をテーブルにしておくのは駄目なのかな。

412 :デフォルトの名無しさん:02/05/24 14:17
>>406

int main()
{
char *keywordlist={"aaa","bbbbb","cc"};

if(lookup("bbbbb",keywordlist,sizeof keywordlist/sizeof keywordlist[0]))
printf("あった\n");
else
printf("なかった\n");
return 0;
}

int lookup(const char *str,char *list[],size_t size)
{
int i;
for(i=0;i<size;i++)
if(strcmp(str,list[i])==0) return 1;

return 0;
}


413 :デフォルトの名無しさん:02/05/24 14:19
>>412
ちょっとの工夫で一気にシンプルだね。
戻り値は何個目の項目が該当するか返したほうがいいかも。
結局ifで判定する羽目に・・・w

414 :デフォルトの名無しさん:02/05/24 14:20
>>413
じゃあ、return 0;return i;にして、return 0をreturn -1に。
呼び出し側の条件式も変えないと・・・

415 :406:02/05/24 14:22
>>407
え?ちょっとよく分かりません。すいません。

>>408-409
やはり、if文100個の方がマシでしょうか?

>>411
テーブルというのは、
char *word[] = { "apple","orange","lemon",・・・・・"banana" }
みたいに比較対象のデータを持つという意味ですか?
これでループでまわして判定するんですよね?
見た目は分かりやすそうですが、手間は同じような感じになりますね。

416 :デフォルトの名無しさん:02/05/24 14:23
>>415
ん?実行スピードはほとんど変わらないかもしれないけど、
手間は大幅に減るだろ。

417 :デフォルトの名無しさん:02/05/24 14:23
>412
char *keywordlist={"aaa","bbbbb","cc"};
*keywordlist[]。一応つっこみ

418 :デフォルトの名無しさん:02/05/24 14:24
>>411 そうです、>>412さんのと同じです。

419 :デフォルトの名無しさん:02/05/24 14:24
対象が何万もあって、更に何回も調べるようなら、線形探索は不利だな。
qsort()とbsearch()を組み合わせるとよいかも。

420 :406:02/05/24 14:25
あ、レス書いてる間に>>412さんがテーブルのプログラム書いてくれましたね。
やはりそれだと見た目は非常にすっきりしてますね。
結局はif文判定と同じですけど。
ループか、ループ展開の差しかないかな、結局。

421 :デフォルトの名無しさん:02/05/24 14:25
>>417
あ、全然気づかなかった(汗

422 :デフォルトの名無しさん:02/05/24 14:28
>>420
だって、結局総当り。

例えば工夫してデータ[1][1],データ[2][1],データ[3][1]・・・データ[1][2],データ[2][2],データ[3][2],・・・
の順位比較して該当しなくなったものから検索対象から外していく。とか。

でも、そこまでする必要があるのかは疑問。

423 :デフォルトの名無しさん:02/05/24 14:30
やっぱり最強の二分探索だろ。
テーブルにあらかじめ整列して入れておけばいいんだし。

424 :デフォルトの名無しさん:02/05/24 14:36
二分探索が最強なら最弱は何ですか?

425 :デフォルトの名無しさん:02/05/24 14:37
2分だとO(n log n)だけどツリーだとO(n)だ

426 :デフォルトの名無しさん:02/05/24 14:38
>>424
バカサーチ

427 :デフォルトの名無しさん:02/05/24 14:39
以前ニフティのどこかのフォーラムで最遅、最弱のアルゴリズムを
考えるっていうスレッドがあったな。

428 :406:02/05/24 14:39
>>416
あ、手間という意味をちょっと違う意味で書いてしまいました。
人間が書く時は手間は減りますね。
if文を処理するPC上の手間という意味で使ってました。

>>419
>>423
今の私のレベルじゃちょっと実装方法がよく分からないので、勉強してみますね。

>>422
そうですね。とりあえず、テーブルにデータを持ってループさせるやり方で
やってみることにします。
その後、>>419さんや>>423さんの方法を考えてみたいと思います。

429 :デフォルトの名無しさん:02/05/24 14:41
>>428
qsortとbsearchはCの標準関数。自分で実装する必要はない。
そのアルゴリズムを勉強することはよいことだけど。

430 :デフォルトの名無しさん:02/05/24 14:44
ていうかね、100子や1000固定度ならリニアサーチで問題ない。
圧縮とかそういうんでなければあんまり気にする必要はない

431 :デフォルトの名無しさん:02/05/24 14:47
>>430
俺もそう思うんだけどね、やけに効率にこだわるから・・・・

432 :デフォルトの名無しさん:02/05/24 14:50
結論

やって遅かったら悩め。

433 :デフォルトの名無しさん:02/05/24 14:54
>>432
try&errorカコワルー
と言ってみるテスツ

434 :デフォルトの名無しさん:02/05/24 14:55
>>433
金魚をバズーカ砲で攻撃するよりはスマートかと。

435 :デフォルトの名無しさん:02/05/24 15:34
戦車でイモほり、ってのもあったな。ナツカスィ。

436 :デフォルトの名無しさん:02/05/24 15:37
>>434
毒物でもなめてみて死んでみてください

437 :デフォルトの名無しさん:02/05/24 15:42

二分木以外にもハッシュ表とかTrieとかいろいろあると思うけれども。
メモリに収まらないくらいでかくなるならB木とか。
今回の用途ならハッシュ表が一番適している気がする。

メモリ容量に糸目をつけないならTrieが最も速い。

438 :デフォルトの名無しさん:02/05/24 15:43
>>436
PCのいいところはちょっと位失敗しても失うものは電気代くらいなところです。

439 :デフォルトの名無しさん:02/05/24 15:47
1000個の文字列をリニアサーチして気にならんのか…
2分木より100倍、ハッシュと比べるとそれ以上遅いだろうに。

まあ、用途によっては気にならんのかな。

440 :デフォルトの名無しさん:02/05/24 15:49
コンパイラが100倍おそくなったりスクリプトの実行が100倍
おそくなったら気になるわな。

441 :デフォルトの名無しさん:02/05/24 15:55
ハッシュって変換式考えるのめんどくさくない?
文字列からハッシュ表参照する式って。

442 :デフォルトの名無しさん:02/05/24 16:02
>>441 いちいち考えんでも先人のをそのまま利用すれば良いと思う。
おれが良く使うのは、
unsigned int h = 0;
while (*str) {
 h = (h << 3) ^ *str++;
}


443 :デフォルトの名無しさん:02/05/24 16:04
文字列なら最初の4バイトそのままとかで十分では?
あとはハッシュ表サイズ(素数)で割った余りを取ればよい。

444 :デフォルトの名無しさん:02/05/24 16:05
>>439
試してみた。
長さ1024バイトの文字列10240個をリニアサーチしたら700ms弱でした。
どう考えても気にならないでしょう、この程度。

445 :デフォルトの名無しさん:02/05/24 16:06
ハッシュ表って別に素数じゃなくても良いと思うんだけどー
ダメなの?

446 :デフォルトの名無しさん:02/05/24 16:07
>>444
だから用途によるだろ。
コンパイラやインタプリタで変数名や関数名1個ごとに700msもかかってたら
やってられねーって。

ちょっと工夫すれば(10240個でも)1ms未満にできるわけだから。


447 :444:02/05/24 16:07
もちろんサーチ対象と先頭1023バイトは一致、最後の1バイトのみ不一致の文字列で計測

448 :444:02/05/24 16:09
>>446
ちょっと工夫したソース出してください。
どう考えても1023バイト不一致で1ms未満は不可能ですが。
事前にハッシュ表作るのは、勿論×で。

449 :デフォルトの名無しさん:02/05/24 16:10
>>445
割る前の数値の作り方が単純だと、素数で割らないと偏る。
均一に分布しないとハッシュの意味がない。

極端な話、文字列の最初の4バイトを1024で割ったら、結局
下位10ビット以外を捨ててることになる。

450 :デフォルトの名無しさん:02/05/24 16:12
>>443
最初の4バイトをそのままって意味が分からんけど。
そのままどう使うの?
各アスキーコードを足すの?

451 :デフォルトの名無しさん:02/05/24 16:13
>>449
なるほど。
しかし、それだと比較ごとに除算で非効率になるから、
ハッシュ関数を練った方が良いと思う。
静的に決定できるなら、gperfとかで一発だけどね。

452 :デフォルトの名無しさん:02/05/24 16:14
>>448
ん?ああ、一回700msじゃなくて全体でか。

検索一回あたりの比較回数では、
リニアサーチ: 最悪10240回、平均5120回
二分探索: 最悪14回、平均13と14の間
ハッシュ: 最悪???回、平均1〜2回

だから、二分探索だと731分の1くらいになる。

453 :デフォルトの名無しさん:02/05/24 16:16
>>450
unsigned hash = *str++;
if (*str) hash = (hash << 8) + *str++;
if (*str) hash = (hash << 8) + *str++;
if (*str) hash = (hash << 8) + *str++;


454 :デフォルトの名無しさん:02/05/24 16:16
>>449
code = *(int32_t*)&string % 65521;
とかでしょ

455 :デフォルトの名無しさん:02/05/24 16:17
>>451
gperfは除算使うんじゃなかったっけ。
つーか、カナーリ複雑な演算だった気がする。
衝突がないから比較は1回ですむけど。

456 :デフォルトの名無しさん:02/05/24 16:18
>>454
それ、境界があってないとひどいことになるような。
規格的には未定義動作だよね。

457 :デフォルトの名無しさん:02/05/24 16:19
>>455
ああ、説明が悪かったね。
素数で除算するより、シフトで解決した方が早いから
テーブルのサイズは2^nにするべきだと考えていたんで。
勿論、動的の場合。

静的ならgperfで

458 :デフォルトの名無しさん:02/05/24 16:20
>>456
unionにしとけばよい。

459 :デフォルトの名無しさん:02/05/24 16:27
http://eieweb.yz.yamagata-u.ac.jp/~aito/ADT/hashfunc.html
除算法とは,キーをハッシュ表のサイズで割った余りを使う方法である.キーの値を
K,ハッシュ表のサイズをMとすると,

h(K) = K mod M

となる.ただし除算法には問題があって,表のサイズMが素数でないとあまり良いハ
ッシュ関数にならない.特に,M=2nのときには最悪で,キーの下nビットだけしかハ
ッシュ関数に使われない.



460 :デフォルトの名無しさん:02/05/24 16:29
やっぱり式考えるの面倒くさそうだな・・・。
>>442あたりの式を適当に使っておけば良いのかな。

461 :デフォルトの名無しさん:02/05/24 16:35
>>447
>もちろんサーチ対象と先頭1023バイトは一致、最後の1バイトのみ不一致
>の文字列
>で計測

つまり文字列の種類はたかだか255個しかない表?
どんな表だ(藁


462 :デフォルトの名無しさん:02/05/24 16:39
ランダムに並んでいるデータから一回だけ探索するなら線形探索が一番速いよね?
どんなに要素が多くても。

463 :デフォルトの名無しさん:02/05/24 16:42
>>461
なぜ煽ってるんだかサッパリ分からないんだけど?
文字列の種類は検索対象1種類、検索文字列1種類
最後の1バイトが違うだけの2種類だ
単純なリニアサーチでもっとも遅くなる状況を作ったんだけど。


464 :デフォルトの名無しさん:02/05/24 16:45
最近のUnixならたいていhsearchというハッシュ検索ライブラリが
入ってるからそれ使えばよい。なければソースを持ってくる。

お勉強ならいちから書いても良いけど。

465 :デフォルトの名無しさん:02/05/24 16:48
>>462
検索することなんか気にせずランダムに配列に入れちゃったデータなら
そうだろうね。

でも「ランダムにやって来るデータを、あとで1回だけ検索する」なら
どう考えてもハッシュとかの方が速いだろ。



466 :デフォルトの名無しさん:02/05/24 16:51
>>463
ふつうそれだと表の大きさは2にしかならんのとちゃう?

467 :462:02/05/24 16:51
>>465
ああ、入力されるごとに処理できるようならハッシュの方が速いね。
一行ずつ読みとりながらハッシュテーブルに登録するとかね。

468 :デフォルトの名無しさん:02/05/24 16:58
>>466
std::vector< std::string > sv(10240, pattern);
これなら表のサイズは10240個だけど。

469 :デフォルトの名無しさん:02/05/24 17:01
#include <stdio.h>
int main(void);
int main(void)
{
printf( "%d\n",1.1 );
return (0);
}
は間違ったぷろぐらむですけど
実行すると
-1717986918という値が帰ってきます。
なぜですか?

470 :デフォルトの名無しさん:02/05/24 17:02
ていうかさ、元ネタ自体がお勉強だったんだし、
リニアサーチのベタ比較で何も問題ないだろ。
そらお勉強でもレスポンスが帰ってくるのに何十秒もかかるなら考えた方が良いが、
>>444で試したような最悪なケースでも1秒以下なんだからそれで良いじゃないか。

それを横から>>439みたいなのが出てきたからややこしくなっただけでさ。


471 :デフォルトの名無しさん:02/05/24 17:03
>>469
結果が未定義だから。浮動小数点数を無理矢理intの表現で読むと、
そのように見えると言うこと。

472 :デフォルトの名無しさん:02/05/24 17:04
>>469
(int)1.1とやれば思い通りになるかも。

473 :デフォルトの名無しさん:02/05/24 17:08
>>472
小数点以下は切り下げなんですね。

474 :デフォルトの名無しさん:02/05/24 17:10
昨日、一昨日Borland C++の設定の仕方を聞いたものなんですけど
やっとCを勉強できる状態になりました。

475 :デフォルトの名無しさん:02/05/24 17:12
>>474
おめでと

age

476 :デフォルトの名無しさん:02/05/24 17:54
> ていうかさ、元ネタ自体がお勉強だったんだし、

え。仕事だろ?

> >>444で試したような最悪なケースでも1秒以下なんだからそれで良いじゃ
> ないか。

まああんたはリニアサーチ以外知らなかったんだろうが、「効率の良い方法」
聞いてるやつにそんなの教えるなって。

> それを横から>>439みたいなのが出てきたからややこしくなっただけでさ。

掲示板に横からも後ろからもあるかい(w

477 :y2kbest@k9.dion.ne.jp:02/05/24 17:57

「高性能ビデオスタビライザー」です↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

店頭販売価格は、13900 円なんですが、
今回だけ、破格の 7700 円に設定して
おります。

購入希望の方は、メールを下さい。

不安な方は、落札をして頂いても
構いません。

478 :デフォルトの名無しさん:02/05/24 18:17
>>439=476
まぁ、なんと思っても良いけど。
漏れはひたすら最適化ばかり気にしてる最適化厨は嫌いだから、
この辺にしといてくれや

479 :デフォルトの名無しさん:02/05/24 18:24
プログラムを強制終了する場合どうすればいいんですか?

ctrl+Z?


480 :デフォルトの名無しさん:02/05/24 18:29
Ctrl C
Alt Ctrl Del

481 :デフォルトの名無しさん:02/05/24 18:30
2日で480って。。。

482 :デフォルトの名無しさん:02/05/24 18:30
>>479
CTL+D

483 :デフォルトの名無しさん:02/05/24 18:38
#include <stdio.h>
int main(void);
int main(void)
{
int limit;
limit=100;
int a[limit];
return (0);
}
これどこが間違ってるんですか?

484 :デフォルトの名無しさん:02/05/24 18:39
> これどこが間違ってるんですか?
基礎が。

485 :デフォルトの名無しさん:02/05/24 18:41
>>484
あなたの人格もねw

486 :デフォルトの名無しさん:02/05/24 18:43
>>484
配列に限界がないところが

487 :デフォルトの名無しさん:02/05/24 18:44
ハァ?

488 :デフォルトの名無しさん:02/05/24 18:45
>>485
逆ギレしないでくさい。あーくさ。

489 :デフォルトの名無しさん:02/05/24 18:46
>>488
すまそ。配列のa[]の中に変数を入れたらダメってこと?

490 :デフォルトの名無しさん:02/05/24 18:46
次の1には
エラーメッセージの読めないヤシはカエレ!!
を付け足してほしい

491 :デフォルトの名無しさん:02/05/24 18:47
>>489
正解。

492 :デフォルトの名無しさん:02/05/24 18:49
#define LIMIT 100
#include <stdio.h>
int main(void)
{
  int a[LIMIT];//俺が悪いんじゃない!変数名を適当に決めた>>483の責任だ!
  return 0;
}


493 :デフォルトの名無しさん:02/05/24 18:50
Cでは関数内での変数宣言は関数の先頭でまとめてやらないといけないんじゃないの?

494 :デフォルトの名無しさん:02/05/24 18:51
というか、どうして代入文の後に宣言文があるのですか?
ここCスレ…

495 :デフォルトの名無しさん:02/05/24 18:51
かぶった。ケコーン!

496 :484:02/05/24 18:52
だから基礎が間違ってるって言ったろ!な!な!

なーんつって。

497 :デフォルトの名無しさん:02/05/24 18:53
>>496
自分の星に帰れ。

498 :デフォルトの名無しさん:02/05/24 18:53
>>494
代入文の後に宣言文があるのはだめなの?

499 :デフォルトの名無しさん:02/05/24 18:55
int limit=100;
int a[limit];
のようにコンパイル時にサイズが決まるものはよかったような・・・・

int limit;
limit=100;
int a[limit];
なんてやるのは駄目だと思うけど。

500 :499:02/05/24 18:56
あ、やっぱりだめだ。

501 :デフォルトの名無しさん:02/05/24 18:57
>>499
そうだったんか。
俺、今までmalloc使うものだとばかり思ってたよ。あはははは

502 :デフォルトの名無しさん:02/05/24 18:57
c++でconst int x = 100;ならok

503 :デフォルトの名無しさん:02/05/24 18:58
Cスレです。

504 :デフォルトの名無しさん:02/05/24 18:58
>>501
malloc使うのはサイズが分からないときだけでしょ。

505 :デフォルトの名無しさん:02/05/24 18:59
↓がC99なら可変長配列が使えると言い出す。

506 :デフォルトの名無しさん:02/05/24 19:00
C++ならできます

507 :デフォルトの名無しさん:02/05/24 19:00
C99なら可変長配列が使える

508 :デフォルトの名無しさん:02/05/24 19:01
>>504
int limit=100;
int a[limit];
ができるならサイズ計算して動的に確保できるな、っていうボケだごるぁ。

509 :デフォルトの名無しさん:02/05/24 19:01
>>505
というかおまえが言ってる

510 :デフォルトの名無しさん:02/05/24 19:02
>>508
コンパイラが融通が聞けば、コンパイル時に分かるじゃない。

511 :デフォルトの名無しさん:02/05/24 19:03
>>510
互換性が電子の渦の中に消失するという罠

512 :510:02/05/24 19:03
× 聞けば
○ 利けば

513 :デフォルトの名無しさん:02/05/24 19:06
それが出来るのはgccだけ

514 :デフォルトの名無しさん:02/05/24 19:07
gccは可変長配列を使っているだけだと思われ。

515 :デフォルトの名無しさん:02/05/24 19:12
C99準拠に向けて動き出す前から可変長配列使えたよ<GCC

516 :デフォルトの名無しさん:02/05/24 19:15
enum
{
 BUFSIZE = 1024,
 ...
};
char buf[BUFSIZE];
はCでもOK?

517 :デフォルトの名無しさん:02/05/24 19:21
>>515
C99のアイディアのかなりの部分はgccから来ていると思われ。

>>516
OK。

518 :デフォルトの名無しさん:02/05/24 19:35
>>513
なこたーない。IntelのコンパイラでもSunのccでもDEC(Compaq)のccでも
SGI(Cray)のccでも使える。

(つか、使えないと行列演算ライブラリさえまともに書けない。)

519 :デフォルトの名無しさん:02/05/24 19:37
のに、VC++6.0では使えない。
使えなくても困らないけど。

520 :デフォルトの名無しさん:02/05/24 19:41
>>519
まあ、行列演算ライブラリをVC6で書いたりはしないだろうな。

521 :デフォルトの名無しさん:02/05/24 19:45
>>520
別に可変長配列じゃなくてもヒープに確保すればいいじゃねーかよ
VCで書いた行列演算ライブラリあるし、そんなこと言ってる奴には
一生かかっても使うことも作ることも出来ない。
Sunのコンパイラよりは遙かに賢いしな<VC

522 :デフォルトの名無しさん:02/05/24 19:51
行列同士の乗算を素直に書くと、

#define N ...
double a[N][N], b[N][N], c[N][N];

int i, j, k;
for (i = 0; i < N; i++) {
 for (j = 0; j < N; j++) {
  double x = 0.0;
  for (k = 0; k < N; k++) {
   x += b[i][k] * c[k][j];
  }
  a[i][j] = x;
 }
}

となるが、これをライブラリにする(つまりNを可変にする)
には、可変長配列が使えないと今どき番地計算を自分でシコ
シコ書く馬鹿みたいなコードになるか、あるいは効率の悪い
jagged array(1次元配列へのポインタ配列)になる。

523 :デフォルトの名無しさん:02/05/24 19:54
>>521
SunのコンパイラとVCをどうやって比べたの?

524 :デフォルトの名無しさん:02/05/24 21:03
UNIX/C のライブラリを解説している本 or Web Site はありませんか?
教えてください。

525 :デフォルトの名無しさん:02/05/24 21:05
ライブラリって標準ライブラリのこと?
どの本でも解説してるでしょ。

526 :デフォルトの名無しさん:02/05/24 21:26
>>525
多分、各種POSIX準拠の関数のことだと思う。

527 :デフォルトの名無しさん:02/05/24 21:28
>>526
Linuxでも作るんかいな。

528 :デフォルトの名無しさん:02/05/24 21:34
http://standards.ieee.org/reading/ieee/std_public/description/posix/

529 :デフォルトの名無しさん:02/05/24 23:25
去年出たPOSIXって関数がすんごい増えてるけど、
あんなのに準拠したライブラリを持つようなOSは出てくるのかな?

それよりなんでこのスレ、二日で半分以上使ってるわけ??

530 :デフォルトの名無しさん:02/05/24 23:49
>>529
POSIXとSingle Unix Specificationを統合したやつだよね。
ほとんど現状追認(+多少のclean up)じゃないの?


531 :デフォルトの名無しさん:02/05/24 23:58
>>529
マ板に行かずにネタや雑談する人が増えたから。

532 :デフォルトの名無しさん:02/05/25 00:38
>>531
プログラム板とプログラマ板の違いってなに??

533 :デフォルトの名無しさん:02/05/25 00:45
ム    マ
人 <=> 技術
ネタ

534 :デフォルトの名無しさん:02/05/25 01:18
>>533
逆だなぁ〜

535 :デフォルトの名無しさん:02/05/25 01:21
SHIFT-JIS <-> EUC <-> UNICODE
の変換をしたんですが、どうするのが一番知的で
かっこいいですか?

536 :デフォルトの名無しさん:02/05/25 01:23
なんかのライブラリとかツールを使う

537 :デフォルトの名無しさん:02/05/25 01:24
>>534
アホな質問が多いから、そう感じるだけで>>533が正しい
まぁ、そのうち(すでに?)どうなるかは分からんが

538 :535:02/05/25 01:29
すいません、フリーなライブラリってあるのでしょうか?
探したけど、見つかりませんでした。

539 :533:02/05/25 01:32
スマソ。ムとマ間違えた。紛らわしいな。
一応分割時の状況とかもわかってたんだけど。

ムギ板/ギ板という略称を申請

540 :デフォルトの名無しさん:02/05/25 01:43
>>538
nkf
unicodeには対応していないけど。

で、なんでここで聞く?:-)

541 :540:02/05/25 01:45
ああ、ライブラリか・・・・

542 :デフォルトの名無しさん:02/05/25 05:51
俺のライブラリを使う。非公開。なんてね。

unicode ⊃ sjis,eucj だから完全にスルーな変換はできないよ。
つか、誰でも知ってることですが。。。

543 :デフォルトの名無しさん:02/05/25 05:53
ほら、そこらへんは、実体参照とかで。

544 :デフォルトの名無しさん:02/05/25 10:48
はぁ、今夜も一人で自分のティムポ、いじろっと!

545 :猫大好き ◆MwneRkSI :02/05/25 11:01
ファイルポインタに関する質問なのですが
CGI などを作るときにファイルの指定はどのようにしたらいいのでしょうか?

例えば、c:\dir\myfile.txt というファイルを開こうと思ったら
fopen("c:\dir\myfile.txt","w") 処理;

でできますか? また、UNIXの場合には
/dir/myfile.txt などのように指定すればいいのでしょうか?

546 :デフォルトの名無しさん:02/05/25 11:04
>>545
特に間違ったことは言ってない。
自分を信じて取りあえず試してから来いよ・・・。

547 :デフォルトの名無しさん:02/05/25 11:05
fopen("c:\\dir\\myfile.txt","w");
だな。

548 :デフォルトの名無しさん:02/05/25 11:27
>>545
とりあえずfopenの戻り値を受け取らないと使えないな。

549 :デフォルトの名無しさん:02/05/25 13:31
>>548
ファイル開くだけみたいだから良いんじゃないの...。(モードが "w" だから、
単に空のファイル作るだけとかさ。)

>>545
まず、>>547 の忠告聞いた上で、>>546 に従いな。でも、多分 CGI 故の
ディレクトリ指定ではまりそうだから、そうなったら WebProg 板へ逝け。

550 :猫大好き ◆MwneRkSI :02/05/25 13:38
わかりました。
ありがとうございました。

551 :デフォルトの名無しさん:02/05/25 13:38
ともっち!


552 :デフォルトの名無しさん:02/05/25 13:39
... fopen("c:\\\\dir\\myfile.txt","w")
じゃないのか?

いずれにせよ、データファイルの位置はインストール時に
指定できるようにしないとしないと困るだろ。シェルスク
リプトやバッチファイルから環境変数で与えるとか。

UnixでもWinでも動くようにするつもりならなおさら。

まあコンパイル時に設定ファイルの絶対パスだけコードに
埋め込んじゃう(あとのパスは設定ファイルに書いとく)と
いうのもアリかもしれんけど。

553 :デフォルトの名無しさん:02/05/25 13:53
\                  ブロロロロ        ./
  .\       __ _______         ./
    \    /  | :|  佐川急便 |        ./
     .\   |^~~~|-|======| =33   ./
ウーー    \  ̄◎ ̄◎ ̄ ̄ ̄◎ ̄       /            プゥーン
         \                  /
   ヾ  〃   \               /      __
   __,__     .\      ∧∧∧∧∧/     __|  |_( ̄ ̄)
 _|    |_     .\   <        >    |ウンコ:(ニニニニ)ニ =33333
 |━警視庁━| =3   \ <     働 >     ̄◎ ̄◎ ̄
  ̄◎ ̄◎ ̄         <  矛   く  >
――――――――――――< .感  車 >――――――――――――
                  < .!!!!  の >    _凸_
                  <.         >  _|    |_
       ブーーーーン     /∨∨∨∨∨\  |  タクシー   | =3
                 ./          \  ̄◎ ̄◎ ̄
__ 二 _ −      /ワッショイワッショイワッショイ \      ヴィーーン
|□ |_%%_= 二    /                \
|      _| =3 -  /    ヽoノ  ヽoノ ヽoノ    \       O
 ̄◎ ̄◎,, 三  ̄― ./   _  /   /    /      \    ヽ‖/
             /   /_| ノ)  ノ)   ノ)       \   く く
            ./   |祭~| ̄ ̄ ̄ ̄ ̄ ̄| =3      \
            /     ̄◎ ̄ ̄ ̄ ̄◎ ̄           \


554 :デフォルトの名無しさん:02/05/25 14:01
>>549
プログラム終了時まで開きっぱなしはよくない。

555 :凄いプログラムを書いた。:02/05/25 14:30
main()
{
puts("Hello,world!");
}

556 :デフォルトの名無しさん:02/05/25 14:32
                +      .
          +            .  ,,;;-;_               .
  *           ,,--'''""`ヽ'   -/"~   ̄`ヽ、    +
      .      /       ヾ''"         ~`ヽ   
          /       _,,,...  ヽ;:  /""ヽ    ヽ         .
   +       /       ;'"  "\ l /;:;;:::-'''"ヽ,   i    *
      .   /       /::::::::-'''''"~        ヽ,   .|,
  .        /       |;:"               ヽ   !  .      +
          /       /                 |  |
      *   /       人           "'':;;::''''' i,  |     .
         i        ';  ,,,,;;:::::::'''"   .:   ,,,,,, ヽ ヽ 
         |        |  "  ,,,,,,,,, .::    ;''“”`  |  |  *
   +      |        |:   ;::''“”“~` ::::.      ... |. i      .
          |        i::     .:.:.:.:.::.. :::::  i  .:.::.:.:.| ,;|   
          |       ヽ.   .:.:.:;:;:;:;:::.:.. :::: , _〉 .:.:;:;:.:.:| ,| .   
       +   |        ノ::    ::.:.:.:.:.:.:      :.:.:.:.:.| |,      .
           |       人::::..        ___,,,,,,,,...:;-'  |  |  +
.. *         |     ;:'" `、ヽ      'ヾ,...  ..ノ  /  |        +
           |        ヽ:: \       ::::::   ./  |       .
           |        ::;|::.  `ヽ、_       /'|ヽ./"
    +      ,/.   ::::::::::::;;:::人:.     `'''----―'' .|: ヽ    *
         /;:;:;:;;:;;;;;;;;;;;;/   `ー、          ;-'"  \ー-、
  .         ,.-'"  \       \      ;:-''"    .|   `-:;;,,
         /.      \      "''''-ヽ、,.-''"      |
    ,,..-‐'''""          ヽ    ,.-''"\ : /―――-:;/
ともっちがかわいいと見抜けるようでないと、(ム板を使うのは)難しい。

557 :デフォルトの名無しさん:02/05/25 15:55
。・゚・(ノД`)・゚・。
http://www.asahi.com/obituaries/update/0525/002.html

558 :デフォルトの名無しさん:02/05/25 16:21
ポインタ配列で格納されている値の変数を複数個、returnコードで返すことって出来るでしょうか?



559 :デフォルトの名無しさん:02/05/25 16:34
>>558
(゚д゚)ハァ?


560 :デフォルトの名無しさん:02/05/25 16:35
returnの戻り値は、ひとつだけ。
そこで、ポインタの配列を返すようにみせかけるためには、先頭ポインタを使う。

ポインタの配列の先頭ポインタを返すことで、
受け取ったほうでポインタの配列をたどり、
ポインタ配列のポイントする(指し示す)値を得ることはできる。

このポインタの配列の、先頭のポインタを返す

■→値
■→値
■→値
■→値
■→値


561 :デフォルトの名無しさん:02/05/25 16:37
>>560
その方法やるときは、格納した要素数の情報も返さないといけないから、
結局は参照渡しが必要なのではないでしょうか?

562 :デフォルトの名無しさん:02/05/25 16:38
だいたい、一番下の白い四角をどうやって判断するわけよ?
文字列のときはいいかもしれんが、、、、

563 :デフォルトの名無しさん:02/05/25 16:39
構造体に配列の先頭と数を入れて返す

564 :デフォルトの名無しさん:02/05/25 16:40
>>563
うまい!!


565 :デフォルトの名無しさん:02/05/25 16:41
STLのpairの真似をする。

566 :デフォルトの名無しさん:02/05/25 16:43
>>563の考えはうまいかも知れんけど、無意味な
構造体の定義が増えてしまいそうなので、私は発想力のほうは
認めるが、実用性では認めない。

やはり参照渡しを使うべきだと思う。
関数を知っていて、参照渡しを知らないとなるとdqnだ。

567 :デフォルトの名無しさん:02/05/25 16:52
> 関数を知っていて、参照渡しを知らないとなるとdqnだ。

関数を知っていて、参照渡しを知らないのはただの初心者。
たいした条件でもないのにそれに沿った答えを出せない奴の負け惜しみカコワルイヨ

568 :デフォルトの名無しさん:02/05/25 16:56
>>562
ポインタ配列だろ?
NULLを入れればいいじゃないか。

569 :568:02/05/25 16:58
NULLを途中に含む配列ならだめだけど:-)

570 :デフォルトの名無しさん:02/05/25 17:13
ポインタ渡して変更してもらえば

571 :デフォルトの名無しさん:02/05/25 17:20
>>570
それでは「returnで返す方法」という質問の意図に沿っていません。
そしてそれを一般に「参照渡し」と呼ぶような気がします。

572 :デフォルトの名無しさん:02/05/25 17:27
まあ答えは出とるわけだし

573 :デフォルトの名無しさん:02/05/25 17:34
>>554
もうその手の話題はやめようよ。

574 :デフォルトの名無しさん:02/05/25 17:36
↑うるせえバカ

575 :デフォルトの名無しさん:02/05/25 17:43
最後のポインタは最初のポインタと同じものを指す、という約束にすれば?

576 :デフォルトの名無しさん:02/05/25 17:44
もしかして俺って天才

577 :デフォルトの名無しさん:02/05/25 17:51
↑氏ねアフォ

578 :デフォルトの名無しさん:02/05/25 17:54
質問させてください。
mainの中である番号i(int型)を取得し、そのiを別の関数に渡して、その
番号に対応した文字列をmainに返すというプログラムをつくりたいのですが、
int main(void)
{
char day(int);
int i;
printf("曜日コード入力\n"); scanf("%d",&i);
printf("%s\n",day(i));
}
char day(int j)
{
switch(j){
case 1: return ("月曜日");
case 2: return ("火曜日");

〜〜〜中略〜〜〜

default :return ("不正なコードです");
}
}
とし、コンパイルしたところ、case1からdefaultまでの各行に対して
warning: return from incompatible pointer type
と言われました。そこで、
int main(void)
{
char* day(int);//ここを変更
int i;
printf("曜日コード入力\n"); scanf("%d",&i);
printf("%s\n",day(i));
}
char* day(int j)//ここを変更
{
switch(j){
case 1: return ("月曜日");
〜〜〜以下省略〜〜〜

としたところ、エラーもでず実行することも可能でした。これまで関数を
ポインタとして定義する(と言う表現でいいのかどうかわかりませんが)
ということをした事が無いのでなにか違和感があるのですが、こういう
やり方で何か問題はありますか?
あるいはもっと他に一般的なやり方があるのでしょうか?
ちなみにコンパイラはcygwinのgcc2.95.3-5を使いました。

579 :デフォルトの名無しさん:02/05/25 17:55
>>575
空の配列を表現できない。
複数の要素が同じポインタを指す可能性のある配列には使えない。

よって、>>576 は、単なるバカと決定しました。

580 :デフォルトの名無しさん:02/05/25 17:55
char day(int);

これは何?
char (*day)(int);ならわかるけど。

581 :580:02/05/25 17:58
>>578
char *day(int);
int型の値を受け取り、char型へのポインタを返す関数

582 :デフォルトの名無しさん:02/05/25 17:58
定数を返す時は関数の戻り型に const を付けよう。

583 :デフォルトの名無しさん:02/05/25 17:59
それでいい。
文字列を返したい場合、関数の戻り値は
char *
だ。
文字列は、文字の配列だから、先頭ポインタで返す。
"STR"は、[S],[T],[R],[\0]という配列のことだから、
[\0]を出力関数が見つけて、そこで出力が終わる。

584 :デフォルトの名無しさん:02/05/25 18:00
>>578
> 関数をポインタとして定義する
と言う考え方が間違い。たんに、「char へのポインタを返す関数」を定義してる
だけ。通常これで問題ない。

585 :581:02/05/25 18:00
あ、関数へのポインタじゃなくて関数のプロトタイプか。
関数内に書くとは珍しい・・・

586 :デフォルトの名無しさん:02/05/25 18:06
>>582
うん ? 単なる標語か ? 今回の話には関係ないと思うが...。
それとも文字列リテラルだから const char *day() にしろと言いたい
のか ?

587 :デフォルトの名無しさん:02/05/25 18:06
>>579
つーことは、そのどっちもとっくに気付いているおれはやっぱり天才

588 :デフォルトの名無しさん:02/05/25 18:09
>>586
だろうな。
戻り値には普通つけないと思うが・・・・

589 :デフォルトの名無しさん:02/05/25 18:18
普通つけない→付けたほうがいい時でも、サボるやつが多い

590 :デフォルトの名無しさん:02/05/25 18:18
>>587
普通すぐ気付くし、多分みんなとっくに気付いていると思って書き込ま
ない。うれしそうに書き込むのは、バカだけ。

591 :デフォルトの名無しさん:02/05/25 18:19
>>587
そう、チミは天才、よって、チミはもうここで学ぶものは無いから、来なくていいよ。

592 :デフォルトの名無しさん:02/05/25 18:22
578です。
間違ってはいないということですね。
constについてはよく知らないのでまた勉強しておきます。
どうもありがとうございました。

593 :デフォルトの名無しさん:02/05/25 18:28
const -> constant

594 :デフォルトの名無しさん:02/05/25 18:33



595 :デフォルトの名無しさん:02/05/25 18:39
答えを出すことじゃなくて、人の意見を批判することのほうに
考えが向いてしまっている奴は、低レベルな奴だと思う。

596 :デフォルトの名無しさん:02/05/25 18:43
それが2ch流。

597 :デフォルトの名無しさん:02/05/25 18:43
>>595
じゃあ君は低レベルなんだ。

598 :デフォルトの名無しさん:02/05/25 18:44
>>595
ボクみたいな、人の意見に批判すら出来ない程度のヤシはどうですか?
もちろん答えなんて出せません

599 :デフォルトの名無しさん:02/05/25 18:45
>>597
オマエモナ

600 :デフォルトの名無しさん:02/05/25 18:46
>>595
自分の発見した方法の問題点について考察することなしに、
天才を気取る奴は低レベルな奴だと思う。
それと、ほとんどが批判でなく指摘。

601 :デフォルトの名無しさん:02/05/25 18:46
「批判する奴は低レベル」と中傷をぶちかます奴はなんと定義されますか?
また、クラスとして使えますか?

602 :デフォルトの名無しさん:02/05/25 18:48
ふーん。


603 :デフォルトの名無しさん:02/05/25 18:48
中傷と抽象がかかってる?

604 :デフォルトの名無しさん:02/05/25 18:48
漏前らなんかみんなファックユーじゃ

605 :デフォルトの名無しさん:02/05/25 18:48
>>596,597
 お前ら、558への解答は、できないわけありませんよね?

606 :デフォルトの名無しさん:02/05/25 18:49
>>558
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  うざいぞ!!氏ね!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \

607 :デフォルトの名無しさん:02/05/25 18:49
もしかして俺って天才くんの話でないのか

608 :デフォルトの名無しさん:02/05/25 18:51
---------------------------終了---------------------------------

609 :デフォルトの名無しさん:02/05/25 18:52
(´ー`)y-~~~ほざけ

610 :デフォルトの名無しさん:02/05/25 18:53
 (_  ̄ ( 0 0 ) ̄_) y-~~~ ほざけ

611 :デフォルトのクライアントさん:02/05/25 18:57
僕は営業だけど、いつも優秀な外注のソフト屋さんに接してるけど、ここの雰囲気、意外だなあ。
いくら稚拙な解答でも、ケチだけつけて、「当たり前だから」とか「分かってたから」書かなかったとか後になって言っておしまい。って、なんだなあ。
きっと頭のいいひとたちなんだろう(僕が見たソフト屋さんはみんなそうでした)から、よいよい解を与える努力をすればいいのに。

612 :デフォルトの名無しさん:02/05/25 19:00
糞営業の分際でなにほざいてんだ(´ー`)y-~~~

613 :デフォルトの名無しさん:02/05/25 19:00
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < >>611うるせー馬鹿!
          /,  /   \_____________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
       /  /~\ \
       /  /   >  )
     / ノ    / /
    / /   .  / ./.    (゚д゚) <バカ
    / ./     ( ヽ、    ゚(  )−
   (  _)      \__つ   / >

614 :デフォルトの名無しさん:02/05/25 19:00
>>611
みんなその辺は心得ていて、

「論拠無き発言はネタ」

とフィルタリングしてる。
たまにウブなのかアフォなのかしらんが騒ぐ奴が居るが。

615 :デフォルトの名無しさん:02/05/25 19:02
>>614
お ま え は ば か だ !

616 :デフォルトの名無しさん:02/05/25 19:04
まあまあ、>>595 もなんか書いてみたかったんだよ。許してやってくれ。

617 :デフォルトのクライアントさん:02/05/25 19:10
>>614
 そうですか。世間知らずなソフト屋さんも若干名ここにはいらっしゃるということですね。残念だけど僕もフィルタリング(わら)の技術を磨こうと思います。
 じゃあROMに戻ります。失礼しました。

618 :始めて1週間・・:02/05/25 19:24
あの質問なんですが下のプログラムはなぜちゃんと動いてくれないのですか?
コンパイラのエラーとかですかね?やっぱり?・・・

#include < stdio.h >
void main()
{
char s[256] = "hello,world";

fprintf(stdin,"%s\n",s);
}

619 :始めて1週間・・ :02/05/25 19:26
こうでした(^^;
X コンパイラのエラーとかですかね?
○ コンパイラのバグとかですかね?


620 :デフォルトの名無しさん:02/05/25 19:27
stdinじゃなくてstdoutではないだろうか。

621 :デフォルトの名無しさん:02/05/25 19:27
>>618
fprintf(stdout,"%s\n",s);

622 :デフォルトの名無しさん:02/05/25 19:27
>コンパイラのエラーとかですかね?やっぱり?・・・

コンパイルもせずに動いてくれないと言っている

ネタ

面白くない

放置

623 :デフォルトの名無しさん:02/05/25 19:28
#include <stdio.h> が正しい。

<と>の横にスペースを入れるとコンパイルエラーになる
処理系があるから、スペースを入れないよう習慣づけるべき。

624 :始めて1週間・・ :02/05/25 19:29
stdoutってなんですか?
初めて聞きます・・・・(汗

625 :デフォルトの名無しさん:02/05/25 19:31
stdoutの代わりに間違ってstdin突っ込んで、コンパイラのバグかよ、おめでてーな

626 :デフォルトの名無しさん:02/05/25 19:33
放置って書いて放置されてなかったら恥ずかしいよね

627 :デフォルトの名無しさん:02/05/25 19:36
>>624
じゃあ stdin は知ってんのかよ・・・?それの同類だ。調べれ。

628 :デフォルトの名無しさん:02/05/25 19:38
#define stdin stdout
ちょとエラー出るけど、我慢しる

629 :デフォルトの名無しさん:02/05/25 19:39
>>571
> そしてそれを一般に「参照渡し」と呼ぶような気がします。
イワネーよバカ。
Cに参照渡しがあったらC++いらねー(ってのは嘘だが


630 :デフォルトの名無しさん:02/05/25 19:40
>>628
いや、ダメプログラマ・・・。

631 :始めて1週間・・ :02/05/25 19:41
親切にどうもです(;;)
授業中寝ててstdinもなんなのかよくわからないままやったのが
悪かったのでしょうか・・・
ちょっと本を読んでみます(;;)

632 :デフォルトの名無しさん:02/05/25 19:42
>>629
禿同

633 :デフォルトの名無しさん:02/05/25 19:45
>631
質問するまえにこれからは、予め本やネット等で調べてからにしようね

634 :デフォルトの名無しさん:02/05/25 19:45
今頃・・・ニヤニヤ

635 :デフォルトの名無しさん:02/05/25 19:46
禿同?ニヤニヤ

636 :nero:02/05/25 19:46
ioctl を使って cd-rom から データを取りたいのですが、
トラック越えのデータ取得はデキマスカ?
マルチセッションの cd から検索したいのです。


637 :デフォルトの名無しさん:02/05/25 19:51
ioctlなんてものを知ってるなら、
cdda2wavあたりのソースを見るのが早いんでないか?

638 : :02/05/25 19:54


639 :デフォルトの名無しさん:02/05/25 20:14
くだらないやりとりだな。

640 :教えてほしいです!:02/05/25 20:15
HTMLのことなんですけど、
ページを開くと他にも次々にページがでるようにしたいんですけど
どうやるかわかる人いますか?
いたらおしえてほしいです!お願いします!!!

641 :デフォルトの名無しさん:02/05/25 20:17
ブラクラ?

642 :デフォルトの名無しさん:02/05/25 20:17
>>640
場違い。氏ね!


643 :デフォルトの名無しさん:02/05/25 20:18
復活させようという気はないのかね?


644 :デフォルトの名無しさん:02/05/25 20:18
>>640
屑は氏ね

645 :デフォルトの名無しさん:02/05/25 20:19
>>640
テーマに沿った板ならオールマルチポストは有効だ。
間違って答えるアフォが居るから。
でも、板違いでそれやったところで痛いだけ。

次はWebProgに行ってバカにされるんだろうな・・・。

646 :デフォルトの名無しさん:02/05/25 20:20

                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   もうだめぽ…

647 :デフォルトの名無しさん:02/05/25 20:21
     \         ∧∧    ミ _ ドスッ    .     /
      ..\        (   ,,)┌―─┴┴─――┐ .  .  /
   ∧∧  \      /   つ.もうだめぽ   .  .│   /  
   /⌒ヽ)   \  〜′ /´.└―─┬┬─――┘. /
  i三 ∪     \ ∪ ∪      .││ _ε3 ./  λ...... λ...... λ......
 ○三 |       \         ゛゛'゛'゛    ./
  (/~∪         \    ∧∧∧∧∧. / λ...... λ..... λ......
  三三  もう       \ . <          >
  三    だめぽ     \<     .だ .>    もう
三三   三          . < 予   .め .>     だめぽ
――――――――――――< 感  .す  >――――――――――――
                  < !!!!   れ >
                  <.     の >
                    ∨∨∨∨∨

                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   もうだめぽ…


648 :デフォルトの名無しさん:02/05/25 20:21
>>640
こんなゴミ野郎と同じ日本人かと思うとものすごく不愉快なんですが。
背中の辺りがぞわぞわします、マジで氏んで欲しい。

649 :デフォルトの名無しさん:02/05/25 20:22
------------------------終了-------------------------------------

650 :教えてほしいです!:02/05/25 20:55
>>642
お前が氏ね!FUCK OFF!
わからないからいえないんだろ!
ドアホ!

651 :デフォルトの名無しさん:02/05/25 21:02
memcpy()とstrcpy()の違いが分かりません。
void*かchar*の違いだけだと思うのですが、、、
ご教授お願いします。

652 :デフォルトの名無しさん:02/05/25 21:03
>>651
memcpy() は、'\0' があってもコピーする。(だから、バイト数が必要)

653 :デフォルトの名無しさん:02/05/25 21:05
>>652
あ、、、なるほど。ども、ありがとです

654 :デフォルトの名無しさん:02/05/25 21:05
>>651
str*は'\0'より後ろは処理(strcpyならコピー)しない

655 :デフォルトの名無しさん:02/05/25 21:10
>>654
どもども、thanxです

勉強のためにmemcpy()を自作したいのですが、(第1,2)引数は何の型にキャストすればよろしいでしょうか?
やはり、const char*でしょうか?

656 :デフォルトの名無しさん:02/05/25 21:11
バイト単位だから、char*型かな?

657 :デフォルトの名無しさん:02/05/25 21:13
>656
なるほど。。。どもどもthanx、勉強逝ってきます

658 :デフォルトの名無しさん:02/05/25 21:17
>>655
第1引数は、const char * じゃまずいだろ。書き込むんだから...。

659 :デフォルトの名無しさん:02/05/25 21:18
>658
あ、すいません。ですよね、途中で気付きました(汗

660 :デフォルトの名無しさん:02/05/25 21:19
>>655
第一引数(destination)はchar *
第二引数(source)はconst char *じゃないすか。

661 :デフォルトの名無しさん:02/05/25 21:19
任意のバイト数の型をつくることは不可能ですよね・・・?
配列や構造体ではなくて。

662 :デフォルトの名無しさん:02/05/25 21:21
>>660
どもどもthanx。やっとdestの意味が分かりました^^;;

663 :デフォルトの名無しさん:02/05/25 21:21
>>662
運命とか思っていたか?

664 :デフォルトの名無しさん:02/05/25 21:23
>>663
いえいえ、自爆かと

665 :memcpy厨:02/05/25 21:29
malloc()って自作できるものなんですか?

666 :デフォルトの名無しさん:02/05/25 21:31
>>665
コンパイラだって、OSだって自作は可能

667 :デフォルトの名無しさん:02/05/25 21:32
>>665
プログラミング言語Cに作り方のひとつが載っていた。

668 :665:02/05/25 21:35
>>666
そうだった。。。凄いなC

>>667
マヂっすか。気になりますね。。今度探しときます。情報thanx

669 :デフォルトの名無しさん:02/05/25 21:55
>>668
おいおい、>>666 は、「C だけで」と言ってるわけじゃねーぞ。
コンパイラは、いいとして OS を C だけで作るのはちょっと無理かと...。

670 :デフォルトの名無しさん:02/05/25 21:58
K&Rにmallocの作り方載ってるだろ。
OS依存にしたくないなら巨大な配列取っとけばよろしい。
お勉強ならそれで十分。

671 :デフォルトの名無しさん:02/05/25 22:05
>>669
そうなんすか、、、脳内修正しときます
>>670
K&R持ってない罠。本屋に頼んどきます
関係ないけど、林晴比古さんはダメらしいですね。何故でしょうか?
自分、あれから入ったのですが、、、

672 :デフォルトの名無しさん:02/05/25 22:12
お勉強のためのOSモドキ(デバイスは仮想)なら書けるね。
実際そうやってCだけで書かれたOSもあったと思う。
nachosだっけ。CPUから全部エミュレートしてるやつ。

でかいファイルを仮想のディスクにしてファイルシステム
とか書いてみるときっと勉強になると思う。

673 :デフォルトの名無しさん:02/05/25 22:15
fgetsの説明を見るとファイル終了でNULLを返すとありましたが、
NULが返ってきた後にまたfgetsを読んでも
すべてNULLが返ってくるとしていいんですか?


674 :デフォルトの名無しさん:02/05/25 22:16
>>671
K&Rはやめとけもっといい本はいくらでもある

675 :デフォルトの名無しさん:02/05/25 22:17
>>671
大きい本屋に行くと Lion's Commentary Unix という本が売ってるはず。
Unix 第 6 版のカーネルのソースコードを整形してコメントをつけたもの。
たった 1 万行程度の アセンブラ(数百行くらい) + C で OS が成り立っている。
内容を理解するのは難しいと思うので
目次を立ち読みしてリッチーカコイイとか思ってくれ。

676 :673:02/05/25 22:17
fgetsを読んでも->fgetsを呼んでも

677 :デフォルトの名無しさん:02/05/25 22:22
>>673
はっきり書いてあるのは見たこと無いけど常識的に
考えてそうだと思う。一度fgetsがNULLを返して、
その後ファイルの最後に書き込んでファイルが大きく
なったらどうかわからんが。

678 :デフォルトの名無しさん:02/05/25 22:22
>>672
ファイルシステムっすか。。
一時期ファルダを指定して、そこから最下層までアーカイブ、管理みたいなのは考えたことはあるんですけどねぇ
それすら作ってないですから、、
>>674
忠告thanx。どうもです^^;; でも、一応見て判断してみます
>>675
難しそうですが見てみたいので、探してみます。情報ども。

679 :673:02/05/25 22:24
>>677
一応自分で試してみると
すべてNULLが帰ってきました。(読み込んでいるファイルはいじってないです)
が、たまたまなのかな?と思いまして。

680 :デフォルトの名無しさん:02/05/25 23:01
>>679
fseekとかrewindしてファイルポインタを動かせばEOFは解除されるからNULLじゃなくなるよ。
そーでなけりゃ、ずっとEOF状態のままだから(大体それ以上読み込むデータ無いんだし)NULLを返します。

681 :デフォルトの名無しさん:02/05/25 23:12
C言語でpingコマンドを使いたいのですが、どうすれば良いですか?

682 :デフォルトの名無しさん:02/05/25 23:13
>>681
system 関数で呼び出すとか。

683 :デフォルトの名無しさん:02/05/25 23:14
>>681
ICMPを泣きながらながら実装。

684 :デフォルトの名無しさん:02/05/25 23:48
>>683
おもしろい わらった

685 :デフォルトの名無しさん:02/05/25 23:51
>>675
>たった 1 万行程度の アセンブラ(数百行くらい) + C
本当は何行なんだ?

686 :デフォルトの名無しさん:02/05/26 00:07
>>685
オリジナルが何行だったかは知らないけど、
本のはコメントついて 9800 行ちょい。
もっと短かったんじゃないかな。

687 :681:02/05/26 00:18
>>682-683
まだまだ勉強不足であることがわかっただけでも儲けものです。
ありがとうございました。

688 :デフォルトの名無しさん:02/05/26 00:26
>>681
Win用なら
http://mio.servequake.com/~takky/programs/
の「プログラムパーツの部屋」の「マイクロソフトWinsock用ICMP資料」
が役に立つかも(HPの管理者がwinsock.comのをまとめたもの)。
ていうか、pingとtracerouteのソースそのもの。

689 :デフォルトの名無しさん:02/05/26 02:26
あるファイルの中に構造体
typedef strcut{
int foo;
} HOGE;
というのがあるとき、このファイルの外から
このHOGEは見えるのですか?

690 :デフォルトの名無しさん:02/05/26 02:29
見えないけど、同じ(互換な)定義を書けば使うことはできる。


691 :689:02/05/26 02:39
>>690
じゃあ、あるファイルだけで使いたい構造体があるときは
そのファイルで普通に定義すればいいんですか?

692 :デフォルトの名無しさん:02/05/26 02:40
>>691
そーです。

693 :689:02/05/26 02:41
>>692
わかりました。ありがとうございます。


694 :デフォルトの名無しさん:02/05/26 03:41
#include<stdio.h>
#include<stdlib.h>
int main(){
int i;

char a[10];
for(i=0;i<10;i++)
a[i]=' ';

scanf("%s",a);

for(i=0;i<=10;i++){
if (a[i]==' '){
printf("atari");

}
printf("%c\n",a[i]);
printf("%c\n",a[3]);

}
return(0);
}
このプログラムで数字を入力している途中スペースキーをおして、
再び数字を入力した場合、打ち込んだ数字をどうやって全部だすかおしえてください

695 :デフォルトの名無しさん:02/05/26 03:50
>>694
質問の意味がよくわかりませーん。

696 :デフォルトの名無しさん:02/05/26 04:20
>>694
スペースを押してしまったらバックスペースでやり直せばいいです

697 :デフォルトの名無しさん:02/05/26 04:42
>>694
for (i=0; i<10; i++) {
  if (a[i] != ' ')
    printf("%c\n", a[i]);
}

C言語勉強して、間のない初心者なのですが・・・
こんなのでしょうか???


698 :デフォルトの名無しさん:02/05/26 05:17
>>672
ファイルシステム面白そうです。

仮想デバイスは1ブロック512バイト固定で、
size_t get_size(); //ブロック数を返す
int read_block(int blocknum, char *buf); //1ブロック読む。
int write_block(int blocknum, char *buf); //1ブロック書く。
が使えて、それを使って
open, close, read, write, mkdir, unlink, rename,
rmdir, stat, lseekくらいができれば良いですかねえ?

699 :デフォルトの名無しさん:02/05/26 05:47
#1〜#256って文字列を作るのに以下のようにすると変になります。
なんで?

char hoge2[3];
char sharp[2];
strcpy( sharp, "#");
for(int i=1;i<256;i++) {
_itoa( i, hoge2, 10);
strcat(sharp,hoge2);
printf("%s ",sharp);
}

700 :デフォルトの名無しさん:02/05/26 05:50
これじゃない?
> char sharp[2];


701 :デフォルトの名無しさん:02/05/26 05:54
初めから
printf("#%d ", i);
ってやっちゃえば

702 :699:02/05/26 05:56
char buff[200];
・・・
sprintf(buff,"#%s",hoge2);

てな感じでいけました。徹夜明けなのでぼけーっとしてます。
ありがとう>>700,701

703 :デフォルトの名無しさん:02/05/26 05:58
みんな朝早いね。それとも。。。

704 :デフォルトの名無しさん:02/05/26 05:58
>>702
まだぼけーっとしてるみたいだが、701の言うようにprintf使えばいいじゃん。

705 :デフォルトの名無しさん:02/05/26 05:59
>>703
二日寝て二日起きるんだよ、今日は起きる日

706 :デフォルトの名無しさん:02/05/26 06:00
>>705
長寿のおばあちゃんみたいな生活

707 :デフォルトの名無しさん:02/05/26 06:00
>>705
負けますた、ワラタ

708 :デフォルトの名無しさん:02/05/26 07:44
二年近く夏休みが続いていますが何か?

709 :デフォルトの名無しさん:02/05/26 07:51
>697


できました。ありがとうございます。
初心者ではじめてまだ2週間で、困ってたんです。


710 :デフォルトの名無しさん:02/05/26 09:13
>>698
本来は、OS スレに行くべきだろうが、まあ続かんだろうから...

> size_t get_size(); //ブロック数を返す
> int read_block(int blocknum, char *buf); //1ブロック読む。
> int write_block(int blocknum, char *buf); //1ブロック書く。

何故 get_size() の戻り値は size_t で、read_block(), write_block() の
blocknum は int なのかと...。ついでに、今時なら普通...
int write_block(size_t blocknum, const void *buf);
だと思うぞ。

> open, close, read, write, mkdir, unlink, rename,
> rmdir, stat, lseekくらいができれば良いですかねえ?
mkdir, rmdir をサポートすると言うことは、階層ディレクトリサポートすると
言うことだよね。だったら、chdir/getwd とかもいると思うし、link が無い
なら、unlink なんてわけわかの名前じゃなくて素直に remove (もしくは
delete (C なら良いが、C++ だとバッティングするか...) とか Erase) の方が
良いと思うぞ。あと、ディレクトリの検索関係は、どうするんだ ? ディレクトリ
を直接オープンして、ライブラリで処理と言うことで良いか ?

711 :デフォルトの名無しさん:02/05/26 09:19
unlinkを「わけわか」と言っているところで あれ? と思ってしまったが・・・

712 :710:02/05/26 09:34
あと、ファイルシステムの初期化 (newfs とか) と、オープンできない
ファイルの状態を調べる必要があるなら fstat とかも必要かも...。

713 :デフォルトの名無しさん:02/05/26 11:30
C言語で、

int a,b,c;
a=0;
b=0;
b=b++;
c=a++:

ってやったばあい、a,b,c の値はどうなるのでしょうか

714 :デフォルトの名無しさん:02/05/26 11:33
>>713
b=b++;
の一行の動作は未定義です。

715 :デフォルトの名無しさん:02/05/26 11:35
>714
ばかじゃねーの?

716 :デフォルトの名無しさん:02/05/26 11:38
>>714
未定義にも限度があるよな。良く検討した?
これで b=0とかb=100になることはありえねーだろ。 ちったー脳つかえ

717 :Not 714:02/05/26 11:41
>>716
限度があっても未定義は未定義だろ。

718 :デフォルトの名無しさん:02/05/26 11:41
>>715
ばかじゃないよ。
K&R第2版P66嫁。 

719 :ここミレ:02/05/26 11:46
http://home.jp.FreeBSD.org/cgi-bin/showmail/FreeBSD-users-jp/68636

720 :デフォルトの名無しさん:02/05/26 11:47
>>716
未定義という言葉がまずかったのなら、こう言いましょうか。
b=b++; の結果のbは、0か1になりますが、それは処理系依存です。

721 :デフォルトの名無しさん:02/05/26 11:48
で、「未定義」の意味はC FAQを参照、っと
ttp://www.catnet.ne.jp/kouno/c_faq/c11.html#33

722 :デフォルトの名無しさん:02/05/26 11:48
http://www.catnet.ne.jp/kouno/c_faq/c11.html#33

723 :デフォルトの名無しさん:02/05/26 11:50
つーことは「不定」になるのか。この場合。

724 :デフォルトの名無しさん:02/05/26 11:51
>>716
そうとは限りませんよ。どんなことが起こっても不思議ではありません。
ttp://www.catnet.ne.jp/kouno/c_faq/c3.html#3


725 :デフォルトの名無しさん:02/05/26 11:53
>>720君も>>724を読んでね。

726 :デフォルトの名無しさん:02/05/26 11:56
b=b++;なんて阿呆なことはやめようよ。ヽ(´ー`)ノ
喧嘩もやめようよ。ヽ(´ー`)ノ

727 :デフォルトの名無しさん:02/05/26 11:57
プログラマとして不適正な人が多いね・・・
じゃあ実際にコンパイラを作ったとしてだ
b=b++;
を、キミ達ならどうアセンブラに落とすのよ?
不定だからっつって、これをアセンブルして
くれないコンパイラは今の世には無いぜ。

一般的なコンパイラを4つほど試したが
b=0;
b=b++;
は全て b=1 となった。ま、当然だな。
順当に考えれば b=b ; b++; という順に評価するってこと。
誰が作ったってこーなるよ。

728 :デフォルトの名無しさん:02/05/26 11:59
>>727
ソースで配布するときに相手にコンパイラを指定するのは馬鹿だろう。
一般的なコンパイラとは何か4つ示してほしいが…

729 :デフォルトの名無しさん:02/05/26 12:00
>>727
存在するコンパイラがどうなっているかなんて問題じゃないんだよ。
規格がどうなっているのかが問題なんだよ。
ここは特定のコンパイラ専用のスレッドじゃない。

730 :デフォルトの名無しさん:02/05/26 12:00
>>728 >>729
おいおい放置しろよ


731 :デフォルトの名無しさん:02/05/26 12:02
オレが君達に言いたいのは、不定だからといって思考を止めるな、ということ。

現実に書けるコードなんだから(書くことの是非は置いといて)
書かれてしまったものについて きちんと動作を検証してみろってことだ。
自分が書いたコードでなくとも、例えば不出来な部下がこういうコードを書き
それが元でトランザクションを破壊された狂ってしまったデータを復旧する
などの事態に陥ったときに これらの事象を理解しうる知恵と知識を持て。

732 :デフォルトの名無しさん:02/05/26 12:04
>729
規格を疑え。
だいたいそれなら、コンパイルエラーにするなりなんなりといった
予防処置がコンパイラに取られてしかるべきじゃあないのかね?

733 :デフォルトの名無しさん:02/05/26 12:06
>>731
俺だったらその部分だけ書き直すが・・・

734 :デフォルトの名無しさん:02/05/26 12:09
>>731
誰も思考は止めていない。
ただ、コンパイラがこうだから…を重視するプログラマーか
仕様を重視するプログラマーかの違い。

はっきりいって、前者の方が駄目だけど、現実多いんだろうなって感じたり

735 :デフォルトの名無しさん:02/05/26 12:10
だから放置を覚えろよ親切君


736 :デフォルトの名無しさん:02/05/26 12:14
x^2-3x+1=0のプログラムを教えてください

737 :デフォルトの名無しさん:02/05/26 12:14
>>736
宿題は自分でやれ

738 :デフォルトの名無しさん:02/05/26 12:15
main(){ printf("x^2-3x+1=0\n");}

739 :727:02/05/26 12:15
>>735
いや、馬鹿な奴にはしっかり教えとかないといけないだろ?
誰が作ったってこーなるよ。

740 :デフォルトの名無しさん:02/05/26 12:15
>>735
だから放置を覚えろよ自治厨君

741 :デフォルトの名無しさん:02/05/26 12:16
(゚∀゚)盛り上がってまいりました!

742 :デフォルトの名無しさん:02/05/26 12:17
放置って739のことかと思った。

743 :デフォルトの名無しさん:02/05/26 12:20
>>742
一名以外はそう思ってるよ。

744 :デフォルトの名無しさん:02/05/26 12:21
>>731
> これらの事象を理解しうる知恵と知識を持て。
そう言う知識をもってたら、やることは...
> きちんと動作を検証してみろってことだ。
では無いだろ。普通 >>733 みたいにするよ。検証したって、コンパイラ変われば
(もっと言うと、ソース変わっただけで) 結果が変わるかもしれないから、無駄だ
よ。

>>732
> 予防処置がコンパイラに取られてしかるべきじゃあないのかね?
まあ、お前らみたいな厨房が増えてきたから、警告ぐらい出してもいいかもね。
でも、コンパイラだけでもどうしようもないケースがあることは覚えておいた
方が良いぞ。

745 :デフォルトの名無しさん:02/05/26 12:23
>>732
ししょー、規格を疑ったら
わたしはなにを頼りに生きていきばいいんでしょうか……。

746 :デフォルトの名無しさん:02/05/26 12:27
>744
失格

>745
自分を信じろ

747 :デフォルトの名無しさん:02/05/26 12:28
 ∧_∧   ∧_∧   ∧_∧   ∧_∧      ∧_∧
 ( ・∀・)   ( `ー´)  ( ´∀`)  ( ゚ ∀゚ )    ( ^∀^)
 (    つ┳∪━━∪━∪━━∪━∪━∪━┳⊂     つ
 | | |  ┃ 僕達を信じてプログラム    ┃ | | |
 (__)_) ┻━━━━━━━━━━━━━━┻ (__)_)

748 :デフォルトの名無しさん:02/05/26 12:30
>>742
>>739の言うこともあらかた納得はできるけどね。

749 :デフォルトの名無しさん:02/05/26 12:30
>規格を疑え。

いや、規格がすべて正しいのです。
規格がそうだと言えば、現実に存在するコンパイラの方が間違いなのです。

750 :デフォルトの名無しさん:02/05/26 12:31
最新100レスの中にFreeBSDユーザーはいらっしゃいますか?

751 :デフォルトの名無しさん:02/05/26 12:32
>>750
満載だと思われ(w

752 :馬鹿だから教えてください:02/05/26 12:32
x^2-3x+1=0を解くプログラムを教えてください

753 :デフォルトの名無しさん:02/05/26 12:32
>>744
コンパイラだけでどうしようもないケース ってのも良く考えれば酷い話だよな。
if文のカッコの中の代入にWarningを出すよりも前にやることいっぱいあるよな。
つーかif文の中で変数に代入して何が悪いんだよコンチクショー

754 :デフォルトの名無しさん:02/05/26 12:33
赤い帽子の糞犬ならいますが…

755 :デフォルトの名無しさん:02/05/26 12:34
>>736
意味わかんねーぞ
xと2の排他的論理和はともかく
3xなんてサフィックスはないし
左辺値を示さない式に代入はおかしいし
セミコロンも抜けてんじゃねーかよ

聞きたいことをちゃんと表現してみろよ
これじゃいかにも筋悪そうだぜ、お前

756 :デフォルトの名無しさん:02/05/26 12:35
最新100レスの中に相対論否定論者はいらっしゃいますか?

757 :デフォルトの名無しさん:02/05/26 12:36
最新100レスの中に裁判好きはいらっしゃいますか?

758 :デフォルトの名無しさん:02/05/26 12:36
二次方程式って必ず解けるんだっけ? 虚数って出てきたっけ?
一般解の方程式もう忘れちゃったよ・・・緑チャートどこしまったかなぁ

759 :馬鹿だから教えてください:02/05/26 12:37
3 x=x^2+1
x=1/3(x^2+1)
x0=1.00

すいません。聞きたいこともやっぱ理解してないかもしれません。


760 :デフォルトの名無しさん:02/05/26 12:37
Cも捨てたもんじゃないね

761 :デフォルトの名無しさん:02/05/26 12:38
b = b++;
は「未定義な動作」ですから、何が起きても規格では許されます。

コンパイラが警告を発しても発しなくても
コンパイルが正常に終了してもしなくても
リンカが正常に終了してもしなくても
できあがったファイルが何らかの動作をしてもしなくても
規格通りです。

762 :デフォルトの名無しさん:02/05/26 12:38
>>753
>つーかif文の中で変数に代入して何が悪いんだよコンチクショー

そーだねぇ。熟練者は = と == ってあんまし間違わないからねぇ。
それに初心者は警告を見ないという罠。

763 :デフォルトの名無しさん:02/05/26 12:39
      ヽ ̄ ゙̄\    _____________________________
       \  ヽ \ /
         ヽ    ゙! < n = n++; でないとノーベル賞を取るのは難しい
          /      | \_____________________________
       /     ,.イ
      ∠___/ :|`ヽ.、
          ノ     '!   \-、
     _,.=''1      ヽ,   `'
      ヽ'" i|       |
         !       |


764 :馬鹿だから教えてください:02/05/26 12:39
相対論否定論者?

765 :デフォルトの名無しさん:02/05/26 12:40
>>759
・2次方程式の解き方
・Cの文法
別々に聞いたほうがよさそう

766 :デフォルトの名無しさん:02/05/26 12:40
>>761
そーなの?
未定義のコードって、それを実行すれば結果は未定義だけど、
その部分が if とかで飛ばされたりして実行されない限り、何も起きないものだと思ってた。

767 :デフォルトの名無しさん:02/05/26 12:40
>761
そんなコンパイラ誰も都川ねーよ

768 :デフォルトの名無しさん:02/05/26 12:41
>>762ワラタ

769 :我ら先生の理論を読め!:02/05/26 12:41
http://www.interq.or.jp/writer/knk/kyo/may25.html

770 :デフォルトの名無しさん:02/05/26 12:42
>>766
正確には「未定義の動作」だからね。
動作させなければ関係ないはずだよね。

771 :デフォルトの名無しさん:02/05/26 12:42
>>720-721
規格で言うところの「未定義」と「処理系依存(処理系定義)」は違う。

後者は処理系が定義してドキュメントしなければならない。定義通り動作しなければ
ならないから、ユーザはその処理系を使う限りにおいてその仕様に依存することが
できる。

前者はその必要がなく、contextやrace condition、最適化オプションなどによって
挙動が変わることも許されるし、極端なことを言えば一部の処理系やアーキテクチャで
コアを吐いたりCPUを停止したりする結果になるとしても規格上は関知しない。

772 :デフォルトの名無しさん:02/05/26 12:43
>>771
ドキュメント化の必要がない、
というと「未規定」もあるよね。


773 :デフォルトの名無しさん:02/05/26 12:43
> 一般的なコンパイラを4つほど試したが
> b=0;
> b=b++;
> は全て b=1 となった。ま、当然だな。
> 順当に考えれば b=b ; b++; という順に評価するってこと。
> 誰が作ったってこーなるよ。

b=0
b=b+++b+++b+++b;
はいくつっすか?
1になるやつとか3になるやつとかありますけど。

774 :デフォルトの名無しさん:02/05/26 12:45
>>773
未規定の動作を含んでいて
bに格納される結果は未定義です

775 :デフォルトの名無しさん:02/05/26 12:47
√2って存在しないのを証明しました。

776 :デフォルトの名無しさん:02/05/26 12:47
nxt は未定義です。

777 :デフォルトの名無しさん:02/05/26 12:47
>>710

> mkdir, rmdir をサポートすると言うことは、階層ディレクトリサポートすると
> 言うことだよね。だったら、chdir/getwd とかもいると思うし、link が無い
> なら、unlink なんてわけわかの名前じゃなくて素直に remove (もしくは

linkは忘れてました。
あとcreatも。
でもchdir/getwdは要らないと思います。(それはプロセスが持つものです。)

778 :デフォルトの名無しさん:02/05/26 12:49
>773
そりゃそうだろ。
それは b=b++; の問題とは全く異質の問題で
基本構文解析の順番がコンパイラごとにどう規定されてるか違うんだから
動作が異なるのは十分ありえる話だ。

779 :デフォルトの名無しさん:02/05/26 12:49
小泉純一郎が俺を嵌めようとしてCの規格を変えようとしている。
任天堂を訴えてやる

780 :デフォルトの名無しさん:02/05/26 12:49
>>773
「未定義の動作」だからコアダンプしても不思議はない。

「誰がやってもこうなる」とか言ってる香具師はただの煽りか
鞭だから虫せい。

781 :デフォルトの名無しさん:02/05/26 12:50
手元のperlでは

$ perl -e '$i = 0; $i = $i++; print "$i\n"'
0

となったりする。処理系の書き方なんていくらもある。

規格が定義していないことを利用してアグレッシブな最適化をすることも
できるし、そうしたときに i = i++; がレジスタやスタックを破壊して、
i == -11041 などとなるかもしれないという想像力は必要だろう。


なんてことをわざわざ書く漏れは言わせた厨房もろとも逝ってよし。

782 :デフォルトの名無しさん:02/05/26 12:50
任天堂を訴えてやる 子どもを巻き込んでな

783 :デフォルトの名無しさん:02/05/26 12:50
>>778
うわバカがきた!

784 :デフォルトの名無しさん:02/05/26 12:51
>>778
いや、この場合の構文解析はコンパイラごとに違わないはずだぞ

b=((b++)+(b++)+(b++)+b);
これ以外の解釈をするコンパイラはバグだぜ

785 :デフォルトの名無しさん:02/05/26 12:51
構文解析の順番(フ゜

786 :デフォルトの名無しさん:02/05/26 12:51
お帰り馬鹿>>778

787 :デフォルトの名無しさん:02/05/26 12:52
>>784
構文解析器の規格を疑え。

788 :デフォルトの名無しさん:02/05/26 12:52
仕様も結構だがもっと実装を研究しろよ。

それよりも、規定されてない 言語仕様のほうに疑問を感じるけどな。
未定義 とか自慢げに言ってないでさっさと規定しろ ってオレは言いたい。

789 :デフォルトの名無しさん:02/05/26 12:53
>>788
剥げどう

790 :デフォルトの名無しさん:02/05/26 12:54
>>778
構文解析と出力コードとどう関係あるんだよ。

>>783
同意だが念のため言っておくと
括弧で実行順序を完全に規定できるわけじゃないよ。

791 :デフォルトの名無しさん:02/05/26 12:54
>>788
だったら、参画しろよ。
こんなところでうだうだ言ってないでさ

792 :デフォルトの名無しさん:02/05/26 12:55
規定しちゃったら最適化を制限するだろーが。
アーキテクチャによってどの結果が一番速いか違うときはどうする?
例えば、post incrementモードはあるがpre incrementモードがない
PDP-11, VAX-11, 68kファミリとか。

793 :デフォルトの名無しさん:02/05/26 12:56
>>788
未定義や未規定を残してあるのは
粋な計らいって場合もあるぞ
例えば
a=b++ + c++;
のaとbとcへの副作用の順が決まってないのは
機械語のオートインクリメントに直訳させるためとかな


794 :デフォルトの名無しさん:02/05/26 12:56
>>788
全部規定しやったらコードが遅くなったり大きくなったりするが...
スーパースカラーだとどうするんだよ。

795 :デフォルトの名無しさん:02/05/26 12:57
体で覚えれ

796 :歌丸:02/05/26 12:57
おまえらそろそろヴァカのデバッグはあきらめませんか。
カッコつかないし、何言い出すか未定義です。

797 :783:02/05/26 12:58
>>790
そりゃそうだ*p++とかな

798 :デフォルトの名無しさん:02/05/26 12:58
>>788
「実装を研究しろよ」と偉そうにのたまうのは勝手だがお前こそ実装を研究しろよ。


799 :デフォルトの名無しさん:02/05/26 12:58
>>798
激しく同意

800 :デフォルトの名無しさん:02/05/26 12:59
今、>>798が真理を突きました(・∀・)!



801 :783もとい784:02/05/26 12:59
わりいレス番間違えた


802 :デフォルトの名無しさん:02/05/26 13:00
>>797
いや、そうじゃなくて
例えば2項演算子のどのオペランドを先に評価するかは、
,と?:と&&と||以外は未規定。

803 :デフォルトの名無しさん:02/05/26 13:01
b=b++なんて馬鹿な書き方をしなければ済む問題だろ。

804 :デフォルトの名無しさん:02/05/26 13:01
>>797

いや、そうじゃなくて
例えば2項演算子のどのオペランドを先に評価するかは、
,と?:と&&と||以外は未規定。

805 :784:02/05/26 13:02
あ、そっちか
b=c()+d();
でcとdの実行順序が未規定ってことか

806 :783=802=804:02/05/26 13:03
う、二重カキコしちゃった。スマソ

807 :デフォルトの名無しさん:02/05/26 13:04
UNIX板のおにいさん(おじさん)達こわーい(w

808 :784:02/05/26 13:04
>>806どした?

809 :デフォルトの名無しさん:02/05/26 13:04
>>807
誤爆か?

810 :デフォルトの名無しさん:02/05/26 13:06
>>809
http://pc.2ch.net/test/read.cgi/unix/1022165761/


811 :784:02/05/26 13:07
>>803ま、それにつきるわな

812 :デフォルトの名無しさん:02/05/26 13:07
>>810
・・・・・・・。ネタ臭いと思ったら・・・・・

>>713
死ね!

813 :デフォルトの名無しさん:02/05/26 13:08
今、板間を越えた交流が始まる。

814 :デフォルトの名無しさん:02/05/26 13:10
sequence pointっていう言い方がもろにsuperscalerを意識した
言い方だよね。もし順序を全部規定して演算子ごとにsequence
pointを作るとしたら、非常に逐次的なコードになるだろう。
最近のCPUだとせっかく4つとか6つとか演算器があるのに1度に
1つずつしか使えなくなる。しかも、逐次的にするにはわざわざ
そのための命令を演算命令の間にたくさん挟まなければいけない。

プログラムによるが、たいていのプログラムで性能は確実に半
分以下、下手したら2〜3割に落ちると思う。

815 :784:02/05/26 13:11
>>812
そりゃねーだろ
おめーだって幽霊じゃあんめえ

816 :デフォルトの名無しさん:02/05/26 13:12
未定義の動作について何度説明しても別にかまわないと思う。
実際に誤解してるアフォは多いんだから、その価値はあるよ。

817 :784:02/05/26 13:13
>>816禿同

818 :デフォルトの名無しさん:02/05/26 13:14
>>816
fflush(stdin)を堂々と正当な方法だと説明しているサイト多いね。

819 :y2kbest@k9.dion.ne.jp:02/05/26 13:17

「高性能ビデオスタビライザー」です↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

店頭販売価格は、13900 円なんですが、
今回だけ、破格の 7700 円に設定して
おります。

購入希望の方は、名前の所にも書いて
ある、y2kbest@k9.dion.ne.jp 迄、
メールを下さい。

不安な方は、落札をして頂いても
構いません。

820 :デフォルトの名無しさん:02/05/26 13:21
(゚∀゚)盛り下がった?

821 :デフォルトの名無しさん:02/05/26 13:25
もうちょっと盛り下げてくれると助かる。このスレ速すぎて追うのが大変。

822 :デフォルトの名無しさん:02/05/26 13:25
blueBacksのC言語の本、イィとおもう?

823 :デフォルトの名無しさん:02/05/26 13:25
なんかつまんなくなったな
教えて君たちが一斉に帰っちまったか

824 :デフォルトの名無しさん:02/05/26 13:28
関連スレ
http://pc.2ch.net/test/read.cgi/tech/1014640220/l50

825 :デフォルトの名無しさん:02/05/26 13:29
「規格を疑え」って言ってたやつはネタじゃなくてマジだったと思うな。
実は片岡だったんじゃないか?

826 :デフォルトの名無しさん:02/05/26 13:32
質問です。
main()
{
 char c;
 while((c = getchar()) != EOF))
  putchar(c ^ 0xFF);
}
というコードだと途中で入力の途中にEOFがあると止まってしまいますよね。
バイナリファイルを入力させたいときなどはどうすればよいのでしょうか?

827 :デフォルトの名無しさん:02/05/26 13:34
規格を疑うのも一理あるんじゃないか。
なんでコンパイラによって扱いが違うのか不思議に思う事がある。

828 :デフォルトの名無しさん:02/05/26 13:35
>>826
EOFはバイナリファイルの"中"に入ることはありえない

829 :デフォルトの名無しさん:02/05/26 13:36
× char c;
○ int c;

入力の途中にEOFは無い。

830 :デフォルトの名無しさん:02/05/26 13:36
>>826
int c; にしなさい。
んで、途中に EOF があることはない。
なぜなら getchar() の戻り値は int 型であり、0〜255 または EOF のどれかで、全部で257通りあるから(charが処理系依存つう話は突っ込まないで頂戴)。
EOF は一般的には -1 になってたりする。

831 :デフォルトの名無しさん:02/05/26 13:36
>>826
getcharの戻り値はintだバカ


832 :デフォルトの名無しさん:02/05/26 13:36
>826
EOFの定義をヘッダを漁って見てみるといいと思うよ

833 :784:02/05/26 13:37
>>827例えば?

834 :デフォルトの名無しさん:02/05/26 13:39
>>830
charは処理系依存しないよバカ
常に1byteなんだよ
……あ、signed/unsignedは依存するかも……

835 :デフォルトの名無しさん:02/05/26 13:41
>>834
charは1バイトだが、1バイトが8ビットっつう定義はない。

836 :デフォルトの名無しさん:02/05/26 13:41
>b=0
>b=b+++b+++b+++b;
>はいくつっすか?
>1になるやつとか3になるやつとかありますけど

例えばこんなとこ

837 :デフォルトの名無しさん:02/05/26 13:41
>834
おいおい・・・charが常に1バイトなんて、誰が決めたんだ?
お前らの好きな規格をもって ここに示してみろ。
このスカポンタンが!

838 :784:02/05/26 13:41
>>834
バイトマシンじゃない機種ではどうなってる?

839 :デフォルトの名無しさん:02/05/26 13:42
>>834
ヲイヲイ

840 :デフォルトの名無しさん:02/05/26 13:42
>>835
あ、そうかも。
すいません。勉強になりました。

841 :デフォルトの名無しさん:02/05/26 13:42
バカバカ言ってる奴は普段馬鹿にされてるバカなのか

842 :デフォルトの名無しさん:02/05/26 13:42
>>841
そうです。てへへ。

843 :デフォルトの名無しさん:02/05/26 13:43
>>841
>>840
そのようだ

844 :デフォルトの名無しさん:02/05/26 13:44
叩き甲斐のないヤツだ

845 :デフォルトの名無しさん:02/05/26 13:44
getchar()の戻り値は、次の二つの意味が重畳されている。
・ファイル終端に達していたら EOF
・終端でなければファイルの内容から1バイト取り出した値

リファクタリングの知識がある今だと行儀のいい仕様とは言えないな。

846 :784:02/05/26 13:45
>>836(=827?)

>>792 とか >>814 とか、見た?

847 :仕様書無しさん:02/05/26 13:46
>>845
じゃぁどうすればいいの?

848 :デフォルトの名無しさん:02/05/26 13:47
規格にはbyteが「アドレッシングの単位」で「characterを保持できる
だけの大きさがある記憶領域」だと書いてある。(8bitだなんてどこにも
書いていないが、characterを保持するには最低8bit以上必要。)

また「sizeof charは常に1」とも書いてある。

だから本当はbyteサイズ >= charサイズだが、余ったビットを使う方法なんて
ないし、余らせても処理系にメリットはないと思われるので、実質上
byteサイズ==charサイズと思っていて問題はない。

849 :デフォルトの名無しさん:02/05/26 13:48
>>845
_Bool getchar(char *value)として、valueの指す先に値を書かせる?

850 :デフォルトの名無しさん:02/05/26 13:48
>>847
もちろん、成功不成功の出力と、入力された値を返すインタフェースを別にするのさ
たとえば、関数の戻り値は成功不成功のtrue/falseだけにして、
入力値はポインタ1個渡してそこに入れてもらうようにするとか

851 :デフォルトの名無しさん:02/05/26 13:49
getchar()は値を返すがEOFだと例外を投げる、って方が使いやすいな…
レジスタで受け取れるし。

(Javaでさえそうはしてないが。)

852 :デフォルトの名無しさん:02/05/26 13:50
Cの規格に例外ってあるの?

853 :デフォルトの名無しさん:02/05/26 13:51
>>851
JavaのreadChar()はEOFExceptionを投げる。

854 :デフォルトの名無しさん:02/05/26 13:51
>852
例外というか、穴だらけ。
使い物になると思わない方がいい。

855 :784:02/05/26 13:52
>>851
setjmpっすか? volatile出てきますね

856 :851:02/05/26 13:52
>>852
ないです。

>>853
そうだった。read()しか考えてなかった。

857 :デフォルトの名無しさん:02/05/26 13:52
>>851
そんな貴方には C++ の basic_istream をどうぞ。exceptions でEOF例外を発するように出来ます。ここはCスレなので。

858 :デフォルトの名無しさん:02/05/26 13:55
errnoでエラーを示すことにしてみるとか・・・

859 :仕様書無しさん847:02/05/26 13:55
例外使うなら、isEofも必要じゃない?
(注)Iteratorはそれで遅いなんて言われている。


860 :仕様書無しさん847:02/05/26 13:56
うーん、Cでも、eof, select 使うと遅いね。

861 :デフォルトの名無しさん:02/05/26 13:56
>>854
フ゜ばっかじゃねーの


862 :仕様書無しさん847:02/05/26 13:57
>>861
同士 (^^;;

863 :784:02/05/26 13:57
feof

板違いはやめれ

864 :デフォルトの名無しさん:02/05/26 13:58
例外違い

865 :デフォルトの名無しさん:02/05/26 13:59
>849 の方式が素直だよね。

char c;
while ( getchar(&c) ) {
 cを処理
}
と書ける。

866 :デフォルトの名無しさん:02/05/26 13:59
> 例外というか、穴だらけ
(w

867 :デフォルトの名無しさん:02/05/26 14:00
#define eof()  feof(stdin)

868 :デフォルトの名無しさん:02/05/26 14:00
>>858
do {
 c = getchar();
}while (! errno);
とか?
errnoって最近かなり不便だよね。
マルチスレッドを使うときはグローバル変数にできないので
変なマクロになっている。

>>859
isEofってのはPascal流だな。
例外とか使わないとしたらまっとうなアプローチだと思うけど、
while (! isEof(stdin)) {
 c = getchar();
}
は、実行効率で今の仕様に負けると思う。

869 :784:02/05/26 14:01
>>854
>>852が言ってる例外はgotoだと思うぞ

870 :デフォルトの名無しさん:02/05/26 14:01
>>865
でもcをレジスタに割り当てられなくなるよね。
マクロ展開しても速くならないんじゃないか?

871 :knk:02/05/26 14:05
このスレは俺が乗っ取った。ともっちには渡さないよ。

872 :784:02/05/26 14:06
>>870
えー速くなる?

jmp_buf j;
if(setjmp(j)==0){
register char c;
while(c=getchar(j)){
 cを処理
}
}


873 :847:02/05/26 14:07
>>868
なるほど
MSVCみたいなコンパイラならバイナリは同一かと思われ。

874 :784:02/05/26 14:09
あり、whileの判定しくってる...鬱だ

875 :847:02/05/26 14:11
ワロタ
jmp_buf j;
if(setjmp(j)==0){
register char c;
while(1) {
c=getchar(j);
 cを処理
}
}

876 :784:02/05/26 14:12
>>875おっしゃるとおり

877 :デフォルトの名無しさん:02/05/26 14:20
SJISの漢字は混ざった文字列で改行'\n'を見つけるコードを書きたいのですが、
マルチバイト文字列関数の_mbsstr()を使えば、どんな場合でも問題なく
見つけてくれるのでしょうか?

EUCの文字列を処理するときでもOKですか?
どこかにいい説明ページがあればURLお願いします。

878 :デフォルトの名無しさん:02/05/26 14:24
>>877
\nだったら漢字考慮せずとも大丈夫っしょ

879 :デフォルトの名無しさん:02/05/26 14:31
>>875
jmpbuf渡さなきゃダメかな? ま、いいけど。
マクロ展開すると
c = (--*(p)->cnt > = 0 ? *(p)->ptr++ & 0377: fillbuf(p, j));
みたいになるよね。jはたいてい使わないからけっこう速くなると思うけど。


880 :877:02/05/26 14:37
>>878
'\n'は2バイト目にも出てこないんですね。
ご指摘ありがとうございました。

http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/w/whatKanji.html
>シフトJISコードは第1バイトとして 0x81 - 0x9f までと 0xe0 - 0xfc まで、
>第2バイトとして 0x40 - 0xfc まで(0x7fを除く)を使う。
>このため、シフトJISは上記の半角コードと混在できる。
>しかし、制御文字として使われる \(バックスラッシュまたは円記号)などが
>第2バイトの領域に入っているために問題が生じることがある。
>
>EUCコードは第1、第2バイトとも 0xa1 - 0xfe までであるが


881 :847:02/05/26 14:43
>>879
そのままで(・∀・)イイ!!という事でしょうか。


882 :784:02/05/26 14:44
>>879
ああ、マクロ展開って言ってたっけ
そんならそうかも

883 :784:02/05/26 14:47
>>879
ところでjmp_buf渡さない手って?

884 :デフォルトの名無しさん:02/05/26 14:51
>>883
例えば名前を固定にするとか、スタックにするとか。

スタックってのは、setjmp(&j)じゃなくて
push_ioerr_jmpbuf(&j)みたいにする。使うときは
TRY〜CATCHみたいなマクロにすればそれほど面倒はない
んじゃないかな。


885 :デフォルトの名無しさん:02/05/26 14:52
今でもgetcharはマクロになってるのかな?
規格だと「関数としてリンクできないといけない。
でも同じ名前のマクロを用意しても良い。」となってるけど。

886 :784:02/05/26 14:56
>>884
スタックを2本にするってこと?

887 :デフォルトの名無しさん:02/05/26 15:06
C言語の中で、UNIXコマンド使うにはどうすればいいんでしょう?

888 :デフォルトの名無しさん:02/05/26 15:07
>>887
system()

889 :784:02/05/26 15:10
言いっぱなしで悪いが急用ができた
失礼する

890 :デフォルトの名無しさん:02/05/26 15:10
>>888
どうもありがとうございますた。
system("コマンド");
ですね。

891 :デフォルトの名無しさん:02/05/26 15:15
エンターキーを押すまで、入力待ち状態で
エンターキーを押したら次の処理に進むようにしようと思います。
変数を使わずに実現するにはどうすればいいでしょうか?

scanf; じゃなにも起こらないようです。

892 :デフォルトの名無しさん:02/05/26 15:17
>>891
scanf;じゃscanf関数の呼び出しすらしない罠

893 :デフォルトの名無しさん:02/05/26 15:18
while(getc != 0x0A);

894 :デフォルトの名無しさん:02/05/26 15:19
while(getchar() != 0x0A);

895 :デフォルトの名無しさん:02/05/26 15:22
普通にscnaf("%s",dummy);

896 :デフォルトの名無しさん:02/05/26 15:24
"変数を使わずに"だそうだが?

897 :デフォルトの名無しさん:02/05/26 15:25
>>896
system("pause > nul");

DOS限定。

898 :デフォルトの名無しさん:02/05/26 15:26
Makefileで、ビルトインルールを使わせないようにしたいんですけどどうすればいいでしょうか?

.c.o:
  $(CC) $(OPTS) -S $<
  $(CC) $(OPTS) -o $<
ってやりたいんですけどビルトインルールに cc -o $< がある(?)ので
余計なコトをされてしまいます。

899 :デフォルトの名無しさん:02/05/26 15:27
>>894でいいんじゃない。Macじゃなければ大体使えそうだし。

900 :デフォルトの名無しさん:02/05/26 15:32
>>892
うぉ、本当だ。VC++ 6 でやると、警告は出るがコンパイルは通る。
(でも、何も生成されない。) 何で、エラーにしないんだ ?
scanf(); ならエラーにするくせに...。

>>891
何で、変数使っちゃダメなの ? >>895 みたいにそれとわかる変数使えば
いいと思うが

901 :デフォルトの名無しさん:02/05/26 15:35
dummyのサイズをどうすればいいか分からない。
仮にEnter入力待ちの時にタッチタイピングの練習し始めたり、
物のせてスペースキーが押しっぱなしになって3日放置されたりしたらどうする?

902 :デフォルトの名無しさん:02/05/26 15:35
>900
エラーじゃないからエラーにならない。
int a;
a;
これもエラーじゃない。

903 :891:02/05/26 15:36
考えてくれた人どうもです。

>>900
>何で、変数使っちゃダメなの?

わざわざこの処理の為に変数用意するのはどうかな?
と思ったのです。

>>894さん
の方法でうまく行きました。ありがとうございました。
while(getchar()!=10);でもうまくいったみたいです。。。(decか、hexの違い!?)



904 :デフォルトの名無しさん:02/05/26 15:36
>>900
int a;
a;
とか
main(int argc, char** argv)
{
argc; argv;
}
とか出来る
関数は関数ポインタの扱い。

905 :デフォルトの名無しさん:02/05/26 15:37
>>901

906 :デフォルトの名無しさん:02/05/26 15:38
scanfは絶対に必要な場合以外使わない。
絶対に必要な事は無いに等しい。

907 :デフォルトの名無しさん:02/05/26 15:39
http://www.google.com/search?hl=ja&num=100&lr=lang_ja&q=scanf

908 :891のつづき:02/05/26 15:41
ただですね、そのenter入力待ちの時に入力するするenterが、
その前の処理の入力で、”入力終了に使うenter" を間違えて読んでしまって
入力待ちにならないんです。

scanf("%s",string_data"); @
while(getchar()!=0x0a);   A


909 :900:02/05/26 15:44
>>902, >>904
関数プロトタイプ知らんの ? だったら、何で scanf(); はエラーに
するのか説明しろよ。

910 :デフォルトの名無しさん:02/05/26 15:45
900はアフォです。

911 :デフォルトの名無しさん:02/05/26 15:45
>>909
激しく同意

912 :デフォルトの名無しさん:02/05/26 15:46
>>909
関数ポインタって知ってますか?

913 :904:02/05/26 15:47
>>909
煽られても困るんだが?
関数プロトタイプがあるからscanf()がエラーになる。
変数を単体で式として記述すると、何も起こらない

914 :デフォルトの名無しさん:02/05/26 15:47
>>908
を回避するために、

scanf("%s",string_data"); @
while(getchar()!=0x0a);   A
while(getchar()!=0x0a);   A
と、するのは邪道ですか? きれいなプログラム、すっきりしたプログラムという点
から見て意見求む!


915 :デフォルトの名無しさん:02/05/26 15:47
>>914
scanf使わなければ解決。

916 :デフォルトの名無しさん:02/05/26 15:49
>>915
ムムッ

917 :デフォルトの名無しさん:02/05/26 15:50
むむむ

918 :デフォルトの名無しさん:02/05/26 15:54
char string_data[1024], *pstr;
pstr = string_data;
while(*pstr++ != '\n')
 *pstr = (char)getchar();
while(getchar() != '\n');

919 :デフォルトの名無しさん:02/05/26 15:57
char string_data[1024], *pstr;
pstr = string_data;
do{ *pstr = (char)getchar(); } while(*pstr++ != '\n');
*pstr = '\0';
while(getchar() != '\n');

920 :900:02/05/26 16:00
>>913
あんたら、VC++ 6 のエラーメッセージ見た事ないのか ?
> 「関数呼び出しに引数リストがありません。」
俺が言いたいのは、関数呼び出しと認識してるんなら、エラーにしろよ。
と言うことだけだよ。
関数ポインタとか、変数を単体で式として記述 とか言うんなら、
なんで、
int (*a)();
a;
が警告にもならないか説明しろよ。

921 :デフォルトの名無しさん:02/05/26 16:01
Makefile が変更されたら無条件にコンパイル全部やり直したいときは
どうすればいいですか?
全ファイルにMakefileを依存させるようにMakefile記述するのはダサいッスよね?

922 :904:02/05/26 16:03
>>920
K&RなりISOなり仕様書読めよ
int (*a)();
a;
a は変数だろうが。
これは関数呼び出しとして認識してないよ
a という式だって言うの。
a()で関数呼び出しになるから、始めて引数がチェックされるんだって。

923 :デフォルトの名無しさん:02/05/26 16:05
>920
なんでそれがエラーにならないかというと ; で区切られてるのは、実は全部 値 なんです。

a = 1;
↑この式は1です。

a;
↑この式も1です。

scanf;
↑この式は &scanf です。

scanf(&a);
↑この式は scanf()の戻り値です。

924 :デフォルトの名無しさん:02/05/26 16:06
なんで4日でスレがなくなるんだか。。。
密かに祭りでもやってんの?

925 :デフォルトの名無しさん:02/05/26 16:06
>>923
なんかわかりやす(・∀・)イ!!
3つ目 &scanf がどういう値なのかよくわからんが(w

926 :デフォルトの名無しさん:02/05/26 16:06
アフォを無視せずに謝らせようとするからです。

927 :デフォルトの名無しさん:02/05/26 16:07
>>924
そう、ただいま scanf(); 祭り実施CHU!

928 :結論:02/05/26 16:08
こんなわかりにくい言語にしたやつが(・A・)イクナイ

929 :デフォルトの名無しさん:02/05/26 16:09
>>900=928

930 :デフォルトの名無しさん:02/05/26 16:10
>>900必死だな

931 :928:02/05/26 16:10
>>929
違うって・・・マジで。

932 :デフォルトの名無しさん:02/05/26 16:12
わかりにくいッて言うならPerlにも言えよ

933 :デフォルトの名無しさん:02/05/26 16:13
>>950以降で最初に回答した人、次スレよろしこ。

934 :デフォルトの名無しさん:02/05/26 16:15
void *func = scanf;
func("%s", buf);

935 :928:02/05/26 16:15
>>932
perlは、精気表現がきついもんなぁ。
あとはCっぽいから、結局、Cがわかりにくい。

936 :デフォルトの名無しさん:02/05/26 16:15
>>928
馴染め。

>>925
scanf(関数)のある場所。

この辺はアセンブリを知ってる人は有利なのかな?

937 :900:02/05/26 16:15
>>922
> a は変数だろうが。
> これは関数呼び出しとして認識してないよ
> a という式だって言うの。
じゃあ、scanf; ってなんなんだよ。式じゃねーのか ?

938 :デフォルトの名無しさん:02/05/26 16:18
>>937
scanf; != 式とは>>922は一言も書いてませんが?

939 :デフォルトの名無しさん:02/05/26 16:19
>>937
;(セミコロン)が付いたら式かどうか疑ってみんさい。
そういう時はscanfは式なの?
ケコーンしちゃうの?

って聞くの。

940 :デフォルトの名無しさん:02/05/26 16:19
>>934



void (*func)(const char*, ...) = scanf;
func("%s", buf);


941 :925:02/05/26 16:24
>>936
さんくすこ。
精進します。
でも、アセンブラはやらないでしょう。Cでおなかいっぱい

942 :900:02/05/26 16:26
>>938-939
scanf; って言うのが...
1. 式って言うなら、int (*a)(); a; との違いはなんだ ?
2. 関数呼び出しだって言うなら、何でプロトタイプ宣言のエラーに
  しないんだ ?
3. どっちとも違うって言うなら、なんなんだ ?
って聞いてるだけだよ。>>922 は質問の意図はわかってるだろうから
余計なことはさまないでよね。

943 :デフォルトの名無しさん:02/05/26 16:30
関数呼び出しでは無い事は確か

944 :デフォルトの名無しさん:02/05/26 16:33
うむむ祭りに乗り遅れた(´・ω・`)しょぼーん

945 :デフォルトの名無しさん:02/05/26 16:34
>>944
ガンバ♪

946 :891:02/05/26 16:35
>>943
関数呼び出しかと思って、あんな事>>891書いてたよ。
何にも起こらなかったけどね。

947 :デフォルトの名無しさん:02/05/26 16:36
>>946
初心者は(#・∀・)カエレ!!

948 :デフォルトの名無しさん:02/05/26 16:38
互換性のある型!!

949 :デフォルトの名無しさん:02/05/26 16:40
(´・ω・`)しょぼーん



950 :デフォルトの名無しさん:02/05/26 16:42
>>942

;が付いたら文。
でscanfは式。
>>936
に書いてあるとおり、scanfのアドレスを返す。
printf("%p\n",scanf);とかやってみ。

> int (*a)(); a;
これやるとBCC32では警告が出るんですが…
こうやって宣言した関数ポインタかscanfとかの関数名に()がつくと関数の呼び出しとなる。
a;はアドレスを返すだけ。でも使ってないだけ。


951 :950:02/05/26 16:44
次スレ立てます。

952 :デフォルトの名無しさん:02/05/26 16:48
scanf;
は正しい式だから、ANSI準拠に従う以上、エラーにしちゃいけない。
警告を出すかどうかは処理系実装者の任意だけど。
何を意味するかというと、scanf関数の関数ポインタを取得して、それを何もしない。
呼び出すわけでもなく。
ただ単に式の値は捨てられる。
って感じ?

953 :デフォルトの名無しさん:02/05/26 16:49
配列のポインタ配列の識別子にアドレス演算子がいらないように関数にも要らない!
互換性のある型!!

int ia[10];
int (*iap)[10] = ia;//&iaでもよい無くてもよい

コンパーチブル!!

954 :950:02/05/26 17:00
駄目だった。スレ立てすぎらしい。

代わりに立てて >>957

955 :デフォルトの名無しさん:02/05/26 17:03
>>953
> int ia[10];
> int (*iap)[10] = ia;//&iaでもよい無くてもよい
アドレスは同じでも型は同じか?


956 :デフォルトの名無しさん:02/05/26 17:04
printf("%p", scanf);

957 :900:02/05/26 17:04
>>943, >>950, >>952
だから...
> 1. 式って言うなら、int (*a)(); a; との違いはなんだ ?
に誰か、答えられるの ? (特に、>>910-912 みたいに偉そうに書いてた奴、
どうよ。単なる煽り屋さんか ?)

>>950
>> int (*a)(); a;
> これやるとBCC32では警告が出るんですが…
なんてでてます ? また、int a; a; でもでるのかな ?
(処理系の名前忘れたけど、"無効な式です" とか言う警告が出る奴はある。)

958 :デフォルトの名無しさん:02/05/26 17:06
>>957
次スレよろしこ。

959 :デフォルトの名無しさん:02/05/26 17:06
次スレ1もvoidで頼む。

960 :デフォルトの名無しさん:02/05/26 17:11
今話題になっているSHARPポケコンPC-G850内蔵のC言語ってどうなんでしょう。


961 :デフォルトの名無しさん:02/05/26 17:12
900が何を騒いでいるのかわからんのだけど。

int scanf(const char *, ...);
というプロトタイプがあるとき、

scanf; はエラーじゃない。
int (*)(const char *,...)型の式の後ろに;をつけた文になる。

scanf(); はエラーだ。
int scanf(const char *,...)を、矛盾する引数で呼び出したから。
                       ^^^^^^^^^^^^^^

962 :デフォルトの名無しさん:02/05/26 17:13
int (*a)(int);

a; // エラーじゃない
a(); // エラー
a(1); // エラーじゃない


963 :904:02/05/26 17:14
>>957
煽りやさんはあんただろ。
> 1. 式って言うなら、int (*a)(); a; との違いはなんだ ?
a()と int(*a)();a;の違い?
前者は引数なし関数aの呼び出し
後者は引数なし関数ポインタaの宣言と式aのみから成り立った文。

964 :デフォルトの名無しさん:02/05/26 17:15
ちゃんとひよこ本のリンクはれや、ゴルァ!

965 :デフォルトの名無しさん:02/05/26 17:19
あー、ひょっとして900は、他の一部の言語(Modula-2とかRubyとか)
みたいに、
scanf;

scanf();
も同じように引数0個の関数呼び出しになると思ってたのかな?

Cだと、()を付けない限り関数呼び出しは起きないんだよ。

966 :デフォルトの名無しさん:02/05/26 17:23
誰かスレ立てろ
俺は立てすぎらしい

967 :ダックソンW世:02/05/26 17:24
GNU + Cygnus + Windows = Cygwin (・∀・)イイ!

968 :900:02/05/26 17:24
>>963
げっ、こいつほんとにわかってなかったのかよ。>>942 の「>>922
質問の意図はわかってるだろうから」て言うのは、取り消しだ。

誰が、「a()と int(*a)();a;の違い?」を問題にしてんだよ。
scanf; と (int (*a)(); としたあとの) a; の違いを示せって言ってんの
わからんか、それとも 1000 も近いから単なる時間稼ぎか ?

969 :デフォルトの名無しさん:02/05/26 17:26
俺が立ててみます。ちょいお待ちを。

970 :904:02/05/26 17:28
>>968
あんた偉そうだな、いちいち過去ログ見るのも億劫だから適当に書いただけだ。
それならほとんど違いはないよ、違いは関数のアドレスか、関数ポインタの値か、それだけ。



971 :969:02/05/26 17:33
俺もスレ立てすぎでした・・・。
誰か頼む。
テンプレ

-------------------------------------------------------
C言語なら、俺に聞け! <22>

日下部陽一


漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/

・前スレ
<21> http://pc.2ch.net/test/read.cgi/tech/1022045622/

他のリンクは>>2-10を見な。

972 :デフォルトの名無しさん:02/05/26 17:33
> うぉ、本当だ。VC++ 6 でやると、警告は出るがコンパイルは通る。
> (でも、何も生成されない。) 何で、エラーにしないんだ ?
> scanf(); ならエラーにするくせに...。

この発言を馬鹿にされて逆ギレしてただけじゃなかったの?

973 :デフォルトの名無しさん:02/05/26 17:33
900は「scanf();はエラーになるのにscanf;やa();がなぜ
エラーでないのかワカリマシェン。誰か教えて〜(泣」
って言ってるんじゃないの?

答は出てるんだが。

974 :デフォルトの名無しさん:02/05/26 17:34
かぶせられた

975 :デフォルトの名無しさん:02/05/26 17:35
>>968
>scanf; と (int (*a)(); としたあとの) a; の違いを示せって言ってんの

へ?何が違うの?

976 :950:02/05/26 17:35
警告 W8019 a.c 5: コードは効果を持たない(関数 main )
と出る。

>>968
scanf; は文だって…
例えば
int (*a)(const char *, ...);
a = scanf;
として
a(どうのこうの);
とすればscanfとして動く。
a = printf;
と、途中で変えることもできる。

ようは
int a[256];

int *a;
との違いみたいなもん。


977 :デフォルトの名無しさん:02/05/26 17:36
問題がすりかわってる悪寒・・・

978 :日下部陽一:02/05/26 17:37
http://pc.2ch.net/test/read.cgi/tech/1022402165/
新スレです。移動願います

979 :サンプル:02/05/26 17:39
#include <stdio.h>

int main(){
int (*a)();
int hage;
a = scanf;
a("%d",&hage);
a = printf;
a("%d\n",hage);

scanf = printf; /*エラーだよ*/
return 0;
}
こんなもんで。
あとは邪推してくれ。

980 :デフォルトの名無しさん:02/05/26 17:41
前スレ900は何を教えて欲しいのかもう一度説明するべきだと思うな。
俺は「scanf;が関数呼び出しだと思っていた」に一票だが。

981 :デフォルトの名無しさん:02/05/26 17:45
>>980
単なる()の付け忘れだろ。何をそんなに熱くなってるんだか・・・。

しかし、scanf;でコンパイル通るのか。
関数ポインタがごろんと転がっているだけの感じだがな。
0x44548883;
とかいう感じで。

982 :デフォルトの名無しさん:02/05/26 17:45
前スレ900?

983 :デフォルトの名無しさん:02/05/26 17:46
熱いのは900れす

984 :デフォルトの名無しさん:02/05/26 17:50
>>979
int (*a)(cont char *,...);じゃなくていいの?

985 :980:02/05/26 17:51
新スレに書いたつもりが誤爆しました。
http://pc.2ch.net/test/read.cgi/tech/1022402165/10
に書き直した。

986 :950:02/05/26 17:51
>>977
・・・正解!

まあ scanf; a; ってのはたいした違いは無いよね。
1; と 2; の違いを言えってなもんだし。
むしろ
printf("hoge\n");
a = 3;
とかとも違いが無い(printfもintを返すし、代入式も値がある)。
つまり値が返されても値を受け取らなかったらそれは無視されるってこと。

俺は疲れた。
アセンブリ勉強してくれ。
pascalはやらないでくれ。

987 :デフォルトの名無しさん:02/05/26 17:54
あれは900宛てじゃ

988 :デフォルトの名無しさん:02/05/26 17:56
      ,, ,=、  ,, , =、
     ff | }!、,、〃 / ″このスレ怖いー!!
      ,リ/ .ノ*´jコ`)'〃
    {{ { ′   v' 《
     ヾ.\.   \ヾ
     _,,二、》   ;  \. 三,_
  (( ゙ー=、`″〃 \. \-‐' ,))
        ゙ー=″     ゙' 一'

989 :デフォルトの名無しさん:02/05/26 17:56
>>984
int (*a)();
という宣言なら、どんな実引数で呼び出しても文法上はOK。

ただしこの宣言だと、可変長引数のプロトタイプ宣言をされた
関数は呼び出せない。(呼び出すと未定義の動作になる。)


990 :デフォルトの名無しさん:02/05/26 18:15
とある質問だけで、100レスもつくとは。。。。
(((( ;゚Д゚))))ガクガクブルブル

991 :デフォルトの名無しさん:02/05/26 18:17
>>990
おいおい、NULLの話なんかいくつレスが付いたと思ってるんだ?

992 :900:02/05/26 18:20
>>973
> 900は「scanf();はエラーになるのにscanf;やa();がなぜ
> エラーでないのかワカリマシェン。誰か教えて〜(泣」
> って言ってるんじゃないの?
バカ。>>920 見ろ。俺が言いたいのは、scanf; が警告出るのに、a; が警告
でないのは、何でだ。ってことだ。(要は、VC は (この点に関しては) バカ
だと言ってるだけだよ。)

いいかげん、scanf(); と scanf; の違いを偉そうに語るのはやめてくれ。

>>976
なるほど、BCC はちゃんと警告出るわけだ。int a; a; でもてるんだろう
なァ...。

993 :900:02/05/26 18:22
>>902, >>904
関数プロトタイプ知らんの ? だったら、何で scanf(); はエラーに
するのか説明しろよ。

994 :デフォルトの名無しさん:02/05/26 18:23
>>920の時点で問題がすりかわってる罠

995 :デフォルトの名無しさん:02/05/26 18:24
900さん熱いね。
よーし、パパどうでもいい話なのでこのままコソーリ1000狙ちゃうぞー

996 :デフォルトの名無しさん:02/05/26 18:25
>>900もまだ反論あるなら
http://pc.2ch.net/test/read.cgi/tech/1022402165/に移動して下さい。

997 :デフォルトの名無しさん:02/05/26 18:25
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

998 :デフォルトの名無しさん:02/05/26 18:26
ああ、そういうこと。VC++の警告メッセージが違ってると。ふーん。

あれ、ひょっとしてVC6って、
scanf;
でscanf();と同じコードが出るの?
だったらコンパイラのバグだね。

999 :デフォルトの名無しさん:02/05/26 18:26
いまだ!

1000 :900:02/05/26 18:27
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

213 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)