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

C言語なら俺に聞け<35>

■ このスレッドは過去ログ倉庫に格納されています
0001未定義?ということにしたいのですね? :)NGNG

マターリ未定義論争でもしましょうか。
もちろん質問も受け付けますよ。それがメインですし。
課題丸投げ?それは別スレでやってください。


・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/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/

・前スレ <34>
http://pc3.2ch.net/test/read.cgi/tech/1033240509/

コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

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

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003デフォルトの名無しさんNGNG
【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0004デフォルトの名無しさんNGNG
コンパイラについて詳しく教えていただけないでしょうか。

貧乏で本も買えないのでよろしくお願いします。
0005デフォルトの名無しさんNGNG
いい加減>>1からK&Rを消してくれよ
0006デフォルトの名無しさんNGNG
>>5
うるさいよ
0007デフォルトの名無しさんNGNG
>>4
>貧乏で本も買えないので

立ち読みはできるだろう?
俺が厨房の時は本屋に足繁く通って必要なところ暗記して帰ったもんだが。
0008デフォルトの名無しさんNGNG
>いい加減>>1からK&Rを消してくれよ
プッ
0009デフォルトの名無しさんNGNG
実は近くに本屋もないのです。
0010デフォルトの名無しさんNGNG
電車に乗れないの?ガキですか?
0011デフォルトの名無しさんNGNG
>>4
> 貧乏で本も買えないので
まず、回線を切ってお金を貯めましょう。
1ヶ月ネットを我慢するだけで本の1冊や2冊簡単に買えます。
0012デフォルトの名無しさん NGNG
>>9
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
0013デフォルトの名無しさんNGNG
すみません。電車もないのです。
バスで往復するとバス代だけで本が買えてしまいます。
0014デフォルトの名無しさんNGNG
買え
0015デフォルトの名無しさんNGNG
ネットには友達に借りているb-movileでつなげているのでただです。
パソコンも友達にもらったもです。どうか意地悪しないで教えてください.
0016デフォルトの名無しさんNGNG
ヒッチハイクだな
0017デフォルトの名無しさんNGNG
バスジャックだな
0018デフォルトの名無しさんNGNG
>>15
お前何歳?
コンパイラについてって、コンパイラの何が知りたいんだ?
0019デフォルトの名無しさんNGNG
>>15
本も友達から借りるなり、もらったりすれば
0020デフォルトの名無しさんNGNG
>>4
仕方ないな。ここは一つ、俺のおすすめサイトを教えてやるよ。
ここさえ読めば誰よりもコンパイラについて詳しくなれる。

http://etlab.mis.ous.ac.jp/knowledge_e/032/menu.html
0021デフォルトの名無しさんNGNG
C言語をはじめたいのでコンパイラについて知りたいのですが・・・
0022デフォルトの名無しさんNGNG
>>21
http://www.stileproject.com/monkey_sugar.swf
このサイトをまず見ろ
0023デフォルトの名無しさんNGNG
スレ立て乙〜
002422NGNG
>>23
どういたしました
0025デフォルトの名無しさんNGNG
コンパイラは Borland C++ 5.5.1 for Win32 を使用しています。

猫でもなんかで stdio.h の printf関数を覗いてみましょうとありますが、
Includeフォルダの中のstdio.hには
defineがいっぱい書かれているだけで
肝心の関数が見当たりません。

どこにありますか?
0026デフォルトの名無しさんNGNG
>>25
通常、C言語のヘッダファイルには宣言しか書いてないので見てもつまらないと思います。
0027デフォルトの名無しさんNGNG
>>26
じゃぁ、*.cはどこにおいてあるの?
0028デフォルトの名無しさんNGNG
>>25
printf()関数のソースを見ることはできません。
関数の定義だけがヘッダには書いてあり、実態は
ライブラリ、というコンパイルされた後の関数の固まりで提供されています。
0029デフォルトの名無しさんNGNG
ソースは非公開
0030デフォルトの名無しさんNGNG
標準関数のソース落とせるところないです?
0031デフォルトの名無しさんNGNG
売ってるかもしれないが、ボーランドはどうだろう。
なんでもよければLINUXの奴みるとか。
003225=27NGNG
>>28
*.objとかそういうやつですか?

