■ 2ちゃんねるは、ここのサーバを使ってるです。。。
 .jp ドメインお持ちのお客様大歓迎。maido3.jp
 .fm 取得代行します。(US) maido3.fm
 .ca 取得代行します。(US) maido3.ca
 .com .net .org 取得代行します。(US) maido3.com
 .cc .to .tv 取得代行はじめました。NEW
人気サイト
月々1,000円からの BinboServer.com 2ちゃんねるも使っている Big-Server.com
>> 2ちゃんねる、サーバ監視所

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。



2ちゃんねるは、ここのサーバを使ってるです。。。