sprintf()の戻り値とか
覚えていないので、調べたいのですが
どうしたらいいですか?
このさい奮発してVS.NETの学割版かおうかなぁ。

#なんか俺一人ageてると寂しいけども
#新スレだしいいかw
0033デフォルトの名無しさんNGNG
http://tyrant.chem-eng.kyushu-u.ac.jp/2nd/Programming/Library/Main.asp
003425=27NGNG
>>33
Thx!!
早速ブクマークしておきますた!
0035デフォルトの名無しさんNGNG
>>32
ネットを使うなら、このあたりがいいかもですよ。
ttp://tyrant.chem-eng.kyushu-u.ac.jp/2nd/Programming/Library/Main.asp
ttp://www.bohyoh.com/CandCPP/C/Library/
003625=27NGNG
>>33,>>35
Thax.

PCにダウンロードしてオフラインでマターリ見れるのが理想ですが
贅沢過ぎますねw

テンプレに追加してほしい無いようだ・・・
0037manko_chinko ◆GLc2rpKRNM NGNG
>>25
light-cとかいうC処理系は購入したらライブラリのソースみれます。アセンブリの
003825=27NGNG
>>37
アセンブリの何なんですか?
気になって夜も眠れません。
さっきコーヒー飲んだばっかりなので、損した気分になってしまいます
0039デフォルトの名無しさんNGNG
市販されてる製品なら、標準関数のソースコードが同梱されてるのは結構あるよね。
VC++とかLSI-Cとか。

フリーで転がってるのにはまずないけど。
0040manko_chinko ◆GLc2rpKRNM NGNG
>>38
コーヒーはカフェイン多いから、気になって眠れなくても同じことじゃないんですか?
0041デフォルトの名無しさんNGNG
>>39
gccにも無いの?
0042manko_chinko ◆GLc2rpKRNM NGNG
>>39
なんだVCにもついてるのか。しらんかった
0043デフォルトの名無しさんNGNG
VCにはついていない。MFCのソースならついているが。
0044デフォルトの名無しさんNGNG
>>43
ついてるはずだよ。
インストールオプションで指定してないんじゃなの?
0045デフォルトの名無しさんNGNG
VC++には少なくともver.4からC Runtimeのソースコードがついてますよ
0046デフォルトの名無しさんNGNG
>>41
libcのソースコードはあるんじゃない?
gccにはついてこなくても。
0047デフォルトの名無しさんNGNG
glibcのソースならここにあるだろ。
http://ring.astem.or.jp/archives/GNU/glibc/
0048デフォルトの名無しさんNGNG
>>32
戻り値を調べる程度ならhttp://www.linux.or.jp/JM/が便利だよ。
セクション3がライブラリ関数。
ただし標準C向けではなく、Linux向けなので注意。
0049デフォルトの名無しさんNGNG
進行の速いスレですね。C言語マンセー
0050デフォルトの名無しさんNGNG
Cとしてしか使わないのに何故VC++、Borland C++ Compilerを使うの?
CならCコンパイラ使えば?LSI-Cとかさ。
処理系選びも適材適所。
0051デフォルトの名無しさんNGNG
>>50
多分メモリの問題じゃないの?
0052デフォルトの名無しさんNGNG
>>51
何言ってんの?
0053デフォルトの名無しさんNGNG
>>50
逆に聞くけど、Cとしてしか使わない時にLSI-Cが
VC++よりも(価格以外で)優れている点ってあるの?
LSI-Cって試食版のことではないよね?

俺がVC++を使う理由は、統合開発環境が便利
(GUIでの操作/API等のヘルプ/デバッガ/リソースエディタ等々)、
それと最適化が優秀だから。
0054デフォルトの名無しさんNGNG
Cなんて時代遅れのキモイ仕様の言語はもう必要ないってことだな。
C用ではなくC++用処理系を使っている時点でそれを証明している。
C++によって生かしてもらっているだけ。跪いて感謝しろよ。
0055デフォルトの名無しさんNGNG
親が引退したら子が養うのは当然のことさ、あらためて感謝するようなことじゃない。
0056デフォルトの名無しさんNGNG
  ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (゚Θ゚)  < どうでもいいよ。
 (  U)  \________
 (__(_)))

もっと、コード教えて

0057デフォルトの名無しさんNGNG
>>52
LSI-Cって16ビットコンパイラじゃなかった?
int a[10000000];とかできるの?
0058デフォルトの名無しさんNGNG
>>50
つーかなんで32bit時代に16bitコンパイラなんて使わなきゃならないんだ。
0059デフォルトの名無しさんNGNG
きっと知らなかったんだよsage
0060デフォルトの名無しさんNGNG
>>53
組み込み関係の機能は、VC より LSIC-86 の方が優れてるっぽい。

>>57
そもそも、LSIC-86 は、8086 用だから、int a[10000000]; は無理だろう。(int が 16bit としても、20MB 必要だから。)
http://www.lsi-j.web.sh.cwidc.net/product/c86/

>>58
みんながみんな、Windows とか Linux とかやってるわけじゃないから。
俺も、DOS のために VC++ 1.5 とか未だに持ってるし。
0061デフォルトの名無しさんNGNG
VC++は、CコンパイラとC++コンパイラが別になってるというのを
知らないのか?
0062デフォルトの名無しさんNGNG
>>61
知らんけど、それがどうかしたのか ?
0063デフォルトの名無しさんNGNG
超ド級の低レベルの質問でもうしわけないです。
今win95 C でプログラミングしてます
そこでsleep関数を使うとエラーがでてしまうのですが、使えないのでしょうか?
0064デフォルトの名無しさんNGNG
プイ一ハケソ
0065デフォルトの名無しさんNGNG
>>63
「どんなエラー」か書け。
006663NGNG
22.obj : error LNK2001: 外部シンボル "_sleep" は未解決です
Debug/22.exe : fatal error LNK1120: 外部参照 1 が未解決です。

でした
0067デフォルトの名無しさんNGNG
コマンドまたはファイル名が違います
0068デフォルトの名無しさんNGNG
>>66
Windows なら、Sleep() にしとけ。
ただし、引数は 1/1000秒単位だから、気をつけろ。
006963NGNG
#include <stdio.h>

void main(void)
{
Sleep(10);
}

22.obj : error LNK2001: 外部シンボル "_Sleep" は未解決です
Debug/22.exe : fatal error LNK1120: 外部参照 1 が未解決です。

てなりました。
使い方まちがってますか?
0070デフォルトの名無しさんNGNG
hedda
0071デフォルトの名無しさんNGNG
>>69
mainの戻り値はintにしろ。
0072デフォルトの名無しさんNGNG
>>69
#include <windows.h>
007363NGNG
いやだ!
007463NGNG
>>73
は偽者ですので

#include <stdio.h>
#include <windows.h>

int main(void)
{
Sleep(10);
return 1;
}

で

c:\program files\microsoft visual studio\vc98\include\ole2.h(348) : error C2032: '<Unknown>' : 関数は struct '_OLESTREAMVTBL' のメンバとして定義できません。
cl.exe の実行エラー

となったのですが
0075デフォルトの名無しさんNGNG
(7゚
007663NGNG
使用OSはwin2000でした。すいません
0077デフォルトの名無しさんNGNG
>>74
ん?何でだろ。
Borland-C++5.5.1やMinGWではちゃんとコンパイルできて動くのだが・・・
0078デフォルトの名無しさんNGNG
>>77
VC++ 6.0 でも、コンパイルできる。
もう1回プロジェクト最初から作ってみたら ? > >>74
007963NGNG
>>74
ためしてくれてありがとうございます。
いろいろやってみたのですがsleep関数はC++だったんですね、Cでやってたものでできませんでした;;;
0080デフォルトの名無しさんNGNG
>>79 ふーん。あっそ。面白くないよ。
008163NGNG
>>77>>78
ありがとうございます。
Cで開いてするとエラーがでて、C++で開いてするとうまくいきました。

C++でしたのを名前をCにしてみてもうまくいきました。
なぜなんだろう・・・

こんなことに付き合ってくれてありがとうございます
0082初心者NGNG
Cを短期的に学習する方法って何かないものなのでしょうか?
やはりソースを見ながら学習するのが早い?

皆さんはどうやってCを学習しましたか?
0083デフォルトの名無しさんNGNG
小さいころの柔軟な頭で学習しました。
0084デフォルトの名無しさんNGNG
Cは・・・経験するしかないでしょう。
0085デフォルトの名無しさんNGNG
>>82
他の言語で本格的にプログラミングしたことあるの?
0086デフォルトの名無しさんNGNG
>>82
他の言語でプログラミング経験があるなら難しくない。
それまでの経験と勘のよさにもよるが
入門書片手に早ければ1〜3日もやればそれなりに使えるようになるだろう。
ポインタの概念で躓く人も多いが他のポインタ言語やアセンブリ言語の経験が
あれば難しくはない。

そうではなくまったくの未経験なら
語学や速記などの他の職業技能などと同じように地道にやるしかない。

好きでやっていていつのまにか習得できてしまったという人も少なくないが(俺もそうだが)
好きなやつが「短期的に」なんて言う訳がないしな。

http://www1.neweb.ne.jp/wa/yamdas/column/technique/21-daysj.html
0087デフォルトの名無しさんNGNG
キーボードから二つの整数を変数に入力したのち,ポインタを使って
たがいの値を交換するプログラムをつくりなさい。

って問題があるんですがswapを使わずにつくれますか?
もしつくれたら値の交換でつくるんですか?
アドレスの交換でつくれるんですか?
それとも両方でつくれますか?

アホっぽい質問でごめんなさい
0088デフォルトの名無しさんNGNG
>>87

int x,y,*xp=&x,*yp=&y,t;

/* ここで入力 */

t=*xp,*xp=*yp,*yp=t;
0089デフォルトの名無しさんNGNG
>>87
いろいろな意味でわからない。値の交換で
ポインターを持ち出す必要あるんだろうか?
例題の趣旨によるけど。ちょっと興味ある。
int* a = &a1;
a1 = b1;
b1 = *a; これは正しくないよ!!と教えるための例題?
0090デフォルトの名無しさんNGNG
>>88
Q1 ポインターを使うメリットを教えてください
0091デフォルトの名無しさんNGNG
>>89
ポインタの勉強だと思う。
0092デフォルトの名無しさんNGNG
>>87
ポインタを使えってことは、swapを書けってことじゃないの?
009388NGNG
>>90
俺にきくんじゃねーよ!!
0094デフォルトの名無しさんNGNG
>>88
わるいでもポインターの必然性があまりにも無くて
あなたのコードに
0095デフォルトの名無しさんNGNG
>>94
それは俺も分かっている。

ポインタが必要な場合といえば、文字列や型がきまっていない時くらいかな。
構造体も場合によってはポインタの方がいいかも。
0096デフォルトの名無しさんNGNG
なるほど構造体の例なら完璧ですね.
ポインターを教えるのに
009787NGNG
>>88
それわからない
swap使わなくてもそれでできるんですか?
>>92
swap習ってないから
0098デフォルトの名無しさんNGNG
>>87
swapを自作して解く問題じゃないの?
0099デフォルトの名無しさんNGNG
swap(int *i, int *j) {
int tmp = *i;
*i = *j;
*j = tmp;
}
で
swap(&x, &y); ってやるだけ。
0100デフォルトの名無しさんNGNG
>>99
しかし、それもポインタ使うメリットがわからん・・・・
0101デフォルトの名無しさんNGNG
swap使わないんなら、ポインタ使わずに
int x, y, z;
scanf("%d", &x);
scanf("%d", &y);
z = x; x = y; y = z;
ってやればいい。
というか、最初からxとy入れ替えればいい。
■ このスレッドは過去ログ倉庫に格納されています