1 :
983 ◆HIHn86y. :
02/08/05 06:16
2 :
983 ◆HIHn86y. :02/08/05 06:18
4 :
デフォルトの名無しさん :02/08/05 06:25
27歳になりますた
#include <stdio.h> #define PI 3.14 /* 円周率 */ main() { float r, S; scanf("%g", &r); S = r * r * PI; printf("%g\n", S); } こんな感じのを *fp使って、ファイルには1から10の数字は与えられている場合どうするの? 面積計算は必要です。 出力は 1 3.14 2 3 ・ ・ な感じになるようにお願いします
fを付けてループ回す なにが解らないのかもちっと具体的にかきませう
>scanf("%g", &r); fscanf(fp, "%g", &r);
インタプリタもどきを作りたいんですが、 ----- #!/home/foo/bin/prog aaaa bbbb ----- こういう風に起動して、prog(インタプリタ)がコマンド(aaaa,bbbb)を読むた めにはどうしたらいいですか?
書き忘れましたが、環境は Linux です。
>>12 stdin は試したのですが、やり方が間違っているんでしょうか。
-- foo.c --
#include <stdio.h>
int main()
{
char c[1024];
fgets(c, 1024, stdin);
printf("c=%s\n", c);
return 0;
}
----
-- foo.sh --
#!/home/bar/bin/foo
aaaaa
-----
これで aaaa を読み込んで表示させたいのですが、foo.sh を起動するとキー
ボードからの入力待ちになってしまいます。
14 :
デフォルトの名無しさん :02/08/05 11:13
C言語で音楽ファイルの周波数をいじりたいのですが、どんな感じで処理すればいいのでしょうか?どなたか御教授下さい。お願いします。
>>13 > printf("c=%s\n", c);
system(c);
>>15 もちろんフーリエ変換はやりますが、フーリエ変換をしたあとで、
周波数帯で区切っていくという処理をしたいのです。
>>14 人間のカタツムリ管はA/Dコンバータと同等の機能らしいので
取り外して解析してみてはどうです?
>>17 周波数領域のデータが得られるんだから後は配列処理だろ。
23 :
デフォルトの名無しさん :02/08/05 14:24
質問です。 画像を表示させるにはどうすればよいのでしょうか。
>>23 OSと言語と環境とついでにおまえのIQまで全部書いてからもう一度質問しなおせ
>>12 え???
>>10 スクリプトは、#!の行のコマンド名(インタプリタ)に、そのスクリプト自体を
起動したコマンドラインを追加して実行したのと同じになる。
例えば
>>13 の場合、./foo.sh を実行すると、
/home/foo/bin/prog ./foo.sh というコマンドを実行したのと同じ。
だから、argc, argvで引数を受け取ってそのファイルをオープンしてやれば
いいよ。
26 :
デフォルトの名無しさん :02/08/05 14:34
>>24 OSはWindows
言語はC
環境は…忘れた
IQは127(2年前)
>>24 > OSと言語と環境とついでにおまえのIQまで全部書いてから
それよりも肝心なのが
「表示したい画像フォーマットって何?」
じゃないかな?
28 :
デフォルトの名無しさん :02/08/05 14:37
30 :
デフォルトの名無しさん :02/08/05 14:41
>>29 ありがとうございます!
ところで、ヘッダーファイルは何をインクルードすればよいのですか?
それから、setDIBits(ファイル名);でよいのですか?
31 :
デフォルトの名無しさん :02/08/05 14:46
34 :
デフォルトの名無しさん :02/08/05 14:52
す、すみません。スレ違いだったのですね。 いろいろ教えてくれて、どうもありがとうございます。
>>25 なるほど。
勉強になりました。ありがとうございます。
36 :
デフォルトの名無しさん :02/08/05 18:17
C言語でsin波のポイントを出したいのですが簡単なアルゴリズムあったら教えてください。 1Hz で 最大値500、最小値-500 よろしくお願いします。
ポイントって何?
double value, radius=0.0; わかりづらい質問で申し訳ありません。 ちと、作ってみました。 #define TOP_VALUE 500 while( 1 ){ radius += 0.064; /* サンプリング周波数に合わせて */ value = sin( radius ) * TOP_VALUE; } こんな感じで大丈夫ですか?
#define TOP_VALUE 500 double value, radius=0.0; while( 1 ){ radius += 0.064; /* サンプリング周波数に合わせて */ value = sin( radius ) * TOP_VALUE; }
関数を知らんのかと。
>>41 関数ってC言語の関数ですか?
それとも三角関数ですか??
>>43 >>36 の言う「ポイントを出したい」ってのは、
「波形をプロットしたい」という意味ではないかと思ってみたり。
>>1 にいいたい!
ちゃんと名前をネタにしてくれ。つまらなくても何でもいい!
「983 ◆HIHn86y.」←こりゃないだろ・・・
47 :
デフォルトの名無しさん :02/08/05 21:15
どなたか助けてください。 double a; short b; a = 0.29; a = a * 100; b = a; printf("%d\n", b); ってやると28と表示されます。 29と表示させるにはどうしたらよいでしょう?
49 :
デフォルトの名無しさん :02/08/05 21:26
>>47 double型からshort型に変換されたからデータが失われているのでは?
質問! stdio.hって、なんて読むんだ! ストヂオ ドット エッチ?
51 :
デフォルトの名無しさん :02/08/05 21:28
>>48 >>49 ども!
はい。意味はなんとなくわかっております。
こういう場合の定石などありましたら教えていただきたいのです。
例えば、0.1を足しとけ。みたいな。
>>50 俺は
スタンダード・アイオー ドット エイチ
って読んでる。
54 :
デフォルトの名無しさん :02/08/05 21:31
スタンダードアイオーピリオドヘッダー
>>51 とりあえず、整数化する時に 0.5 足しとけ。
56 :
デフォルトの名無しさん :02/08/05 21:33
>>51 short b;
をdouble bにしてみろ。すると、-1になるだろ。
だから、29より1少ない28が出力される。
>>50 そもそもstdio.hとは
スタンダード・インプット・オウトプット.ヘッダーファイル
の略なのだよ。
つまり、stdio.hには正式な読み方はない。
すなわち、自由に発音して結構ということである。
59 :
デフォルトの名無しさん :02/08/05 21:37
>>56 おー。すごいっす。
ひょっとして、これは大きなヒントですか?
ちょっとかんがえてみます。
60 :
デフォルトの名無しさん :02/08/05 21:38
>>58 スケベ・タコ・ダメ人間・インポ・オナニー.変態
の略かと思ってた世
61 :
デフォルトの名無しさん :02/08/05 21:39
63 :
デフォルトの名無しさん :02/08/05 21:40
a = a * 10 * 10; でいけるよ。 0.29 と 100は桁が違いすぎる。
で、結局stdio.hは何て読むの?
66 :
デフォルトの名無しさん :02/08/05 21:41
>>63 うがー。感動しますたー
ちょっといろんな数字で試してみます。
javac ジャバック?
71 :
デフォルトの名無しさん :02/08/05 21:48
>>63 0.47で破綻しますた。
72 :
デフォルトの名無しさん :02/08/05 21:52
Cを理解するならコンピュータの構造を理解しないといけないっていうのは本当ですか? 具体的にはどのようなことでしょうか
>>72 2進数、16進数、論理演算、IOポート、割り込み、etc...
>>60 海馬の奥から呼び覚ましてくれてありがとう(w
78 :
デフォルトの名無しさん :02/08/05 22:04
>>72 最低でも、WindowsXPを設計できるぐらい、コンピュータの構造を理解していないと
文字を画面に出力することは出来ないな。
>>72 最低でも、モニターをチンカスで代用できるぐらい、コンピュータの構造を理解していないと
文字を画面に出力することは出来ないな。
>>72 最低でも、ダスキンにフィルターを交換してもらえるぐらい、コンピュータの構造を理解していないと
文字を画面に出力することは出来ないな。
>>72 最低でも、PCとCRT・LCDの構造について電気電子学・情報科学的に理解していないと、
文字を画面に出力することは出来ないな。
>>81 同感。例えば、マザーボードに乗っているチップセット名だとか。
>>72 最低でも、童貞卒業しないと
文字を画面に出力することは出来ないな。
>>72 まあ、そんなに心配するなよ。
童貞用の言語、BASICがちゃんと用意されているから。
89 :
デフォルトの名無しさん :02/08/05 22:32
おんなは入出力
90 :
デフォルトの名無しさん :02/08/05 22:39
>>72 「最低!! 信じてたのに私をだましたのね!!
私はこれからどうやって生きていけばいいの?
責任とってよ!!!!」
と言われる位コンピュータの構造を理解していないと
文字を画面に出力することは出来ないな。
おんなは入出力
>>63 ,
>>71 俺もこの問題で昔悩みました。
結局、doubleは使わず、固定小数点形式、と考え
100倍に桁上げて整数演算することで逃げたーYO!
93 :
デフォルトの名無しさん :02/08/05 22:50
IOポートってなんですか?
>>94 違うな。
I/Oポート、は「エロポート」の事にきまっとる。
96 :
デフォルトの名無しさん :02/08/05 23:00
出したり入れたりして熱くなるんだよ。
| | | | リッタイテキニ .| | リッタイテキニ | ミエル? | | ミエル? (-_-) | (-_-) (∩∩)───── .| (∩∩)───── / | / / | / / | /
みえるよ。
あの、質問なんですが Cスレの序盤は何故いつもネタスレ化するんでしょうか
立体的に平べったい罠
お前ら大事なものを忘れてるぞ。 角度とかを理解してないと 文字を画面に出力することは出来ないな。
なんかビビビと電波がかけぬけたような気がしないでも無い。
105 :
デフォルトの名無しさん :02/08/06 00:46
ネタすれに質問でいいのかわかりませんが・・・ 最近Javaを使ったWebAPPを作成しているのですが、Excel/Wordを吐き出したい という要望があげられました。 普通どうするのでしょうか? 私なりにJava-JNI-DLL-(ExcelOLE)を呼び出すと考えたのですがDLLって 基本的にVBのActiveXDLLしか作ったことがないんです・・・ そもそもDLLってAPI DLLとActiveXDLLとあると聞いたのですがこの辺詳 しい書籍とかあるのでしょうか?VC++で作ろうとするとテンプレートで MAINDLLだかってメソッドが初期で用意されるんですが、この意味もいま いち謎でして・・ それとも根本的にJava−JNI-DLL(ActiveXDLL)-(ExcelOLE)って不可能? もっともWindows環境でなければ使えない、Javaで.NETソリューションを 扱うなといわれそうですが
誤爆?
107 :
デフォルトの名無しさん :02/08/06 00:47
Windows環境でなければ使えない、Javaで.NETソリューションを扱うな
Excelのファイルを吐くWinサーバーを立ててftpかなんかでゲトってのは?
ソートとサーチのアルゴリズムは覚えるしかないんですか?
>>109 一回本見ながらでも書いて、あとはそれを利用すればいいんでない?
>>110 さん
興味はあるんですけど、いまいち勉強の仕方が分からないんですよね。
質問に答えてくださってどうもありがとうですm(__)m
>109 全てのアルゴリズムを丸暗記する必要はなくて、どういうときにどういうアルゴリズムを 使うべきなのか、ってのをきちんと覚えておけば、あとは必要になったときに 書籍やらネットやらで調べればよい。 まあ、主要なアルゴリズは覚えといたほうがいいかもしんないけど
113 :
じゃかーた :02/08/06 01:33
>>112 さん
ありがとうですm(__)m
あと、本読んでるだけだと、やっぱり上達しないですよね?
プログラミングをスラスラ打てる方は、どうやって勉強したんですか?
是非教えて下さいm(__)m
キューにデータを詰める時、必ずしも順番通りでないデータを順番通りに取り出したい んですが(あるいは入れるときに順番とおりでもいいです。)、調べてみると色々やり かた(アルゴリズム)があるみたいですが、基本的にソートして全部を舐めないといけ ない。これはデータの個数が増えると処理時間も増えてしまいます。とにかく軽くでき ないでしょうか?malloc/freeをその都度しないといけない線形リストもいや〜んな感じです。 ちなみにキューに入れるデータの個数は50個固定だとします。
>114 やっぱ体(手動かして)で覚えるしかないんじゃないかな。 少なくともおれは読むだけでは吸収できない。 >115 50個程度ならあまり違わんと思うが、 配列でやりたいなら、ヒープがいいんでない?
てか、50個固定なら、線型リストでもmalloc/free必要ないけどね
118 :
デフォルトの名無しさん :02/08/06 01:58
キューだけに・・・ qsort
>>114 アルゴリズムは別に覚える必要はあるまい。
「ああいうのあったな」というのと、それが載ってる本さえ覚えておけば。
試験じゃないんだから、本見てプログラム書いたって誰もカンニングとは言わん。
最近じゃアルゴリズムに加えてデザインパターンなんてのも覚えといたほうが
いいようだが、ここはCのスレだしあんまし関係ないな(w
ソートとかサーチみたいなのはプログラマにとって基礎体力みたいなもんで、
経験を積めば普通は自然と覚えるもんだ。
言える事は、一度はきっちりと理解しといたほうがいいということかな。
いろんなアルゴリズムに含まれてるアイデアは全然関係ない局面でも
使える場合が多いから。
120 :
デフォルトの名無しさん :02/08/06 02:14
ずっと心の奥に引っ掛かってたことがあるんです。 15年ほど前にOh!PCかどこかでやってた林晴比古のC言語の入門講座で 関数名は大文字小文字を区別しないというようなことが書かれてた記憶が あるんですが、そういう仕様の処理系ってあったんでしょうか? 当時は大文字小文字を区別しないリンカも多かっただろうけど、 「結果として区別できない」のと「区別しなくてよい」は別物だと 思うんですが。 あくまでも言語仕様は大文字小文字区別じゃないんでしょうか?
>>120 それはいくらなんでもデタラメ過ぎるだろ。
#include <stdio.h> #define PI 3.14 /* 円周率 */ main() { float r, S; scanf("%g", &r); S = r * r * PI; printf("%g\n", S); } こんな感じのを *fp使って、ファイルには1から10の数字は与えられている場合どうするの? 面積計算は必要です。 出力は 1 3.14 2 3 ・ ・ な感じになるようにお願いします
むしろ鼠講?
>115 >キューにデータを詰める時、必ずしも順番通りでないデータを順番通りに取り出したい それはデータ構造にキューを使っていること自体が間違いかもしれないよ。 だって先入れ先出しで処理したいからキューを使うわけでキューの順番を入れ替えるってことは それはもうキューじゃないと思うんだが。
127 :
デフォルトの名無しさん :02/08/06 10:16
すみません。この意味を教えて下さい。お願いします。 int fd=open(filename,O_RDWR);
>>115 > キューにデータを詰める時、必ずしも順番通りでないデータを順番通りに取り出したい
> んですが(あるいは入れるときに順番とおりでもいいです。)
意味が分からん。
「任意の順番で入力されたデータをそのデータのキー順に取り出したい」
ということか?
>126 >129 >130 priority queue じゃないの?
>>131 > priority queue じゃないの?
ならば、Cで無理に実装せずにC++のSTLを使う...
# ってCスレで言ってしまって良いのか?
>>131 それならキューに突っ込む段で並べるからそもそもソートしない
>133 >並べるからそもそもソートしない 並べることをソートというのでは?
キューを使った挿入ソートの一種と見なすならそのとおり
>>134
136 :
デフォルトの名無しさん :02/08/06 14:21
Richard Stevensの詳解UNXIプログラミングで 勉強しています。サンプルコードをコンパイル しているなかでエラーが出たのですが教えて下さい。 apue/signals/setops.cのなかで int sigaddset(sigset_t *set, int signo) { if (SIGBAD(signo)) { errno = EINVAL; return(-1); } *set |= 1 << (signo - 1);/* turn bit on */ return(0); } という個所があるのですが、この関数内における *set |= 1 << (signo - 1); という行においてエラーが出ます。gcc-2.95.4における エラーメッセージは以下の通りです。 setops.c: In function `sigaddset': setops.c:12: invalid operands to binary | これはどういう意味なのでしょうか? 使っているLinuxの/usr/include/asm/signal.hにはsigset_tは #define _NSIG64 #define _NSIG_BPW32 #define _NSIG_WORDS(_NSIG / _NSIG_BPW) typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t; このように定義してあります。 gccのコンパイラオプションで回避できるものなのでしょうか? 使っているマシン(i386)でsizeof(unsigned long)を確かめたところ 4バイトでした。
質問。Cで素数の足し算のプログラムを具体的に教えてはくれませぬか? お願いしますm(_ _)m
#define _NSIG64 #define _NSIG_BPW32 これは #define _NSIG 64 #define _NSIG_BPW 32 の間違いでした。スペース消えてすまそ。
139 :
デフォルトの名無しさん :02/08/06 14:33
>>136 構造体にビット演算は無理だべ。
オプションいじっても無理。
140 :
デフォルトの名無しさん :02/08/06 14:34
入力された文字列を, あらかじめ指定しておいたテキストファイルから削除するには どうすれば良いでしょうか?
141 :
デフォルトの名無しさん :02/08/06 14:35
>>137 質問を幾つか
・出題者が「多倍長」ってフレーズを口にした?
・素数そのものはファイルに入っている?それとも計算する?
・ファイルに入っている場合、素数の桁数はどのくらいあった?
142 :
デフォルトの名無しさん :02/08/06 14:36
143 :
デフォルトの名無しさん :02/08/06 14:40
>>140 テキストファイルを読み込んで、メモリ上で文字列を削除して、
それからファイルに書き出す。
>>141 ・多倍長ってのはいっていません。
・ファイルに入ってるとは素数のプログラムがですか??
・その意味なら入ってはいませんでしたが、問題は100以上、1000
以下の素数のプログラムを作れとのことでした。。
すいません。素数の和のプログラムを作れの間違いでス。。
足し算?
148 :
デフォルトの名無しさん :02/08/06 14:48
素数を足すことになにか意義があるの? かけるならいざしらず
宿題?
>>149 意義はモレも知りませんが、そうゆう問題がでたんですよ。
>>139 なるほど、そうなんですか。ありがとうございます
>>153 つかincludeもその本に載ってなかったの?
>>154 ヘッダファイルは
#include <signal.h>
#include <error.h>
だけです。
どうにも分からないので放置します(笑
>>155 よこレスですが
その本が、コードと解説で構成されているやつでしたら、
割り込みの解説のあたりに、割り込みレジスタの構成(何レベルとか)が
書かれていますので、それに合わせてsigset_tをint等に書きかえれば
大丈夫です。
>>156 おお、そうなんですか。ありがとうございます。
実は本を読まずにまずはコードばかりを動かしてました(汗
シグナルについて書かれた10章をよく読んでみます。
失礼しました。
C言語始めたばっかりで、いまいちわかっていません^^; コンパイルできないのですが…修正をお願いします^^; #define MAX 10 #include<stdio.h> void kan(int a[MAX],int b[MAX],int c[MAX]); int main(void) { int a[MAX]={1,5,3,7,2,10,4,3,8,9}; int b[MAX]={6,1,9,5,4,4,3,3,8,9}; int c[MAX]; int i, total=0; kan(a,b,c) } void kan(int a[MAX],int b[MAX],int c[MAX]); { int i,total=0; for(i=0;i<10;i++) { total=a[i]+b[i]; c[i]=total; printf("%d",c[i]); } }
void kan(int a[MAX],int b[MAX],int c[MAX]);←このセミコロンがいらん {
>>158 次からコンパイルエラーが出たら、そのエラーメッセージをコピペしろ
11行目の
> void kan(int a[MAX],int b[MAX],int c[MAX]);
の最後のセミコロンを削除
あと
> for(i=0;i<10;i++)
で他は全てMAXと書いているのに何故for(i=0;i<MAX;i++)としない?
そこはsizeofで往くべきでは?
total=a[i]+b[i]; c[i]=total; 直接代入したらええがな。
> printf("%d",c[i]); "%d "とかにしておかないと、結果が読みづらいと思われ。
>>161 > そこはsizeofで往くべきでは?
どこを?
ちなみにkanの中でsizeof a / sizeof a[0]を行っても
10にはならないよ。
もう一つあった。 > kan(a,b,c) こっちは最後にセミコロンが抜けてる。
166 :
デフォルトの名無しさん :02/08/06 20:06
えーと、sizeofで疑問なんですけど char buf[256]; とかあったとして、sizeof(buf) は256になりますが、なんでですか? bufというのは256バイトのchar配列の戦闘アドレスを指す constなchar型ポインタだと思ってたので sizeof(buf)で1が帰ってくるのが自然とか思い込んでました。 FAQ見ても説明つからないし。 まあサイズ帰ってきた方が便利なので今のままの方がいいけど
ポインタで1が返っちゃまずいだろ
>>166 > 戦闘アドレス
そんな物はない。はともかく
> FAQ見ても説明つからないし。
C-FAQ 6章 配列とポインターを小一時間読んでみろ
http://www.catnet.ne.jp/kouno/c_faq/c6.html 特に以下の箇所は音読するように
6.2:でもchar a[]はchar *aと同じと聞いたことがあるが。
6.3:Cで"ポインターと配列は同等"というのは何を意味しているのか。
6.9:配列とは定数ポインターにすぎないと説明してくれた人がいた。
158です。下のプログラムでコンパイルできました^^ 助言ありがとうございます! ついでに聞きたいのですが…このプログラムにつぃて口頭試問をするのですが… どういった質問ができるかいくつか教えて(出題して)もらえますか? 自分なりに答えを考えたいと思うのですが^^; #define MAX 10 #include<stdio.h> void kan(int a[MAX],int b[MAX],int c[MAX]); int main(void) { int a[MAX]={1,5,3,7,2,10,4,3,8,9}; int b[MAX]={6,1,9,5,4,4,3,3,8,9}; int c[MAX]; int i; kan(a,b,c); } void kan(int a[MAX],int b[MAX],int c[MAX]) { int i; for(i=0;i<MAX;i++) { c[i]=a[i]+b[i]; printf("%d",c[i]); } }
int main(void)が値をreturnしていないのはなぜか?
まあ ・kanて何? ・MAXを引数にしなかったの? ・printfは何してるの? が最初か
>>169 > どういった質問ができるかいくつか教えて(出題して)もらえますか?
・そのプログラムは一体何をするプログラム?
>>169 ・表示される答えが改行されないけど、君はこれで見やすいのかね?
とか。
すいません^^; 170さんと171さんの2つ目がわかりません^^;
176 :
デフォルトの名無しさん :02/08/06 20:46
x,yで指定したところに文字を出力させるにはどうすればよいのでしょうか
178 :
デフォルトの名無しさん :02/08/06 20:53
>>177 OSはWindows
コンパイラはVC++6、0
>>176 yの分だけ改行してxの分だけブランクを入れる
181 :
デフォルトの名無しさん :02/08/06 20:59
183 :
デフォルトの名無しさん :02/08/06 21:04
で、どうなの?
>>179 せめて都道府県名くらいわからないとどうしようもない。
185 :
デフォルトの名無しさん :02/08/06 21:06
186 :
デフォルトの名無しさん :02/08/06 21:07
x,y(int,int)
174です。 教えてもらえないですか^^;?
>>187 コンソールアプリなのか、windowアプリなのか?
WINDOW!
海外のサイトで翻訳ソフトを使って勉強をしたいと思うのですが, おすすめの翻訳ソフトあります? プログラム的な事って,ちゃんと翻訳されるのかなぁ?
>>191 最低限の英語力付けるだけで十分だと思うけど。
自作とプログラミングの文章に出てくる単語はほんの僅か。
面倒でも英語勉強したほうがいいと思うな.
うーんそうですか。 英語辞書買って,あとはなんかのドリルでも買ってがんばります。 ベイヤフーで検索するんでしょうか(すれ違いぎみ)?
>166 >sizeof(buf) は256になりますが、なんでですか? char buf[SIZE]; と宣言すると式中ではbufはbufの先頭要素を指すポインタに変換される。 このことを知っているとsizeof(buf)はsizeof(char *)と等しいと思うかもしれないが sizeofはこれを"特別扱い"して配列全体のサイズを返す。
英単語調べるだけならedictで十分.
基本的に翻訳ソフトの訳文は笑いたい時に読むものだよ 「激しい穴・・・」とか出てくるからね
>>191 Personal Dictionaryと英次郎を組み合わせる。
これ最強。
バビロンとかよりお勧めだ。
202 :
デフォルトの名無しさん :02/08/06 23:11
がー!バグだー! error C2601: 'main' : ローカル関数の定義が正しくありません。 どういうことだ!どこが間違っているんだ!
>>202 ローカル関数の定義が正しくないようだ。
204 :
デフォルトの名無しさん :02/08/06 23:18
205 :
デフォルトの名無しさん :02/08/06 23:19
>>202 mainを検索する
考える
宣言がたぶん変なんだろう
Windowsでフルカラー表示するためのソースプログラムって どっかにありませんか? コンパイラはBorlandC++使ってます
もう変更する必要のない関数をファイルにまとめて書きこみたいのですが, 普通は,やっぱり変更する必要がなくなっても,その関数が関係のある関数群をまとめたファイルに書きこんでおきますか?
>202 コンパイルが通らないのはバグ以前の問題。がんがれ。
>210 DLLにしちゃえ。
typedef po { char *u; char *c; int aa; } PO_PO, *PPO_PO; #define UHU (*BOKO)(PPO_PO) と宣言した場合、 BOKO というのは実体がなくてもいいの? a = (UHU)uhyo; みたいにかかれているコードが普通にコンパイルとおっているので、 これで問題ないのか先輩がおかしいのかわからないです。 先輩は「これで問題なく動くはず」と公言していますけど・・・
Dev-C++ってどうよ?
>>217 今はβ版だよ。途中でMingW-3.0になったのだが、何か不都合があった
のか、またMingW-2.95.3に戻されているよ。
かなり安定してきた。
会話がわからねーよ ウワァァァァァン
221 :
デフォルトの名無しさん :02/08/07 12:35
あるソースを読んでいて、 typedef type1 type2[6]; /* (1) */ とあり、 type2 val; と使われていました。良く分からないまま、とりあえず、 typedef type1[6] type2; /* (2) */ とは違うものなのだろうかと試してみたところ、これはコンパイルエラーになりました。 質問 (1) は (2)(コンパイルエラーになりますが)のイメージのようなものなのでしょうか? それともまったく違う意味なのでしょうか?
イメージって? 意味がわからん
>>221 要素6っこの配列を作るときに
type1 a[6];
って書くのと同じこと。
>>221 イメージではないです。
言うなれば、テキスト型のバイナリですね。
226 :
デフォルトの名無しさん :02/08/07 13:11
質問です。 #include<stdio.h> int main(void) { int a; while(1){ printf("入力しなさい\n"); scanf("%d\n",&a); printf("%dです。\n",a); } return(0); } これを実行して、最初に1を入力したとします。 すると、変数aには1が代入されて、1です。と表示さますよね。 で、無限ループですから、また入力します。 今度は2を入力したとします。 そうすると、また変数aには2が代入されるはずですよね? しかし、1です。と出力されてしまいます。 なぜでしょうか。
228 :
デフォルトの名無しさん :02/08/07 13:22
>>227 ありがとうございます。
なぜ、\nがあると正しく動いてくれないのですか?
229 :
デフォルトの名無しさん :02/08/07 13:27
コマンドインタフェース仕様のスケジュール管理プログラムの 例題ソースみたいなのどこかにないですか?
>>223 ありがとうございます。
>>222 ,224,225
アホですんません。
なんか、光化学スモッグ注意報が出てて、気分悪いんです。
Java の int[6] val; のイメージだったんだけど、まあそれはどうでも良いや。
> なんか、光化学スモッグ注意報が出てて、気分悪いんです。 ワラタ
>>228 qで終了できるエディタがあった場合、それで作ったテキストファイルにはqは出てこないはずである。
233 :
デフォルトの名無しさん :02/08/07 14:10
:wq 2ch.bbs Σ(゚Д゚) !!!
236 :
デフォルトの名無しさん :02/08/07 15:50
/* 文字列を大文字に変換 */ char *touppers(char *s) { static char buf[256]; char *p = buf; for(;;p++,s++){ *p = toupper(*s); if(*s == '\0') break; } return buf; } このような関数を作ったとき、引数と戻り値は それぞれconst char*にするべきなんでしょうか? いまいち判断基準がわかりません。
>>236 そもそも関数出た時点でその戻り値のアドレスの内容は不定なんだが。
const以前に, 関数内部のバッファのポインタをかえすのはやめましょう.
>>237 > そもそも関数出た時点でその戻り値のアドレスの内容は不定なんだが。
はずれ。
static char buf[256]; なので255以上の文字列を入力せず、
かつ、マルチスレッドで動作していなければ正常に動作する。
char buf[256]; ならば不定。
どっちにしろ次に使うときにその領域は壊されるわけだから 「正常に動作する」とは言えないのでは?
>>240 printf("%s %s", touppers("foo"), touppers("bar"));
でも破綻しますけどね。
staticのアドレスを返すのはinet_ntoa()などでもやっていることで
仕様をきっちり理解したうえで使う分には問題ないですよ。
唯一の問題は論点がずれていることです・・・
>>236 引数はconst char *でいいと思うんだけど、戻り値については、
constなのは戻り値そのものであってそのポインタの指している値ではないので、
const char *touppers() でなくて、char *const touppers() に
なると思うんだが…ちょっと自信なし。
>228 >なぜ、\nがあると正しく動いてくれないのですか? たとえば 10 20 30 をscanfで読みとるときはscanf("%d%d%d", &a, &b, &c);でいい。入力フィールドは空白ではない 文字列とされる。逆にいうと空白文字で区切られているものは自動的にscanfが区切ってくれている。 注意しないといけないのはこの空白文字はブランク、タブ、改行、復帰、垂直タブ、改ページと 定義されているということ。だから 10 20 30 \t \nとあってもscanf("%d%d%d", &a, &b, &c);でちゃんと読み込める。 逆にこれをscanf("%d%d%d\n", &a, &b, &c);,scanf("%d%d%d ", &a, &b, &c);とすると スペースや改行を読み込もうとするけど空白文字に埋もれて見つけることができなくなる。
>>240 ごみん、static見てなかった。
確かに保持されるわ。
でも、トリッキーといいわけ。
>243 char *const touppers() だと「ポインタの指している位置を変更できない」って意味でしょ?変じゃない? たとえば、strlen関数とかに渡せなくならない?やったことないのでわからんが
>strlen関数とかに渡せなくならない? 全然大丈夫だね。寝起きでねぼけてたスマソ
248 :
デフォルトの名無しさん :02/08/07 18:29
たとえば型がhogeの2次元の配列 array[N][M] を宣言した場合には、いつも N × M × sizeof(hoge) バイトの連続したメモリがとられるものと 考えて間違いないでしょうか。それとも連続した M × sizeof(hoge) バイトの ブロックが適当な(一定の)パディングつきでN個とられる場合もあるのでしょうか? そして、それはどこで定めてあるのでしょうか? ANSI?
>>249 そうなの?
多次元配列も要は配列を要素にもつ配列なわけだから
連続したメモリ領域を確保するのでは?
251 :
ふぅ〜 ◆WKHVTRQg :02/08/07 18:48
「先月7/25の、衆院安保委の会議録」を読んでいる内にこの事を歪曲報道した マスコミに怒りを覚えたよ。だって、俺の記憶によると北朝鮮の惨状のみを 強調する内容だった。北朝鮮援助と難民受け入れへの意識を喚起するような 感じだった。 西岡参考人の「北朝鮮問題の本質は安全保障問題なんです。」が一番要約された 一言でキーワードに成り得るのだが。
うわぁ、もろ誤爆スルーしてちょ。
>>250 struct {
long l;
char c;
} a[8][8];
なんて配列があったら大抵の処理系で、パディングですかすかだと思うけど。
255 :
デフォルトの名無しさん :02/08/07 18:58
質問です。 ポインタは具体的にどういうときに使われるのですか? 絶対にポインタを理解しろ言われるのですが、そこまで重要なのですか?
>>255 ポインタ無かったらC使う局面なんて・・・。
>>257 まったくだ。ポインタなかったら誰がこんな糞言語使うかってかんじ。
>>253 それは構造体のパディングであって配列の連続性とは無関係。
>>248 1次元配列作って、自分で2次元的にアクセスしたらいいじゃん
>255 int a=10; int b=20; これを入れ替える void swap(int* a,int* b); を作成する時。 参照とか言われそうだけど。 初心者にはこの辺が一番分かりやすい答えでは なかろうか。 もっと奥の深い質問なら失礼。
>>260 y*(n / x) + n % xって奴ねw
>>255 Dynamicなことやる時、でかい型を引数にとったり返したり。
あとは文字列操作のインサイドを理解する時。
Cしか知らないんだけどCから派生した言語以外にはポインタ(それに相当するもの)ってないの? どの言語にも似たような機能はあるもんだと思い込んでたんだけど
>>264 C++ そのもの+参照
Java 参照
C# 参照
Perl リファレンス
PHP リファレンス
Cから派生してネイティブコードはけるのはC++だけという罠。
>>264 Pascal系にもポインタはある。ポインタ演算ができないので、Javaの参照に近い。
Fortranは 77 にはないけど 90 からは導入されたはず。
>>265 待て。Objective-Cがあるぞ。ネイティブコード吐けるぞ。
江藤 お前には失望した。
いや、謝るべきなのは佐藤だろ。
いや.. 野球板に投稿するつもりが誤爆しちゃっただけなんだけど..
ご、ごめん。
274 :
( ・∀・)ヨロシクね! :02/08/07 20:42
オマエら! 俺にCRCについて原理からプログラミングの仕方まで詳しく教えてください( ゜д゜)タノム!
>ポインタは具体的にどういうときに使われるのですか? >絶対にポインタを理解しろ言われるのですが、そこまで重要なのですか? 絶対に理解しましょう。重要です。というか基本です。 今でも知らずにポインタを使っているはず。 必ずでてくるのが参照渡し。261のswap()関数ね。引数の値を操作しようとするときはポインタを 渡さなくちゃならない。 それから関数に配列を引数に渡したい場合。配列そのものは渡すことができないのでポインタを 渡す。 後は文字列。文字列リテラルなんかはポインタに変換されて扱われている。
556
>>275 引数いじるって邪道な気がするけどね。
無名構造体とかできればいいんだろうか?
関数呼び出しもポインタに属する。
そういえば配列そのものは引数として渡せないけど 構造体はそのもの自体渡せるんだよね? じゃあ構造体の要素に配列があった場合はどうなるのですか?
スタックがあふれそうなので構造体はあまり渡さないでください(ポインタを渡してください)。
>>279 もちろん引数として渡すこともできるし、代入もできる
>277 >引数いじるって邪道な気がするけどね。 引数いじる関数って標準関数でもいくらでもありますけど。fgetsとか strcpyとか 全部そうだし、、、。何で邪道?
284 :
( ・∀・)ヨロシクね! :02/08/07 21:08
教えてくれょぅ(=゚ω゚)ノ
>>284 知っているところまで書いてみたら?で、わからないとこを聴く。
286 :
( ・∀・)ヨロシクね! :02/08/07 21:11
>>285 正直CRCについては全くわかんないのです。
検索かけていくつかソースみたんですが、さっぱりでした。
>>283 いや、概念的によ。
ある引数を入れたならある戻り値が帰ってくる。
あくまで引数はinputであるべきじゃないのかと。
だからPerl見たいに戻り値を複数返せるようになってたらいいんじゃないのかと。
288 :
デフォルトの名無しさん :02/08/07 21:37
>>287 ポインタを引数にして、メンバへのポインタ演算子を使った値変更も不可ってこと?
>287 >ある引数を入れたならある戻り値が帰ってくる。 >あくまで引数はinputであるべきじゃないのかと。 気持ち的には分からなくもない。けど実際複数の返値は返せないし配列も返せないから そういう場合は仕方ない。そのためにconstがあるわけだしポインタさえ渡さなければ 変更されない、逆にポインタを渡すのは操作を許すということだからこの仕様はそれなりに いいと思う。個人的にはC++の参照渡しの方が怖い。 よそのHPで自分よりスキルがあると思われる人ってサンプルコードをみると大抵ポインタを渡して 関数ないで操作してるんだよね。何でかなと思っていたら大きいプログラムを書く場合は大抵 エラー処理用に戻り値を使うからだと気がついた。だからちょろっとしたサンプルコードを 書くときは返値がvoidでポインタを渡すような関数を書いている。
>>289 > 大きいプログラムを書く場合は大抵エラー処理用に戻り値を使うからだと気がついた。
だからC++とかは例外があるんだよね。(他にも理由はあるが)
エラー処理は例外、戻り値は戻り値として使えるから。
291 :
デフォルトの名無しさん :02/08/07 22:16
質問します 今基礎的な算数のプログラムをやっているのですが #include <stdio.h>の下にくるのが ある本には"int main(void)"とかいてあって ある本には"main()"とかいてあります また ある本には最後に"return(0)"といれるようにいってあるのに ある本にはなにもいれてません そして どっちの方式でやっても結果は変わりません どうしてでしょうか
またある本には void main(void) や int main(int argc,char **argv) などとかかれています。
>>291 C言語なら引数なしの括弧だけは評価されない
mainのreturn 0は明示的にやらないとシステムがやってくれる。
294 :
デフォルトの名無しさん :02/08/07 22:20
>>291 int main(void)とmain()は同じ。
正しくはint型(例えば0)を返すべきだけど、コンパイラによってはエラーにしない。
相当良くある質問だけど、 気にしなくていいよ。 理解できる時になれば一瞬で理解できるから。 多分あなたのレベルじゃ >293は理解できないでしょうし。 嫌味じゃなくて、いい意味でいまは置いておくことを 薦めるよ。
俺の本なんてdouble main(void)だぜ。
ということはグローバルやスタティック変数使わなくても 要素が配列ひとつだけの構造体を作れば 配列の値渡しが出来るというわけですね? まあそんなことする必要性があるかどうかはわかりませんが 可能か不可能かということなら可能ということですよね?
>>297 一行目の意味がわからんが、可能なんじゃないかしらん?
Javaとかだとそうするみたいだし
299 :
デフォルトの名無しさん :02/08/07 22:30
300 :
デフォルトの名無しさん :02/08/07 22:32
質問に答えてくれた方ありがとうございます ではとりあえずどっちでもいいということで保留しときます きっとそれだけ自由な言語なんですね
302 :
デフォルトの名無しさん :02/08/07 23:16
int型って、4バイトだったり8バイトだったりするらしいけど、 それはソースをコンパイルするパソコンによって違うの? それとも、コンパイル後にできた実行ファイルを実行する パソコンによって違うの?
>>302 そら、ターゲット依存にせざるを得ないわな。
いや、あの void main(void) とか書いてある本って、捨てたほうがいいと思うんだけど。 書いたやつの規格の理解が怪しい証拠だし。
8バイト… いや、つっこむのも大人気ないとは思うんだが。
>>306 ILP64モデルのコンパイラなら、intが8バイト(64bit)になるよ。
310 :
( ・∀・)ヨロシクね! :02/08/08 01:02
>>307 早速そのHP読んできます。
アルゴリズムの本には手を出すなと昔ここでいわれたのでいまだに読んでないんですよ。
とりあえず立ち読みしてみるとこにします。。情報ありがとうございました
>>308 とりあえずダウソしてみました。
今中身みてますが、やはりわかんないかも・・・
とりあえず
>>307 が教えてくれたHPに概念がのってるので、それ読んだあと再度見てみます。
ありがとうございました
>>305 そう言う台詞はC言語まともに使いこなせるようになってからほざくもんだ。
お前とそのクソ本、どっちがCの知識が多いかと言えば後者だからな。
クソながらお前より賢い先生だ。無礼は許さん。
>>311 よくわからんが、嘘を堂々と書くやつは知識の多寡に関わらず賢くないと思うけど。
しかもC FAQにさえのってる有名な事例だ。それすらも知らんで知識多いの?
無礼かどうかはしらんが、嘘つきと無礼なやつだったらおれは無礼なやつを取るけどな。
いつもmainの定義ではつまんない議論になるな。 どーでもいいやん。 scanfの腐った仕様とかのほうがよっぽど問題だ。
>>313 どうでもいいといえばどうでもいいんだけども、
クズ本で勉強してきたヤシがいっぱしのプログラマでございなんて
顔されるのがたまらんのだよ。無論そいつは被害者なんだけど。
クズ本のせいで何人ヘボプログラマが生産されてることか。
こっちと関係ないところでひっそりと生きていてくれればいいんだけど、
そうもいかんしな。おい、K、おまえだよおまえ(w
だからクズ本はクズ本と言うようにしてるんだわ、おれ。
荒れる原因になりかねないからちょくちょくは言わんけどさ。
mainの定義くらいだったらかわいいもんだけどさ、
裏返すとそれすらもちゃんと知らないヤシが書いた本なんて推して知るべしだろ。
おい、おまえが適当に書き飛ばしてくれた本の尻拭いをなんでおれが、
と何度思ったことか。特にM田、貴様だ。
つかM田は書き飛ばしたわけじゃないらしいのが深刻なんだが(w
そういうわけで私怨が多分に入ってるよ、おれは。
あーあ。
俺かよ!!
本のせいにするなヴォケェ
319 :
デフォルトの名無しさん :02/08/08 10:00
なんでみんなよってたかってリエントラントなコードにしろって そんなにスレッド作りたいのか? あ?
>>314 誰もそんなこと言ってねぇよ。
大して勉強もしてねぇくせにステレオタイプで
この本クソなんですけど〜?
とかほざく厨房に死んでもらいたいだけだ。
321 :
デフォルトの名無しさん :02/08/08 11:56
配列ってどうやって宣言するんですかぁ?
配列ッ!
地球圏の重力に引かれた愚民どもよ。 私はここで高らかに宣言する。 我が、ジオン公国は配列を使用することを! ジークジオン!
脱ダムってどうやって宣言するんですかぁ?
この脱ダムが押されている!?さすがだな、シャア! くっくっく、まだまだ私には勝てんよ、アムロ。
326 :
API学くん :02/08/08 12:13
質問です。 関数の引数の中に「0L」と言う表現があるのですがどういう意味でしょうか? どうも零のことらしいですが、わざわざLを付ける意味がわかりません。 VC++の例文に載っていたのですが、これがC言語のものか、C++のものか、VC++固有 の表現なのかもわかりません。 よろしくお願いします。
0L ←ヨコカラミルト、キョンシー
329 :
API学くん :02/08/08 12:21
>>327 どうもありがとうございます。
longを明示したわけですね。
あと「0L」はC言語のものか、C++のものか、VC++固有の表現なのか教えて頂けないでしょうか。
C/C++の仕様です
>>330 わかりました。どうもありがとうございます。
API教えて君 にハンドル変えたら?
ネット(and人間)をマニュアルがわりに使うやつ氏んでほしい
0L ←OL萌え
>>333 ネットはいいだろう。リファレンスやTIPSとしてなら。
基礎知らないと全く役に立たないけど。
基本は本で体系的に学ぶのがいいと思うけどね。
ネットはいいね。 「人間を検索エンジンの変わりに使ってる奴」に訂正。
>>337 ははっ 「変わり」 だってさ。ダサー
一生の恥だなおめー
340 :
デフォルトの名無しさん :02/08/08 17:16
また蒸し返しのようにmain()の話ですみません。 int main(int argc, [以下略]と書いても、 void main(void)と 書いてもwarningが出ない、ってのはなぜですか? main()のプロトタイプは どこにあるのでしょうか?
343 :
デフォルトの名無しさん :02/08/08 17:26
>>340 mainのプロトタイプ?
自分でかかなければあるわけねーだろ。
>>340 Cはターゲットと開発機のOSやCPUなどが全く違う状態で開発できるようになってます。
つまりmainの返り値や引数は、ターゲットの環境に依存するわけです。
ですからmainは自由なI/Fで記述できるようになっています。
347 :
デフォルトの名無しさん :02/08/08 18:25
>>340 > warningが出ない、ってのはなぜですか?
そんなもん、コンパイラによるだろ。
test.c void main() { } #2cc test.c ゴルア(`Д´) test.c(1) > void main() <小一時間問い詰めたい
>>349 segmentあぼーん。
メッセージで信用丸つぶれ。しかも、coreの代わりにエロファイルが。
351 :
デフォルトの名無しさん :02/08/08 18:49
Pro*Cのコンパイル方法教えてください。 とりあえず、ためしにやってみました。 proc test.pc cc -c test.c cc -o test test.o Oracleのライブラリをリンクしたいんですけどどうしたらいいでしょうか?
352 :
デフォルトの名無しさん :02/08/08 19:02
>>351 スレ違いだし、なんでヘルプを読まないのかな?(怒)
354 :
デフォルトの名無しさん :02/08/08 19:05
>350 だが、エロファイルを袖の下にして信用回復。 >351 Oracleのmakefileを改造。 でもライブラリを特定してリンクしたいとかだったらスマソ。
>>357 ひろゆき、割とUNIX互換OS manax 発表。
359 :
デフォルトの名無しさん :02/08/08 19:19
>>355 そうなんです。makefileがわけわかんないんで。
ひとつひとつやってみたいんですけど。
>>345 うーん。ご指摘の点ですけど、
ターゲットが違うんなら、仮におなじホストでおなじコンパイラ使っててもインクルードする
ファイル(の置き場)も変わるものなんではないかと思いますけど...
(つまり、ターゲットがいろいろあるって事実は、mainのprototypeが存在しないこと...
「自由なI/Fで記述できる」ってのの理由になってるんでしょうか?)
で、343さんや344さんの言うように、mainのプロトタイプは、ふつうは存在しないってのは
正しいんでしょうか?なんかの規格上、存在しないってきまってるものなんですか?
>>341 正確な知識が得たいんです。
知るかヴォケ、って言われそう。
>>360 規格で決まってるらしい。
C言語のJIS規格X3010-1993には、
「プログラム開始処理において呼び出される関数の名前は、mainとする。
処理系は、この関数に対して関数原型を宣言しない。」
との記述がある。
363 :
デフォルトの名無しさん :02/08/08 20:11
1から10までの数字をランダムに毎回実行する ごとに順番を入れ替えるプログラムを 作ってください。
>>363 そういうのは、現在時刻、またはプロセス番号をキーに
乱数を作ればいいんだけど、環境に依存するよ。
誰かが作っても君の環境で動作するとは限らない。
>>366 実行開始ごとに乱数系列が初期化されるから、単にrand()を使っただけだと
毎回同じ結果になってしまうよ。
それを避けるためには、
>>365 の言うように何らかの外的要因による初期化が
必要で、その手段は実行環境に依存する。
>>365 ,367
動作しなくても、参考になるので
誰か作ってください。
宿題かのう?
そんなとこですか。
あたま痒いとこありますか?
座標60.0681、48.2218のあたりが痒いです
system("ls %s"〜 のようにsystem関数で変数をいれたいのですが、 どのようにすればよいのでしょうか?
PGに向いて無くても構いません。
>>376 char tmp[256];
sprintf(tmp, "ls %s",殻);
system(tmp);
こんな感じかな?
>>363 int _Rand( int n ); // 0〜nを返す
int main( void )
{
int b,i,n,a[10]={1,2,3,4,5,6,7,8,9,10};
for(n=0;n<9;n++) {
i=_Rand(9-n);
b=a[i];
a[i]=a[9-n];
a[9-n]=b;
}
return 0;
}
関数の戻り値でPOINT型やint型などがあるのですが, これを関数名でわかるようにしたほうがいいのでしょうか? point_kakezan();
場合によりけり。 同じ機能で型違いっていうのなら関数名に型情報を 持たせたほうがいい。 fabsとabsなんて良い例なんじゃないかな?
BOOL Hantei( void ) { int i; for(i=0;i<Cnt;i++) { if( Data[i] >= 1 ) return TRUE; } return FALSE; } これぐらいでも関数にする時ってありますか? 今関数100個くらいあるんですが ひとつのファイルに20個くらいも書いてあるのはありですか?
>>384 それぐらいでも関数にする時ありますよ
ファイルは機能別に分割した方がいいでしょう
387 :
デフォルトの名無しさん :02/08/09 00:16
マクロにしろよ。
>>387 思想が危険。inlineでいいじゃん。
マクロにしたらソースが真っ黒
ウワッ...
392 :
デフォルトの名無しさん :02/08/09 00:54
C言語でスロットのゲームを作りたいと思っています。 可能でしょうか?また、そういったものを作られた経験のある方はいらっしゃいますか?
395 :
デフォルトの名無しさん :02/08/09 01:01
>>394 ヴィジュアルC++のコンソールアプリです。
フラグの成立に関する関数って存在しますか?
>>395 フラグの成立?
何言ってっかわかんないけどそんな関数ありません
>>392 #include <stdlib.h>
#include <time.h>
#include <stdio.h>
int main(){
time_t tt;srand(time(&tt));
while(getchar()!=EOF)
printf("%d",rand()%10);
return 0;}
例えば、 {12345678901234567890} 上のような個々の数字(または文字)をランダムで1つ選ぶ、みたいなモノです。 スロットはレバーをたたいた時こんな風にフラグ(ベルやスイカ、チェリー等の役)をランダムで決めてるので。
bool IsFlagOn(bool Flg){ return Flg; }
>>398 ランダムで決めるヤツですよね?
すいませんがほんとに簡単でいいんで解説お願いできますか?
void kan2(char *); void kan( void ) { char box[20][20]; kan2(&box[0][0]); } void kan2(char *box) { for(int i=0;i<10;i++) box[0+i]=i; } を, void kan2(char *box) { for(int i=0;i<10;i++) box[0][i]=i; } という風に使いたいのですが,kan2のプロトタイプ宣言の仕方とchar *boxをどのようにすればいいのかわかりません。 教えてください。
>>395 time(NULL);現在時刻を返すかもしれない
srand(time(NULL));ランダム系列を現在時刻で初期化
getchar();一文字読み込む、もうなければEOF
rand();擬似乱数を返す、系列はsrandで初期化済み
rand()%10;0から9に限定
printf("%d",rand%10);それを表示
>402 void kan2( char **box ); あと、普通は kan2( box ); と呼び出すと思うんだけど
>>402 void kan2(char box[20][20]);とか
void kan2(char box[][20]);とか
void kan2(char (*box)[20]);
kan2(box);
プロトタイプ宣言にboxとかいれてもいいんでしょうか?
>406 いいよ。てか、普通は入れる。引数の意味が分かりやすいように
Cはじめて1年半知らんかった 全部void kan( int, int ,char ); とかにしていた・・・ 鬱だ,がんばろう
>>409 1年半じゃしかたないね。 オレは歴10年でやっとモノにしつつある感じ。
おれとあんまし変わらないけど(さりげなくイヤミ) >1年半
学生で古い本だけをみてやってるとそうなるだろうね。 つーか、C/C++ってプロトタイプ宣言が必要だから嫌い。
プロトタイプ宣言が無いと面倒くさくていや。 タイプミスがバグに直結するんだよ? それでもいいの? タイプミスをコンパイラがはじいてくれる・・・こんなにうれしいことはない
if(0){ (デバッグ処理); } と書くと、この部分はコンパイルされませんか? それとも、 #if 0 〜 #endif でくくらないと駄目ですか?
>>416 > と書くと、この部分はコンパイルされませんか?
処理系と最適化オプションによる。ちなみにgccの場合は無視される。
> #if 0 〜 #endif でくくらないと駄目ですか?
この場合は処理系、最適化オプションに関わらずに必ず無視される。
typedef struct{ char *lpBox; int nu; }Box; これで,Box.lpBoxに5つの配列を動的に確保し,そのあとmemsetでBoxを初期化(0でメモリの塗りつぶし)したら,どうなりますか? それとBox.lpBoxを開放したあとに,memsetした場合はどうなりますか?
自販機のプログラムを作れっていわれたらどんな感じにします?
>>416 無視されるがコンパイラは検索するので
SJISで「/* ここで「表示」します */」なんでいれてもエラーは出る。
#ifdefでも。
gccだとね。
>>418 ポインタを初期化したら解放できないだろ。
解放した後にそのポインタに触れるのはご法度。
>>419 昔、どっかでプログラムの学習ででてきたやつだな。
「最初にお金を入れて、次にボタンを押して」
とかいう。
宿題は宿題スレにいきな。
typedef struct{ char *lpBox; int nu; }Box; これで,Box.lpBoxに5つの配列を動的に確保し, Box.lpBoxを開放したあとに,memsetした場合は安全ですよね? このあと,またlpBoxに動的に配列を確保したりしてもいいですよね?
いいよ、好きにしな。
本当のところは?
2chでの回答をお前は信用するのか? 無意味だろ。本なり信用できるネットで調べてこいよ。 で、俺の信用できない意見でいいなら 「かまわん」
俺の信用できない意見はこうだ。 「配列を5つも確保してどうする」
428 :
デフォルトの名無しさん :02/08/09 11:52
最近何処かで見たソースで、処理用の領域を関数内部でmallocで確保して、 returnの直前でfreeして、そのfreeした領域内の値をreturnしているものが あったんですが、これって許されることなんですか? 返す値を別の変数に保存してからfreeして、保存した値を返すようにすべきじゃ ないかと思うんですが。
だめにきまっとる。 それに 「何処かで見たソース」 でなくて 「自分が作ってしまったソース」 だろ。正直に書くように。
>>428 freeした後に、その領域にアクセスしちゃいけないよ。
ヘッダファイルに出来る事はなに?
>>432 と、いうことは、こんなプログラムを書いていいれすか?
main.c の中身
#include "input.c"
#include "calc.c"
#include "print.c"
それはあなたの自由です
>>433 文法的には可能。
ただそれをやると君のコーディングセンスが疑われる諸刃の剣
素人にはお勧めできない。
ヘッダファイルをプログラムの最後に置いた場合、 「テイルファイル」に名称変更してもいいれすか?
>>336 駄目です。
「フッタファイル」ならば許可します。
えーん、ポインタって難しいよ。
ところでチョット疑問
>>0 ってどうなるんだろう?
ど う も な ら な か っ た ね
質問。 N88BASICみたいに 絵を書くことは出来ますか?
>>442 なーんだ。できないのか。
CってN88BASICより劣っているんだね
なんてレベルに低い言語だ
>423 >これで,Box.lpBoxに5つの配列を動的に確保し, >Box.lpBoxを開放したあとに,memsetした場合は安全ですよね? ネタなんだかわからんがマジレスします。全然安全じゃありません。 構造体で考えるから難しくなるんでしょう。何でもプリミティブな形で 考えればいい。要はこういうことでしょ。 char *cp; cp = malloc(5); free(cp); memset(cp, 5, 0); freeしたあとのcpには何かしら有効なポインタを指す前にアクセスしてはいけない。
>>429 自分でそんなコード書いたらとてもこんなとこで晒せませんて。
記憶を辿ってハケーンしますた。
ttp://www5.airnet.ne.jp/tomy/cpro/sslib9.htm ここの
double lagra(double xx[], double yy[], int n, double xi)
double splint(double xx[], double yy[], int n, double xi)
の中でこんな記述が。
if(*p++ == xi)
{
free((char *)x);
free((char *)y);
return *(y + i);
}
freeしてすぐだからって駄目ですよね?こんなの。
啓学出版の「C言語による科学技術計算サブルーチンライブラリ」
(黒瀬能聿・松島勇雄・松尾俊彦 共著)という本をベースにしてる
そうですが、この本誰か知ってますか?
信頼に足る本なんでしょうか?
Pro*Cのmakefileできましたよー これでさらに無敵になりました。
>>446 その本はしらんが、そのコードはダメだ。
そのページのやつがダメなのか本がダメなのか判断つかんが。
>>446 そのページのソース、なんか、途中で面倒くさくなったらしくて、
3つcallocして、どれかがNULLならfreeしないでreturnしてるね(w
まぁ、危険なところは書き直して吉。
大昔のUNIXではfreeした直後のポインタをreallocで復活させる ことが許されていたそうな。くわばらくわばら。
>>450 復活できなかったら別の領域が確保されてreallocの戻り値で
返されるとかいう仕様?
無条件に復活できるわけじゃないでしょ?
新規にmallocせずに必ず復活できると限らんものをreallocしたい
心境が分からんが。
右脳系プログラマですが、何か?
>399 「ランダムで選ぶ→rand()を使用」って書いてあるのにアフォですか? ちなみにスロットのドラムは一定方向に回転しているだけなのでランダムで選ぶのはどうかと。 実機で絵柄が飛ぶように見えるのは、ボタンを押した瞬間に滑らせる(=役が揃わないように高速でドラムをずらす)からだよ。 とりあえず今後はゲ製版へ逝ってくれ。
Objective-Cっていうのはアレかい? Macで使われてるのかい?
>>454 NULLが有効なアドレスだと思ってんのか。
わかたーよ ポインタのメンバ以外memsetするーよ
>NULL入れた後はOK? >わかたーよ >ポインタのメンバ以外memsetするーよ たぶん全然分かっていないと思うけどこれなら可能。 typedef struct{ char *lpBox; int nu; }Box; int main(void) { Box box; memset(&box, 0, sizeof(Box)); printf("%p, %x\n", box.lpBox, box.nu); return 0; }
460 :
デフォルトの名無しさん :02/08/10 02:12
みなさんプロのかたばかりですか? C勉強中ですが レス見てもぜんぜん理解できません はぁー
>461
素人のしったか君の方が多いです。ご安心を。 そんなあなたも3ヵ月後には 「NULLポインタ?お前ら読み方はナルが正しいんだぞ、厨房がぁ!」 とかさらりと言えるようになります。
>>463 どうしても「NULL」を「ヌル」と読んでしまう漏れはぬるぬるですか?
>>463 warningはウォーニングとは読まないのですか?
宿題スレってどこにあんの?」
探し出した者だけが答えを貰えるという・・・
伝説の・・・
検索
あ、見つけやがった。
>Borland C++で自販機作ってください。 (;´Д`)
しかし、それはもう何百年も前の話・・・
質問です。 #defineで宣言するのが多くなったので、他のファイルに分けたいのですが どうすればよいのですか?
476 :
デフォルトの名無しさん :02/08/10 14:26
>>475 defineのファイルをインクルードしなさい
477 :
デフォルトの名無しさん :02/08/10 14:26
毛筆で
480 :
デフォルトの名無しさん :02/08/10 14:38
まじれす #ifndef HOGEHOGE_H #define HOGEHOGE_H #define xxxxxxxx #define xxxxxxxx : #endif
482 :
デフォルトの名無しさん :02/08/10 14:46
>>481 ありがとうございます。
これをヘッダーファイルにして
インクルードすればよいのですね?
>>475 現時点でどういうファイルがあって、
どのファイルで#defineの宣言が多くなったのかを言わんと。
です
485 :
デフォルトの名無しさん :02/08/10 14:52
ところで、 #ifndef HOGEHOGE_H #define HOGEHOGE_H のHOGEHOGE_Hってなんれすか?
ヘッダファイルが多重にインクルードされることのないように。 HOGEHOGE のとこは何でもいいのれす。
488 :
デフォルトの名無しさん :02/08/10 15:08
ヘッダーファイルはどこに保存すればいいのですか
490 :
デフォルトの名無しさん :02/08/10 15:11
>>489 まじです。
お願いだから、マジレスしてください。
>>490 HDDに。
つか
#include <hogehoge.h>
とやってないだろうな?
#include "hogehoge.h"
カレントに置く場合はこうしませう。
493 :
デフォルトの名無しさん :02/08/10 15:15
>>491 インクルードファイルが見つかりませんって言われるのですが…
495 :
デフォルトの名無しさん :02/08/10 15:30
どういうことですか?
ポカーン( ゚Д゚)
497 :
デフォルトの名無しさん :02/08/10 15:33
ディレクトリ名を入れないといけないのですか?
それでいいよ
500 :
デフォルトの名無しさん :02/08/10 15:39
いいえ
>>500 ,;⌒⌒i.
ノノノノ⌒ヽ ( ;;;;;) ______
(゚∈゚ ) ミ) ,,:;;;). .| .|
/⌒\/( ) ヽ| |/ |;,ノ | 樹海 |
( ミ ∨∨ | / .,i |______|
ノ / | | ,,i; ,, . ,;⌒‖
( \/ヽ ,,,丶, | |,,,;. ;i, .‖ヽ
\ ) ) .. ,, ´ヽ (,, ‖丿.,,,
/// ,, ,, .. ´ヽ ‖,,, ..,
`ヾ ヽミ ,, .、 ヽ .. ヽ丶,.ヽ ‖、,,
502 :
デフォルトの名無しさん :02/08/10 15:41
あ、できた。
そんな事より1000よ、ちょいと聞いてくれよ。スレとあんま関係ないけどさ。 昨日、近所のム板行ったんです。ム板。 そしたらなんかCを理解してる人がいないで語れないんです。 で、よく見たらなんかC言語を習得するには20年かかると書いてあるんです。 もうね、アホかと。馬鹿かと。 お前らな、C如きで普段来てないム板に来てんじゃねーよ、ボケが。 Cだよ、C。 なんか親子連れとかもいるし。一家4人でム板か。おめでてーな。 よーしパパ勉強しちゃうぞー、とか言ってるの。もう見てらんない。 お前らな、VCからCを勉強と。 ム板ってのはな、もっと殺伐としてるべきなんだよ。 モニターの向こうの奴奴といつ喧嘩が始まってもおかしくない、 刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。 で、やっと語れたかと思ったら、隣の奴が、Cは関数の集まり、とか言ってるんです。 そこでまたぶち切れですよ。 あのな、Cは関数の集まりなんてきょうび流行んねーんだよ。ボケが。 得意げな顔して何が、Cは関数の集まり、だ。 お前は本当にCは関数の集まりを言いたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。 お前、Cは関数の集まりって言いたいだけちゃうんかと。 ム板通の俺から言わせてもらえば今、ム板通の間での最新流行はやっぱり、 繰り返し文、これだね。 無限繰り返し文while。これが通の頼み方。 繰り返し文ってのは同じことをさせる。そん代わり楽。これ。 で、それに無限while。これ最強。 しかしこれを頼むと次から日本政府にマークされるという危険も伴う、諸刃の剣。 素人にはお薦め出来ない。 まあお前らド素人は、BASICでもやってなさいってこった。
>>500 とりあえず、コンパイルする.cファイルと同じディレクトリに自作のヘッダを
おいてください。includeは<>じゃなくて""で囲ってください
>VCからCを勉強と。 >モニターの向こうの奴奴
506 :
デフォルトの名無しさん :02/08/10 16:21
ちょっとwebさまよってて見かけたんだけど double a = 74.58; double b = 0.33; double c = a/b; int d = (int)c; とすると c=226.0 なのに d=225 になるらしいんです。 実際やってみたら確かにそうなる。 floor(c)でも同じ。 まじ怖いと思った。どうやって回避すればいいんですか?
cが厳密には 225.999・・・ になっていて、整数にするとき 端数が切り捨てられただけでは
桁上げしてintで計算しる!
>>507 >>508 微小量を cに足してやった上でint にするというソリューションが、載ってい
た記憶があるんですが、それはそれで、真の解ではなくなる可能性もあるんですよね...
>>508 数値計算のようなアプリケーションでは、ちと辛いような気も...
>>510 BCDとかBIGNUMを使う、分数は分数のまま持って歩く。
無知は怖いねぇ
513 :
デフォルトの名無しさん :02/08/10 19:36
「int x, *p;」とした時に「p = &x;」は出来るのですが、「&x = p;」が出来ません。 (エラーの内容は「左のオペランドが左辺値になっていない」です) 何故エラーが出るのかどなたかご教授していただけないでしょうか。お願いします。 int main(void) /* sample.c */ { int x, *p; &x = p; p = &x; /* error */ return 0; }
すみません、間違ってソース書いてました。修正します
p = &x;
&x = p; /* error */
>>514 さん
どうもです。でも、代入すら許されないのでしょうか?
アドレスは変えられないんでした・・・。逝ってきます
>>514 さん、有難うございました。
質問です。 どうやったらチンカスを出力できますか。 printfでやったけどできませんでした。
KISS(Keep it simple, stupid)の原則ってどういう意味なんですか? 「単純にしろ、間抜け」?
>517 printf("チンカス\n");
521 :
デフォルトの名無しさん :02/08/10 20:40
http://www.kumei.ne.jp/c_lang/intro/no_26.htm の下のほうの「MS-DOSのエスケープ・シーケンス」のところで、
printf("\x1b[4;31m");
とあるところなのですが、色が変わらず、┘のような
変な文字列が表示されるだけでうまく動きません。
色の変更をしたいときは、Cではどのようにしたらいいですか。
OSは WinXP Home
コンパイラは Borland C++ 5.5.1 for Win32 です。
>>521 >(*注)同じMS-DOSでもたとえば98シリーズと FMシリーズではカラーコードが違っています。
>他にも微妙に違うところがあるかもしれません。
>お使いの機種で本章のプログラムがうまく動作しない場合は、無視して下さい。
>本章以降のプログラムについても同様です。
超FAQだが、NT系Windowsではコンソールで ANSIエスケープシーケンスがつかえねーんだってば。
>>522-523 見落としてました。
代替法を伝授していただきたいのですが。
# sage 進行スレでageてゴメソ
525 :
デフォルトの名無しさん :02/08/10 20:55
>>524 質問くらいageてもいいだろ。
/* 折れはかちゅ〜しゃだしね… */
526 :
デフォルトの名無しさん :02/08/10 20:58
>>524 sage進行じゃねーぞ。sageる人がこの板に多いだけ。
質問はなるべくageてね・・・
スレ違いかもしれませんが教えてください 最近C++を勉強していますが Cに慣れてるせいか所々詰まってしまう部分があります 特に「参照」がソース中に出てくるとつっかえてしまいます 一応機能や文法は理解しているのですが本の中だけで理解しているだけです 実用的なソースはまだ見ていないのでわからないのですが 基本的にポインタで代用可能という判断を下したのですがどうなんでしょう? 参照には出来てポインタでは出来ない事とかあるのでしょうか? 個人的に参照はあまり使いたくないと思っています。
>>527 nullは取れないのでエラーをどう表そうか悩む。
本来、ポインタのよる参照渡しはリーガルな方法ではないし問題も多い。
だから参照というものが導入された。
>524 確実なのはSetConsoleTextAttributeみたいなAPIを叩く、くらいしか、、 >527 >参照には出来てポインタでは出来ない事とかあるのでしょうか? T& operator + ( const T &lhs , const T & rhs); T ret = T(1) + T(2) + T(4); >528 引数として参照があるのは、「エラー状態はいらねー」という意思表明ナリ 返値としてなら、例外投げれ
ソースが長くなったので他のファイルに分けようと考えているのいるのですが どうすれば良いのでしょうか。
>>529 int &getref()
{
int &a = some_valiable;
return a;
}
getref() = 32;
532 :
デフォルトの名無しさん :02/08/10 21:34
>>530 関数単位で分けて書く。
一つの関数を複数のファイルに分けて書くことはできないはず。
>>532 これを別のファイルに保存して、それを読み込む方法を聞いているのですが…。
534 :
デフォルトの名無しさん :02/08/10 21:38
>>533 は?
コンパイラの使い方を聞いているの?
そんなのコンパイラの説明書をみればいいじゃない。
#includeは使うなよ。
>>536 535は単に*.cを#includeするなと言ってんじゃない?
分割コンパイルの方法を聞いているのですが...
540 :
デフォルトの名無しさん :02/08/10 21:47
>>539 じゃあ使っているコンパイラを教えてよ。
>>539 もっと具体的に言え
分割コンパイルの方法を1から説明しろと言うとるのか?
>>539 単に別々にコンパイルするだけです。
実行形式にするときにはコンパイルしてできた
オブジェクトファイルを必要なだけリンクします。
544 :
デフォルトの名無しさん :02/08/10 21:49
プリプロセッサ、コンパイラ、リンカーなどを総称してC処理系と言うんですか?
>>527 C++相談室スレで質問して貰った方がいいのかもしれないけど…
参照は基本的にポインタで代用可能という判断で正しいと思います。
必要を感じなければ積極的に使わなくても良いのでは。
私が参照を使う場面というと、ネストしたクラスの奥深くにアクセスするときに
参照で短い別名を付けるというpascalのwith文のような使い方とか、
関数内部で変更しないクラス引数をポインタ渡しにすると呼び出し側に
実体の変数が必要だけど、const参照で渡せばコンストラクタ等で生成した
即値を渡すことも可能とか、そんな用途ぐらいですか。
547 :
デフォルトの名無しさん :02/08/10 21:55
ムムム・・・ 頑張って参照に慣れるしかないようですな・・・ どうも代入文の左辺に&があったり 関数に値を代入したりという部分でわかってはいても理解に時間がかかる・・・ まあこれは慣れしかないですね
>>547 リンクはリンカがするものです。
ただ、オプション指定でリンカを起動できる
コンパイラが多いだけです。
552 :
デフォルトの名無しさん :02/08/10 22:08
553 :
デフォルトの名無しさん :02/08/10 22:09
英語の情報になれたいのですが 英語で書いてあるCの勉強ぺージってありますか?
#include <stdio.h> #include <stdlib.h> int main() { char *po; if ((po = (char *)malloc(sizeof(char) * 128)) == NULL) { fprintf(stderr , "メモリが足りません"); exit(1); } po = "Kitty on your lap"; /* なんのためにmallocしたんだよ */ printf(po); /* %s使え */ free(po); /* mallocした覚えのないものをfreeするな */ return 0; }
556 :
デフォルトの名無しさん :02/08/10 22:11
> free(po); /* mallocした覚えのないものをfreeするな */ mallocはしていると思うが?
558 :
デフォルトの名無しさん :02/08/10 22:16
>>557 その時点でのpoの値は"Kitty on your lap"という文字列リテラルの先頭アドレスで上書きされています。
>>547 リンクページの"C machine"というサイトにあるのがここで触れられている
学習用コンパイラのようだけど、Windows用のexeを吐くんじゃなくて
コンパイラから実行環境までをアプリ内部で持ってるようですな。
文字列のコピーはstrcpyを使えとあれほど(略
562 :
デフォルトの名無しさん :02/08/10 22:28
>>561 なにが、どういうふうに安全なのか教えていただけますか?
strncpyはけつに0をつけない事があります。 先頭を0にして、strncatがおすすめ。
>>562 一般的には溢れないn付きの方が安全かと。
>>554 の(
>>552 のリンク先のですよね)みたいにコピー元が固定の文字列で
明らかに溢れない場合はstrcpyでノープロブレムです、はい。
565 :
デフォルトの名無しさん :02/08/10 22:41
>>563 strncatってそんな仕様だったんだ。
putsは改行するのにfputsは改行しなかったりと、なんか統一性がないね。
strncatは、n+1(終端の\0のぶんおおい)バイトの領域が 必要になることがあるから気をつけてね。
>>569 当たり前のことを語りまくるな。
こいつ。strcpyは領域いっぱいに使ったんだろうな。
今日はこのスレの伸びがいいなぁ。いいことなのかわからんが
strncpyで昔から妄想してるというかちゃんと調べてないんでわかんないことがあって、 いい機会だから書いてみる。 strncpyのあの仕様ってCOBOLとかのレコードをCで扱うためにある(あった)んじゃないかって だいぶ前から妄想してたりする。 以前全銀協手順のプログラムをCで書いたとき、文字列のフィールドは、 文字列の末尾からフィールドの最後までを0x20で埋めろという仕様だった。 もちろんstrncpyは0x20じゃなくて0x0で埋めるんだけど。 で、ひょっとしてstrncpyが生まれた時代のCOBOLの実装に 文字列フィールドの末尾を0x0で埋めるやつがあったんじゃないかななんて。 …やっぱ妄想ですね。逝ってきます。
ネタにネタを振ってみたらこんなことに... 初心者が混乱するのでもう止めてください。
strncpyってmemcpyといっしょだよね。違うの?
>>575 ネタだと思うけど一応・・・・
strncpyは0が来たらそこでコピー終了。memcpyは指定されたバイト数分無条件でコピー。
>576 ネタだよね? strncpy()は最初の'\0'が見つかった後、nバイトに達するまで'\0'で埋める。
579 :
デフォルトの名無しさん :02/08/11 00:29
>578 ネタだよね? strncpy()は最初の'\0'が見つかった後、nバイトに達するまで0x20で埋める。
>>578 そうだったっけ?
てっきり'\0'はひとつだけコピーするのかと・・・
やはり、スレがのびればいいってもんじゃないな。 厨はまとめて逝ってくれ。
カチャ ;y=ー( ゚д゚)・∵. ターン \/| y |)
>579 下のプログラムを試せばわかるよ #include <stdio.h> #include <limits.h> int main(void) { char buf[] = "0123456789"; strncpy(buf, "", LONG_MAX); return 0; }
>587 デバッガで試してみなよ。
""[0]=='\0'
0[""] == '\0'
0 == 0[""]
>>589 覚えたてだから「知ってるぞ」ってアピールしてんの?
みんな知ってるってw
?何を覚えたて?
>592 調子に乗ったあげく、 NULL[NULL] == NULL ってされなかった分だけマシだったと思って許してあげれば?
?許す?
なんでこれじゃ駄目なん int main(void) { char option; cout << "S) Select An Item" << endl; cout << "D) Deposit Money" << endl; cout << "C) Cancel" << endl; cin >> option; if (option == "S") cout << "1" << endl; else if (option == "D") cout << "2" << endl; else if (option == "C") cout << "cancel" << endl; else cout << "Please select S or D or C" << endl; int i; cin >> i; return 0; }
598 :
初心者 ◆ZMVdytmo :02/08/11 08:13
Visualc++6 でマイクロソフトの機能使わずに ウィンドウ表示させるコードってあるの?
599 :
ssssss :02/08/11 08:21
>>597 iostreamライブラリはC++用なので、Cでは使えないです。
option == 'S'
602 :
デフォルトの名無しさん :02/08/11 11:17
何がおかしい? void item(void) { int item; int howMuch[6]={100, 100, 125, 75, 75, 100}; cout << " 1 2 3" << endl; cout << " Coke Sprite Orange Juice" << endl; cout << "$1.00 $1.00 $1.25" << endl << endl; cout << " 4 5 6" << endl; cout << " Mars Oh Henry! Kit-Kat" << endl; cout << "$0.75 $0.75 $1.00" << endl << endl; cout << "Select the item:"; cin >> item; clrscr(); if (item == 1) cout << "Please deposit $1.00"; else if (item == 2) cout << "Please deposit $1.00"; else if (item == 3) cout << "Please deposit $1.25"; else if (item == 4) cout << "Please deposit $0.75"; else if (item == 5) cout << "Please deposit $0.75"; else if (item == 6) cout << "Please deposit $1.00"; deposit(); } void deposit() { int dep, change, i; cout << endl << endl; cout << "Enter how much you are going to deposit" << endl; cin >> dep; change = dep - howMuch[i - 1]; cout << "Your change is " << change << endl; }
else if else if else if... キモ
よくわからんねん。 void item()で品を選ぶっしょ。 んで、選んだ番号によって値段が違うんだけど、その値段をどうやって deposit()のほうで使うん? この辺がようわからん。change = dep - howMuch[i - 1];
引数を知らんのか
>>606 ・itemをdepositに渡せばいいじゃん。
・スレ違い
どうやって?
宿題カナ? とりあえず、depositを関数に分けずに書いたら?
マジックナンバー、ハードコード、ほとんど同一の行だらけか。 ド下手。 多分質問の答え: ・howMuch[] が deposit()からアクセスできないね。 ・deposit()にプロトタイプ宣言が無く、C++のようなので、これもエラーだな。
else if else ifのかわりに配列でもつかったら?
C++です。ここスレ違いね。 宿題なんだけどさ。 自動販売機作れとか言いやがってさ、さっぱりよ。 ってことはdeposit()の方に int howMuch[6]={100, 100, 125, 75, 75, 100};こうすればいいの?
引数を知らんちゅーことは、授業をまるっきり聞いてなかったちゅうことか?
まあ、サルだから
カナダでこのC++の授業とってんだけど、英語むっちゃ難くてさっぱりなんよ。 グローバル変数ってGlobal Variableって事? あー、やんなってくる
>>617 616は確信犯だから何言っても無駄だと思われ
>>618 スレ違いという日本語は理解できてマスカ?
623 :
デフォルトの名無しさん :02/08/11 14:57
getchar ってキーボードからどう入力すればいいんですか? c = getchar (); putchar (c); c = getchar (); putchar (c); 上のコードに対して、(1 改行)と打つと 1 が一回だけ表示されて 終了してしまうのですが
>>623 禿ファック。
とりあえずこのスレ全毒してみろ。
>>623 1がちゃんと入力されてるやん
まったくもって正常な動作やん
629 :
デフォルトの名無しさん :02/08/11 17:04
linux/drivers/char/mem.cというファイルを眺めていました。 531行目に以下のような記述があります。 static struct file_operations mem_fops = { llseek: memory_lseek, read: read_mem, write: write_mem, mmap: mmap_mem, open: open_mem, }; この”:”は何を意味しているのでしょうか? これは処理としてはあるファイルに特定の処理を結びつけて 入ること自体は分かるのですが、Cにこんな記述があったのか どうかよく分かりません。K&Rにも書いてないし。。 よろしくお願いします。
補足: memory_lseekやread_memは同じファイルにstaticな 関数として宣言されています。
631 :
デフォルトの名無しさん :02/08/11 17:12
ビットフィールド?
633 :
デフォルトの名無しさん :02/08/11 17:13
>>629 ビットフィールドだろ?
本当にK&Rに載っていなかったか?
634 :
デフォルトの名無しさん :02/08/11 17:21
計算機プログラムのソースをもっている方はください
635 :
デフォルトの名無しさん :02/08/11 17:31
linux/include/linux/fs.hには以下のようにfile_operationsが定義されています。 struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_ ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, i unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned l }; 仮に先の”:”がビットフィールドだとするとどう解釈すればいいのでしょうか? 個人的には構造体の初期化用の何かシンタックスなのかと予想していますが どうでしょうか?。今回のケースで言えば、特定のメンバ(今回のケースで言えば 関数ポインタ)を初期化しているように見えるのですが。。
ビットフィールドだったら、 struct Hoge { int n : 3; }; 見たいな書き方になるんじゃないの?
>>637 さん
>gccの拡張で、指定フィールドの初期化とか
ありがとうございました。謎が解けました。感謝します。
629=635=638=私です 古いLinuxのソースを見てみたら、通常通りの 初期化をしていました(必要のないメンバはNULL指定で、 全てのメンバの値を羅列)。 これでパフォーマンスに及ぼす影響はどれぐらいになるんで しょうかね。興味深いところではありますね。
>>640 標準Cじゃないと分かったんだから、そろそろスレ違いだと思わない?
Linuxのソースなんてよめねーよ
このスレってANSI Cじゃないとダメなの? そんなこというと各コンパイラスレがたってうっとおしいことになりそうだが。
>>643 質問の際は使用コンパイラを明らかにするべし。
必死すぎて見てらんない
Linuxのソースと書いてあるんだから(略
構造体宣言と実体定義の違いが、「細かいところ」かのぅ?
えっとですね、ヘッダに変数のextern宣言をまとめたいのですよ。 で変数のなかに size_t marukome; とか言うのがあるんですが、ヘッダファイルで #include <stdio.h>ってやったほうがいいんでしょうか。 それとも普通はやらないのでしょうか。
>>650 size_tならstddef.hの方がよくない?
へっだでsize_t使ってるんなら、stddef.h、もしくは それをincludeしてるヘッダを取り込まないとエラーが出ると 思うんだが…。
オッケーでス。どうもでス。
なんで?
ソースでinclude した後でinclude したらどうなる?
ぶぁーか(ぷうぷぷぷ
>>659 普通は2重にインクルードしないようにおまじないを書いとく
標準ヘッダファイルってインクルードガードされてるとは 限らないんだっけ。
ANSI C言語辞典の「標準ヘッダ」の解説だと、与えられた 有効範囲で2回以上組み込むことができて、その効果は1回 組み込んだ場合と同様、とありますから、同じ翻訳単位で 複数回インクルードされても問題ないんじゃないでしょうか。 もちろん自作のヘッダファイルをインクルードガードする 必要はあるでしょうけど。
インクルードガードしないヘッダーは何か意味があるの? おれにはそれをしない理由が分からないのだが
665 :
デフォルトの名無しさん :02/08/11 19:19
初歩的な質問ですいません int nc=0; while((c=getchar()) != EOF){ ++nc; } printf("nc = %d", nc); として文字数を数えるために、EOFを入力してループを抜けたいのですが EOFの入力の仕方が分かりません。 Win98SEでやってるのですが、どうやって出すのでしょうか? UNIXの場合はCtrl+Z(?)か何かで出来たような気がしたのですが・・・・TT
インクルードガードって結構後になってから出てきたような気がするんだが。
>>665 Unixの場合はC-dだ. そこんとこヨロシク.
WindowsはC-zかC-dじゃなかった?
Ctrl+Z でなかたか
そうだ, たしかC-zだったな. サスペンドじゃん!って突っ込んだ記憶がある.
>>665 もうこないかな?
ctrl-zを入力したらEnter(Return)キーをタイプしないと駄目だぞ。
>>667-670 みなさんレスありがとうございます!
Ctrl+ZがWindowsだったのですね^^;
でも今やってみたところCtrl+Zでループを出ることは出来たのですが
そのままprintf()を実行しないままプログラムが終了してしまいました
Ctrl+Zを押したとたん終了してしまうのでRetunキーも押せないですしTT
せっかくK&Cを買ったのに一章で詰まってしまって泣きそうです><
>>672 その意気や良し!
まず、ソースを全部貼りつけてみな。
あとコンパイラも
>>674 コンパイラは10Kを超えているので貼り付けられないです。。。
>>671 一度ファイルに書き込んでから
a.exe < file
でいいのでは
>>671 俺の環境(winme+VC++6.0)でもそうなるよ。
なんでだろうね?
Linuxだとうまくゆくんだけどね。
#include <stdio.h> int main(){ int nc=0,c; while((c=getchar()) != EOF){ ++nc; } printf("nc = %d", nc); return 0; } これで思ったとおりに動かないか?
ちなみにBCC32
おまえらちょっと待て printf("nc = %d\n", nc); にしる!
>>673 K&Rの写しでやってます
#include<stdio.h>
main()
{
long nc;
nc = 0;
while(getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
コンパイラはBorland C++Compiler5.5を使ってます。
なぜか先ほどふと出来たのですが、まだすぐ出なくなってしましました。
なんでだろ^^;
>>676 あ、それだと出来ました。ありがとうございます!
>>678 できないですね。
プログラムが悪いんじゃなくて環境が悪いんです。
>>678 それでも出来ませんでしたTT
>>681 のでやったとき極稀にできたりするのでとっても気になるのですが・・・・・・
やっぱり
>>682 さんの言うとおり環境の問題なのかな
K&RでCの勉強するならUnix系OSにしたほうが良くないか? あれ, たしかシステムコールの話とかも載ってただろ. forkとかWin系じゃ動かないんじゃなかったっけ? Linux厨だから外してたらスマソ.
fflush(stdout); をprintfの下に追加してみよう。
686 :
デフォルトの名無しさん :02/08/11 20:36
>>685 さっき駄目もとでsetvbufでstdoutをunbufferedにしてみたけど駄目だったからfflushしても駄目じゃないかな?
というか、^Zした時点で終了しちゃうのよね・・・
688 :
名無しさん@Emacs :02/08/11 20:37
>>686 setvbuf使わなくてもsetbuf(stdout, NULL)じゃダメ?
a.out > ofile でやったら一応出力されてた
>>684 システムコールって何なのか良く分からないのですが、最終章に
UNIXシステム・インターフェイスってのがあるのでこれのことなのかな?
まだ一章なので(汗)、この章まで来たらLinuxを入れてみたいと思います。
助言ありがとです
>>685 >>688 やらせていただきましたけど、駄目でした><
>683 それはwin9xのdos窓のバグ(仕様) 「ユーザがCtrl-Zを叩いた後、次の改行までの表示が行なわれない」 ということらしい。ソースがどこだったか忘れた。
>>692-693 出来ました^^
すっごいうれしいです。
みなさまありがとうございましたm(_ _)m
mpichのサンプルプログラムを見ていたら、関数の引数にvoid *bufってのがありました。これはどう解釈すればよいのでしょうか?voidだから何もないはずなのに、ある!
つまりこの場合のvoidは何型でもよいって意味ですか?
void と void * は意味が全然違うよ。
>697 void=日下部陽一氏のHNだ。 あまり連呼すると出現しちゃうから気をつけろ。
呼ばれて出てきてジャジャジャジャ〜ン
In articleを見なくなって久しいな。 たまにはこいよvoidたん。
705 :
デフォルトの名無しさん :02/08/12 10:52
このスレッドは「C言語」とタイトルにある時点でだめですね。 (CとC言語の違いが分からないようでは問題外ですが) また、釣れたなどと喜ぶ人が居るんでしょうね;)
>>706 >>706 DivX 5.0.2の動画も比較的スムーズになったように見えます。
少なくとも、最初で駒落ち気味だったような動画が駒落ちしなくなりました。
…案外お勧めっぽいかも知れません。
本物でてこねーかな。奴はあれでなかなか強敵だからな。
知らない人は知らないままでよい
×知らないままで ○知らないままのほうが
(´д`) ママ…
long long 型っていうのはANSI C規格にあるんですか?
>714 C99で正式に「long long int およびunsigned long long int型は少なくとも64bit以上の値である」ことが定められてます
>>715 なるほど、C99で規格に盛り込まれたのですね。どうもです。
値である→値を持つ、だった 細かいけど
そろそろK&Rスタイルは辞めて欲しいよな。
ブール型に _ が付いてるのがちょっとやだな。
C99改訂の際に某C雑誌で翻訳記事を担当したのがvoi(略
keikoタン、ハァハァ
>>722 探してみたら
Cの標準規格の改訂版
The Revised C Standard
______________
P.J.Plauger
――――――――――――――
翻訳:日下部圭子・日下部陽一
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ってなってた 奥さんがやったのをチェック、、ってとこか
>>721 それってCマガ?
奴の記事が載っている号があったら教えてくれ。
そこだけ焼却処分にするから。
これから載る号も頼む。立ち読みで済ますから。
CマガAPR.2000 P.16-20 もっとも、漏れにはその次の特集記事「プログラミングの禁じ手」がかなり役に立った、というか未熟さを痛感させられた
Cマガなんてまだ読んでるの? あれに書いてあるような薄っぺらい内容のものなら、 書籍買って深く知るほうがいいと思うけど。 雑誌の記事は結局参考文献を知る程度にしか使えない。
729 :
デフォルトの名無しさん :02/08/12 18:37
よく使う変数宣言をひとまとめにマクロにして宣言するのは変かな? #define VALUE int aa; int bb; int main() { VALUE ・・・
キショ
>>730 そんな冷たくあしらわないでください。
もうすでに、それでかなりのボログラムを
書いてしまったので、どうしようもありません。
>>729 そのaaとかbbって名前でいろんなコードに使ってるのならマジキショい
それに宣言文自体が使うところから見えなくなるのは保守に悪い。グローバル変数と区別つかん
そか、悪かった もう何も言わん
>>731 > もうすでに、それでかなりのボログラムを
> 書いてしまったので、どうしようもありません。
お前のエディタには文字列置換もないのかと小一時(略
>>729 やめてくれ
そゆアホなことをするから、糞ソースが出回ることになるんだ
static unsigned char buf[2][MAXSIZE]; /* 受信電文組み立て場所 */ static unsigned int counter[2];/*組み立て中の電文の文字数 ( <SCIMESSIZ) */ がどっちもグローバル変数で、sci_rx_line[2]のなかに電文を組み立てて 行きたい場合、1文字受信するごとに *( buf[port]+counter[port]) = 'h' ; counter[port]++; ってな感じで組み立てていけばいいんですか? 要するに1行目のポインタ演算に自信がないんですが。
SCIMESSIZ = MAXSIZE です。スマソ。
それだけの説明じゃ何のことかさっぱりわからん
なんだ、まだvoid来てないのか
>>739 スマソ
っていうか解決すました。スレ汚してすみません
>>737 自信がなければ
buf[port][counter[port]]='h';
とするのがシンプルでいいと思われ。
743 :
デフォルトの名無しさん :02/08/12 22:22
22:22をお知らせします
そう
脳内で受信したデムパをバッファリングして、ファイルに落としたいのですが 割り込み処理の void interrupt far int_recv(void) { buf[++rec_cnt] = inp(BRAIN_IN); } がどうしてもうまくいきません。 どなたかいい方法ご存知ですか? (Cしか分からないので、Cでおながいします)
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | 電波を感知しました。 | |__________| / / / _ ビビビ /||__|∧ / 。.|.(O´∀`) / |≡( )) ))つ `ー| | | (__)_)
rec_cnt++ ではないのか
>>748 それもありました。
でも今の問題は、割り込み処理自体に入らないのです。
あと、タイムアウト用大麻も正常に動作してないようです。
戻ってくる時もあるし、永遠ループになる時もあるし・・・。
デムパはほぼ四六時中受信してるので、テストはいつでもできるんですが。
C++なら void interrupt far int_recv(void) { try { buf[++rec_cnt] = inp(BRAIN_IN); } catch (std::bad_dempa) { // 例外処理 } }
デバッグ用に、色々な関数群の内部処理のログ出力をfprintfで出したいんですが、 それらの関数を呼ぶたんビに、通常の引数といっしょに ファイルポインターをいちいち渡さないといけないのですが、何かこのあたりのエレガント なソースの書き方ってありますかね?やっぱりファイルポインターも含めたおっきな データ構造体を渡すしかないですかね?
752 :
デフォルトの名無しさん :02/08/13 01:26
stderr
リダイレクトは?
>>751 デバッグ用ならこうすれ。
void dprintf(const char *format, ...)
{
va_list ap;
FILE *fp;
if (!(fp = fopen("debuglog", "at"))) {
return;
}
va_start(ap, format);
vfprintf(fp, format, ap);
va_end(ap);
fclose(fp);
}
使い方。
dprintf("%d: %s\n", i, s);
printfとおんなじ。
>>754 まさにこういうのが求めていた奴です。泣けました。ありがとうございます。うぅ涙で
画面が見えません。
>>755 ファイルポインターはグローバル変数にしてもいいよ。
printfだって、stdoutというグローバル変数を使ってるわけだし。
で、デバッグが終わったらdprintfは一括して削除したくなると思う。
こういうときにはマクロを使う。
#ifdef DEBUG
#define dprintf(...) DPRINTF(__VA_ARGS__)
#else
#define dprintf(...)
#endif
/*
>>754 のdprintfの関数名を変える */
void DPRINTF(const char *format, ...)
/* 以下は一緒 */
こんな感じで。上記の#ifdef〜#endifとDPRINTFのプロトタイプをヘッダに書いておいて、
それぞれのソースで#includeすればよろしいかと。
デバッグ中は#define DEBUGしとけばいい。gcc だと
gcc -DDEBUG foo.c
って感じ。デバッグコードを取り除きたくなったら -DDEBUG をはずせばいい。
でもgccでこういう可変長引数マクロが使えるかどうかは確認してない(w
というか、
>>754 を書いた後で可変長引数マクロをC99で
使えるようになってないかなと思って調べたら
ttp://seclan.dll.jp/c99d/c99d02.htm#dt19990405 というのがあったのだった。これ、おれがCに一番欲しかった機能だ。
8年前にあればなあ…。今は仕事でCを使ってませんです。
>>757 今は可変長マクロなんて便利なものがあるんだぁ。
昔は2重カッコで苦労したもんだ。シミジミ
s/2重カッコで/2重カッコを使ったマクロで/
>>754 個人的にはその都度ファイルオープンとクローズを繰り返すのは抵抗あるので
やはりグローバル変数に一票かな
>>754 fopen/fcloseしないで、fflush使ったらだめなのか?
前に試してみたら、大丈夫そうなので使っていたが…
環境に依存したりするんだろうか。
まぁ、この場合はグローバル変数を使って実装することになるんだけど。
Cで連想配列みたいなものを作りたいのですがどうするのがいいですか? 具体的には、 'a' → "a.bmp" '0' → "0.bmp" '@' → "atmark.bmp" (これが合計50字前後) という感じに、char1文字を与えたとき、それに対応する文字列へのポインタ を返すような関数(連想配列?)がほしいんですが。
>>762 環境依存はどうだろうね。
やるとすれば実装はこんな感じになるかな。
void DPRINTF(const char *format, ...)
{
static FILE *fp = NULL;
:
:
if (!fp) {
if (!(fp = fopen("debuglog", "at"))) {
return;
}
}
:
:
fflush(fp);
}
DOSだとまずかったかもしれないがよく覚えてない。
ま、DOSなんて捨ててもいいんだけど。いやよくないかな(w
あとUNIX系を前提にできればsyslogを使う手もあるね。
>>763 char *a[256];
a['a'] = "a.bmp";
a['0'] = "0.bmp";
a['@'] = "atmark.bmp";
これでできるよ。ただ、aの要素数255は環境依存だけど、
ま、大抵charは8bitだから大丈夫だろ(w
>>765 なるほど、そんな単純でいいんですか。
大分悩んでいたのに一瞬で解決してしまいました。
どうもありがとうございました。
>>764 オレは、関数内のstatic変数が仕様変更に弱いという考えを持っているんで、
グローバル変数にして、プログラムの先頭でfopenをする関数を呼ぶようにすると思う。
まぁ人の好みだけど。
試したのは確かVCだった。
DOSはファイルをオープンしたまま異常終了すると
同時にオープンできるファイルの数を食いつぶしていく
って問題があったような気がする。
>>767 漏れは動いた分のログは全部欲しいもので関数内でopen/closeしてます
まあ考え方の差ですが
>>763 単純な方法は
>>765 でいいとしても、仕様の拡張を考慮して、
ちゃんとしたものを作っておくのも勉強になると思うよ。
C++ の map や hashmap のようなものを、自分で作ってみるとか。
770 :
デフォルトの名無しさん :02/08/13 19:29
初心者本を一通り読み終えた者です。 Cでかちゅ〜しゃ等のWinアプリケーションを作りたいのですが、可能でしょうか? 今のところ、ファイルやDOSに出力する方法しかわからなく、困っております。 Cには、例えばJAVAで言えば、java.awt.*クラスのような、アプリケーション 作成に適した関数は用意されていないのでしょうか? コンパイラはcygwinを使っています。 どうぞ、よろしくお願いします。
おとなしくjavaを使って書くというのはどうだろう.
>>771 レス、ありがとうございます。
JAVAではユーザーが限られてしまうので、ちょっと・・・。
僕の目標はフリーソフトで、かちゅ〜しゃみたいな、人気にちゃんソフトを
作る事なのです。そのためにCを勉強したのですが、前述のような
内容でつまずいてしまいました。今日も秋葉原の本屋で、調べてみたの
ですが、一向につかめません。
かちゅ〜しゃって言語は何で書かれてるんでしょうね。
773 :
デフォルトの名無しさん :02/08/13 19:37
>>772 かちゅ〜しゃはDelphi。
おとなしくVBを使うのはどうだろう。
VC++でもいいけどかなりの知識が必要だYO!
>>773 貴重な情報ありがとうございます!
VBですか・・・それもありですよね。
CでWinアプリケーションを作るのは、簡単な事だと思ってました。
だって、初心者本にCは何でも出来るYO!ヽ(`д´)ノて、
書いてあったし、、くそー、、(笑)
なんて本さね
>今のところ、ファイルやDOSに出力する方法しかわからなく、困っております。 printfだけわかったんだね。 >初心者本にCは何でも出来ると書いてあった 「何でもできる」 = 「簡単なこと」 って、すごい脳内変換だな・・・ 「猿にでもできるCげんご」でも読んだのなら別だが ・・・はぁ? 一生無理だな、こりゃ。
>>775 塚越一雄著:はじめてのC言語であります!
>>776 そうなんです(笑)。あと、リダイレクト、、
とりあえず、極めればWinアプリケーションも作成可能という事ですよね?
もうちょっとCを勉強してみることにします。
Cを極めてもWinアプリは作れないと思われ。
779 :
デフォルトの名無しさん :02/08/13 19:51
C でWINアプリを作るのはかなりの遠回り。
>>778 >>779 マジで鬱です、、
その為にCを勉強したのに、、
UNIXアプリなら余裕っぽいですね。でもUNIXか、、
やっぱユーザー人口的にもWinがいいですね、、
Delphiでも勉強しようかな、、
>>780 UNIXでかちゅ〜しゃを作るのは余裕ってこと?
そんな余裕どこから出てくるんだ?
>>780 GUIなものを作りたいんだったら、UNIX上(X)でもC以外のことを知る必要があるよ
>>781 ああ、そんな初心者をいじめないでやって下さい(笑)
>>780 Cでも窓アプリつくれるよ
SDK + VC++ とかで
>>782 そうなんですかー、、
僕はJavaから入ったいわゆる、Java厨って奴なんで、
GUIに対して楽勝っていう先入観がありましたね。甘かったです。
>>784 情報ありがとうございます!
やはり、Delphiではなく、せっかくCを学んだのですから、
そちらの言語に進んだほうがいい気がしますね。
ちょっと考えて見ます。
-------風俗の総合商社・MTTどこでも-------
〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/ ------------------------------------------------
>786 そういうケチくさい根性のせいで無駄な苦労をしてる奴の多いこと多いこと(藁
>>770 Javaやっていたひとなのに、C++じゃなくてCをやるの?
>>786 cygwinでも-mwindowsを指定すればwinアプリはつくれるでしょ
>>790 Cでwinアプリを作れるか否かではなくて、
Cの知識だけでwinアプリが作れるか?って話じゃないの?
>>788 、、、
>>789 ええ、なんとなくCを、、でも、初心者本の内容はすぐ理解出来ましたよ。
Javaとあんま変わらないですよね。Cも。
>>790 アプリケーションというか、かちゅーしゃみたいなGUIを作りたいというか、
そのコマンドについては勉強しておきます。
>>791 まあ、そういう事になりますね、、僕が勉強足らずだったということで、
申し訳無いっす。
>>792 Javaでも作れないんだろ?
かちゅ。
>>792 Javaなんかと一緒にしてほしくない。
変数名の型がわかった所で、どのようなバグの混入を防げるというのだろうか? その型が表せる数の範囲だろうか?それくらいしか思い浮かばない。 それくらいではメリットはない。むしろ、邪魔なくらいである。 俺的には,ちょー必要だと思うのだが。
>770 まぢレス。 俺の場合。 C言語->C++言語(主にClass?) ->VisualC(いわゆるVC、SDKでC言語での窓の動作の仕組みを習得) ->MFCを使って普通に作る。 とりあえずここまでいけば GUIで悩むのは終わりじゃないかな? Cを学んだのは間違いとは思わないなぁ。 俺Cからのスタートだったし。 逆にVBとかJavaでGUIの動作について 考える機会が少なくて、学べないより よっぽどいいんじゃない? 実際かちゅ〜しゃのGUI部分だけなら あっというまに書けると思うよ。 「C言語のみ」って言わず、俺はMFC使えばだけどね。 まぁなんだ、がたがた騒ぐなw 出来るやつは出来るんだから。 できないならがんばれ新人。
801 :
デフォルトの名無しさん :02/08/13 23:44
C++BuilderでもVC++でもgccでもいいが、とにかくJava知ってるんだから CよりC++をお勧めする。 因みにC++BuilderはGUI関係のライブラリがPascalで書いてあって C++より読みやすいよ(経験談)。もしPascalを知らないなら、 アルゴリズム記述言語だと思えば当たらずとも遠からず。
>797の質問がわかった所で、どのようなバグの混入を防げるというのだろうか? その質問が意図するところは汎整数型の問題だろうか?それくらいしか思い浮かばない。 それくらいではメリットはない。むしろ、邪魔なくらいである。 俺的には,>797の文面はちょー理解不能だと思うのだが。
803 :
デフォルトの名無しさん :02/08/13 23:59
質問ですけど、プリプロセッサの条件コンパイルってどんな所で使うんですか? 実際プログラムを組んでいて#include と#define 以外を使ったことがありません。 どのような所で役に立つような技術なんでしょうか?
>>803 デバッグするときとそうでないときで、コンパイルするコードを切り替えたり、
処理系に依存する部分を分けたりする
>>770 書籍関連のスレに参考になりそうなレスがあったよ
>>804 >デバッグするときとそうでないときで、コンパイルするコードを切り替えたり、
いままで、 // debug line:200〜218
なんて事やってた俺って・・・。
ありがとうございます☆
807 :
名無しさん@Emacs :02/08/14 00:15
>>807 ほえ〜・・・。
こんな使い方があったんですね。
2重インクルードは駄目だったんだ・・・。
危なかった (w
>>808 もしかして標準のヘッダファイル読んだこと無いのか?
810 :
デフォルトの名無しさん :02/08/14 00:22
┗0=============0┛ \===========[_|_|_|_|_|_|_|_|_|_|_|_|_|_]===========/ /三三三三三三三三三三三三三三三三三三三三\ 0 │ |∞∞∞ |::|∞∞田田∞∞|::|∞∞∞ | ::| 0 [二] | ::| |::|┏━━━━┓|::| | ::l [二] ◎○@※◎○@※. |□|.│ |┌┬┐ |::|┃/ .C.\┃|::| ┌┬┐| ::|. |□| ◎○@※◎○@※ ii|iiii|iiii|iiii|iiii|iiii|iiii|iiii| `)三(´| ::|├┼┤ |::|┃ ∧_∧ ┃|::| ├┼┤| ::|`)三(´il|iiii|iiii|iiii|iiii|iiii|iiii|iiii| @※◎○@※◎○ | ::| | ::|└┴┘ |::|┃(´∀` ) ┃|::| └┴┘| ::| | ::| @※◎○@※◎○ ii|iiii|iiii|iiii|iiii|iiii|iiii|iiii|li┏━━━━━┓|::|┃(. つ┃|::|┏━━━━━┓ li|iiii|iiii|iiii|iiii|iiii|iiii|iiii|l ◎○@iiii※◎○@ ┣┳┳┳┳┳┫|::|┗━━━━┛|::|┣┳┳┳┳┳┫ ◎○@iiii※◎○@ ii|iiii|iiii|iiii|iiii|iiii|iiii|iiii|l ○ ● ∫∬∫∬ ● ○ ii|iiii|iiii|iiii|iiii|iiii|iiii|iiii|li ○○ ●● iiiii iii ii iiii ●● ○○ [ ̄ ̄] [ ̄ ̄] ( ̄ ̄ ̄ ̄ ̄) [ ̄ ̄] [ ̄ ̄] |_○_| .|_○_| |_____| |_○_| .|_○_| ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ( )( )(, )(,, ) ,,)( )( )(, )(, ;) とうとう糞言語の王様が…… ザワザワ かわいそうに ナモナモ……
>>809 標準のヘッダファイル???
私の場合、いきなりAppWizardでした・・・。
自作ヘッダを読む場合に、VCが勝手に作ったプリプロセッサが
とても気になったんです・・・(爆死)
812 :
デフォルトの名無しさん :02/08/14 01:22
ヘッダーファイルは何回読み込んでもよいとK&Rに書かれていたような気がするけど記憶違いかな? 今手元にないので確認できない。
813 :
デフォルトの名無しさん :02/08/14 01:24
>>811 stdio.hやstring.hのことだろ?
>>812 インクルードガードしてあるから標準ヘッダに限っては何度読み込んでもよい
…じゃなかった? 俺も手もとにないからうろ覚えだけど….
夜中までご苦労様♪
>>813 ほとんどMFC使っていたので知りませんでした・・・(汗)
勉強不足の感あり・・・。
>>815 > 夜中までご苦労様♪
なんかむかつく
>>816 まぁまぁ…確かに徹夜組が見ると殺気を覚えるかもしれんが….
ご苦労様というのは目上の人が目下の人に使う言い方なので、 気をつけないと大変な時があります。「お疲れ様」が適切です。 ただ、♪をつけてる時点でどの道煽りっぽくなってるので この場合はあまり気にする必要はないでしょう。
>ただ、♪をつけてる時点でどの道煽りっぽくなってるので >この場合はあまり気にする必要はないでしょう。 ワラタ
業界によっちゃあ ご苦労様 と お疲れ様 の意味合いが 完全に逆転しているところもあるしな
821 :
名無しさん@vi :02/08/14 01:51
Cはもう古いというイメージがあるのですが、いまでもよく使われていますよね。 信者が多いからですか?
信者多すぎです。 なんでもかんでもCでやろうとします。 助けてください。
824 :
デフォルトの名無しさん :02/08/14 01:56
>>821 適材適所ってこと。
VBやC#なんかでOSやドライバを書こうとする馬鹿はいない。(いたらスマソ)
>>823 そう? C厨は見掛けたことないなぁ….
>>827 おれはGNU信者だけど、GNUコーディング規約には反吐が出る。
長くなっても関数定義は一行にしたい
>>828 俺もGNU信者だけどGNUコーディング規約は嫌い….
>>829 何文字までだったら、一行に書いても心が痛まない?
832 :
デフォルトの名無しさん :02/08/14 02:11
>>831 何文字でも。と言いたいけれど、さすがに100文字越えたら・・・
>>832 やっぱ100文字が心理的境界線だよね。
qsortの関数定義は変数名にもよるけど100文字くらいいきそう。
一行だと//コメントが書けねーよぅ
>>835 言ってる意味が分からんのだが…?
>>834 typedef使って簡潔にまとめたらいいんじゃないか?
>>835 パラメータにひとつずつコメント入れる派?
>>824 Prologで書いたOSならありますぜ(w
そういえばJavaでOS書いたな。
>>839 |-`).。oO(OS->VM->Javaで書いたOS->Javaで書いたOS用のVM->Javaアプリって感じかな?)
VMを半分Javaで書いた。 どうしようもないところはネーティ部だけど。
OSちゃうやん
>>799 GUI奥深し、、ですね。ちょっとDelphiにいくか、C++系にいくか、考えましたが
C++系に行こうと思ってます。
>>800 >>801 C++Builderという言語は存在自体知らなかったですね。今度調べてみます。
>>805 今からちょっとロムってみたいと思います。
皆様、いっぱいのレスありがとうございました。大変勉強になりました。
846 :
デフォルトの名無しさん :02/08/14 10:23
>>757 そういう都合を考えたら、syslogがいいなぁ・・
Windowsじゃ使えないけどね。
Windowsでsyslogみたいなことやれないかな??
知ってたら誰かおせぇて
>>823 > 信者多すぎです。
> なんでもかんでもCでやろうとします。
例えば、COBOLしかできなくて何でもCOBOLでやろうとするのは
COBOLerであってCOBOL信者ではない。
よって、なんでもかんでもCでやろうとするのは
ただのC厨(Cモンキーでも可)であって、信者ではない。
信者とは根拠もなく「××は最高だ!」とほざく奴らのこと。
で、C言語は最高だと言う奴はRuby, Delphi, VB, Java使い
とかと比較してあまり見かけない。
848 :
デフォルトの名無しさん :02/08/14 10:54
_________ /∴∵∴ヽ |∵∴∞ヽ| _______ |∴/= ♀=| <C言語サイコー! \| ▽/  ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄
>>770 >C++Builderという言語は存在自体知らなかったですね。今度調べてみます。
「C++Builderという言語」は無いよ。念のためつっこみ。
DelphiはObjectPascalという名をやめてDelphi言語になるらしいけど。
それからするとC++Builer言語というのもそのうちに、、、なるわけ無いよな。
>>850 ある意味C++をDelphi言語に近づけたC++Builderという言語なのかもしれん。
うむ独自の言語拡張と(それを利用した)VCLで、もはやC++とは呼べん
言語自体は普通にC++だと思うけど。 VCLを扱うときに拡張キーワード使うことがあるってだけで、言語がDelphiに近いとは思わんが。
C++としても使えるというだけだな
> C++としても使える なんか不満?
VCよりANSIに準拠してると聞いたような聞かないような。 違ったっけ。
VC++と比べてどうこうは置いといて、 > もはやC++とは呼べん というのが、?だ。ま、スレ違いだしどうでもいいけど。
そういや昔 OWL なんていうのがあったっけな。
BCB6ユーザーですが、何か? VCLを使う時だけC++らしくなくなりますが、それ以外はANSI-C++として 普通に使えますが何か?
>>858 OWL持ってる。BC5.0買ったからなぁ(w。一度もOWL使ったことないけど。
>>857 C++はほとんどの場合Cとして使えるがCとは呼べない
まあ、あんたがどう呼んでも構わないよ。
>812 何回読み込んでも平気だよ。 ただ、#defineや構造体定義などなどが二重定義で引っかかる。
'Flg' の初期化が 'case' ラベルによって行われませんでした。 case 0: bool Flg=true; break; case 1: break; なにがだめなんでしょうか?
case 0:{ bool Flg=true; break; }
普通は, {}で囲うべき?
>>867 そうするとFlgは一度も参照されない変数に・・・。
そのFlgは何の役に立っているのかと小一時間(略
>>869 それが嫌ならswitch文の前で宣言すべし
>>871 小細工せずにはじめからそう教えるのがベストですな。
普通に switch ブロックの外で定義したらよいのでは。 case 1: Flg = false; break; なんてときに、Flg の定義が飛ばされて矛盾するからでは ないのだろうか。
私は867じゃないが?
いや、switch内は大幅に省略されているとみたもので、、
>>875 それにしても書いたとき自分で気持ち悪くならなかったのかと思って。
連続したファイル名を作る方法を教えてください。 for などでループして、i=0 ....10 とかで file1 file2 file3 ... file10 というような感じで作りたいんですが、ループの数字を ファイル名に足す方法がわかりません。 初心者過ぎてすみません。
itoa strcat
まぁsnprintf使う程のモノでもないわな. 俺は可読性重視でsnprintf使うが.
sprintf(s,"file%d",i);
881 :
デフォルトの名無しさん :02/08/15 05:38
C言語でとにかくグラフィックを出力したいのですが もっとも簡単に出力するやりかたを教えてください グラフィック版hello worldのような
main(){printf("( ´∀`)");}
>>881 残念ながらC言語では標準のGUIライブラリはない == 処理系依存.
WindowsでVC++使ってるんならWin32APIやMFCあたりがメジャー.
Unix系(Linux含む)ならXlib, motif, GTK+, qtあたりかな.
自分で調べて気に入ったの使え.
…っていうか処理系ぐらい書けや, ゴラァ!!
↑ >882 ですた。
>>882 (;;
>>883 グラフィックを出力するにはそういう
外付けが必要だったんですね
わかりました
ありがとうございます
>878 >879 >880 うーむなるほど、どうもありがとうございました。
889 :
お願いします :02/08/15 06:21
int sample(void){ int i; time_t tt;srand(time(&tt)); i=rand()%100; return(i); } void main(){ int p,x=1; while(x<1000){ x++; p=sample(); printf("%d\n",p); } } ////////////////////////////////////////////////////////// イメージとしてはいろいろな数字がずらずらーと表示されるはずだったのですが 実行しても同じ数字しか吐き出しません。なぜなのでしょう?
>>889 time()の値が変わるタイミングよりも、
main()でsample()が呼ばれるタイミングが早いので、
sample()内のsrand()への引数が常に同じ値になってしまうのが原因。
試しにmain()のwhileの最後にsleep(1);を追加してみれば
値が毎回変わることを確認できるはず。
srandはrandの初期化をする。 srandの引数に同じ値を渡すと、当然直後のrandの値は同じになる。 ということは・・・
>>889 srandはmainの中で1度だけ実行すれ.
あとrand()は%とセットで使わないほうがいい. manだとrand(3)参照.
>>890-892 こんな朝早くからありがとうございます。
もう少しがんばってみます。
とりあえずお礼まで。
プログラマーの朝が早いのか、夜が遅いのか・・・。 早朝って微妙な時間帯だよねー。
寝てないだけだろ。 あまり突っ込むと、おれみたいに不機嫌になるぞ?
怒らないでよー。カルシウム取ろうよー。
おれは酔っ払ってこれから寝るところだよ。 よいこのプログラマは真似しちゃだめだぞ。
898 :
デフォルトの名無しさん :02/08/15 08:14
魔板も無板も空気がカリカリしすぎだよね プログラマ志望としては萎える
899 :
デフォルトの名無しさん :02/08/15 08:55
#include <stdio.h> #include <math.h> #define pi 3.141592 /*円周率*/ int second;/*秒*/ int from;/*何秒から*/ int to;/*何秒まで*/ double r;/*ラジアン*/ float kaku;/*度*/ float v0;/*初速度*/ float g=-9.8;/*重力加速度*/ float vx;/*x軸の速度*/ float vy;/*y軸の速度*/ float xx;/*x軸の距離*/ float xy;/*y軸の距離*/ int main() { printf("放物線運動の秒毎の速度と位置を出力します\n"); printf("初速度を入力してください\n"); scanf("%f",&v0); printf("x軸に対する角度を入力してください\n"); scanf("%f",&kaku); printf("出力する区域(秒)をスペースで区切り入力してください\n"); scanf("%d%d",from,to); r=kaku/180*pi; for(second=from;second<=to;++second){ /*時間の表示*/ printf("%d秒",second); /*x軸の速度*/ vx=v0*cos(r)+0*second; printf("x軸速度:%4.0f",vx); /*y軸の速度*/ vy=v0*sin(r)+g*second; printf("y軸速度:%4.0f ",vy); /*x軸の距離*/ xx=v0*cos(r)*second; printf("x軸距離:%4.0f",xx); /*y軸の距離*/ xy=v0*sin(r)*second; printf("y軸距離:%4.0f",xy); } return (0); }
放物運動のプログラムを作ろうとしているのですが 「出力する区域(秒)をスペースで区切り入力してください」 というメッセージに対し"1 10"とか入力すると 「このプログラムは不正な処理を行いました」 というポップアップがでてきてしまいます まるなげで恐縮ですがどこが悪いんでしょうか THROWING のページ違反です。 モジュール : MSVCRT.DLL、アドレス : 017f:7802498c Registers: EAX=00000000 CS=017f EIP=7802498c EFLGS=00010202 EBX=00000020 SS=0187 ESP=0073fb88 EBP=0073fd58 ECX=78037c48 DS=0187 ESI=00000064 FS=4d37 EDX=78037c48 ES=0187 EDI=00000001 GS=0000 Bytes at CS:EIP: 89 38 e9 91 f7 ff ff 66 89 38 e9 89 f7 ff ff ff
コンパイラはgccを使っています
とりあえず scanf("%d%d",from,to); => scanf("%d%d",&from,&to);
>>903 math.hにM_PIって定義されてない?
>>899 と似たのをたびたび見かけるんで
次スレははじめの方に
★警告レベルは必ずageよう!★
とか書いた方がいいような気がする。
どうよ。
>>906 賛成ですな。他の処理系の警告レベルについても併記したらいいね。
VC++とかbccとか。おれはgccしかしらんから付け加えることは何もない。
908 :
デフォルトの名無しさん :02/08/15 17:01
printfみたいな可変個の引数の関数は<stdarg.h>を使って実現できますよね。 で、このとき実際、可変個って最大何個渡せるかというのは、 どこで決まるものなんでしょうか?
>>908 スタックの大きさじゃん?
OS次第と思い思われ振り振られ
910 :
デフォルトの名無しさん :02/08/15 17:31
899=907 少なくともお摘むは同レベル。(藁
>>910 ほとんどの場合はOS次第でいいんじゃない?
引数全部レジスタ渡しな呼び出し規約のCPUなら
レジスタの個数に制限されたりするんだろうけど。
32個くらい保証すればいいんじゃなかったっけ。
質問です。 よく使われる変数って、register int としなくてもコンパイラが 最適化するときにレジスタに格納するようしてくれるんですかね? 環境は VC++ 6.0 ですが、ほかのコンパイラの話でもかまいません。
>>914 >register int としなくても
最近はコンパイル時にほとんど無視される指定のようです。
>>915 そうだったんですか…
ありがとうございました。
>>912 スタックサイズのことを言っているんだけど・・・
>>917 スタックサイズはプロセッサによって制限がある。
その制限内において、OSによって制限がある。
その制限内において、リンカによって定められる。
そのサイズはリンカオプションで増減できる。
ということではないのか?
>915 正確にはvolatile指定をしない限りコンパイラは極力レジスタを使うようコンパイルします 場合によっては逆に問題が発生するからvolatile指定しなきゃいけないけど
(゚∀゚)どうでもいいんだけど、こないだ ローカル変数にvolatileつけてるコード見たんだけど これって何か意味あるのかね?
921 :
デフォルトの名無しさん :02/08/16 16:38
>>915 コンパイラオプションで指定できるんじゃないの?
(少なくともBorlandはできたはず……デフォルトは「コンパイラに任せる」だったかな。)
922 :
デフォルトの名無しさん :02/08/16 16:45
>>920 ローカル変数のメモリ上のならびに依存したコードを書いたなど
まあマトモなコードじゃなかろうが
>>922 論外
> 上の gcc では -I 以降の /usr/loval/include にユーザ・ライブラリが
> 有る事を示している。
ヘッダファイルはライブラリではない
> ncurses.h は /usr/include に保管されている。
> (正確には、/usr/include/ncurses/curses.h にリンク)
正確に言っているつもりが逆に間違っている
setjmp()/longjmp()使ったことない
>>923 ハケーン。
>>926 どこが同じに読めるんだ。
> レジスタ上の変数が破棄される可能性の話だから
>>923 はそんなこと一言もいってないだろ。
まあまあまた〜り レジスタとメモリどちらに載るかという意味で書いただけなので 無視してもらってかまいません
(゚∀゚) 意味もなくこれ→(゚∀゚)←つけるヤシって嫌い。 (゚∀゚)アヒャ
( ´_ゝ`)フーン
(゚∀゚)呼んだか?
(゚∀゚)次スレまだかよ
(#・∀・)カエレ!!
>>929 つまりmodokiってヤシがUZEEEEEEEeeeeeeeeeeeと、いうことですか?
(・∀・)こっちのうほうがすき。
|∀゚)そんなこというなよ
CとC#の違いを教えてください。 #がついてるかついてないかとか言わないでください。
>>937 書店に並んでいる C、C# の本を一冊ずつ買ってくる。
両方勉強しる。
(゚д゚)ウマー
940 :
デフォルトの名無しさん :02/08/17 16:24
C → C# → も〜っとC → Cどっか〜ん!
>>943 びっくり!五人目のプログラマ見習い登場!?
おジャ魔女ドレミ ヲタがまぎれててキモいんですが。
じゃあ帰れよ
switch文のcaseのなかにreturn;をいれているんですけど,これっていいんでしょうか?
>947 別に構わない
950
951
953 :
デフォルトの名無しさん :02/08/18 06:46
ファイル読み込んでバイナリモードで先頭から1bitづつ配列にいれていきたいのですがどうすればいいですか?
954 :
デフォルトの名無しさん :02/08/18 07:03
for
>>953 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main(int argc, char *argv[]) {
FILE *fp;
int c;
int bit;
int i;
size_t size;
char *vector;
if (argc == 1) {
return EXIT_FAILURE;
}
if ((fp = fopen(argv[1], "rb")) == NULL) {
fprintf(stderr, "%s: %s\n", strerror(errno));
return EXIT_FAILURE;
}
fseek(fp, 0L, SEEK_END);
size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
if ((vector = malloc(size)) == NULL) {
fprintf(stderr, "out of memory\n");
return EXIT_FAILURE;
}
for (i = 0; i < size && (c = getc(fp)) != EOF; i++) {
vector[i] = 0;
for (bit = 7; bit >= 0; --bit) {
vector[i] <<= 1;
if ((c & (1 << bit)) != 0) {
vector[i] |= 1;
}
}
}
return EXIT_SUCCESS;
}
956 :
デフォルトの名無しさん :02/08/18 12:46
>>955 単にbitの並びを逆転させた配列を作ってるだけのような気がするが。。
>>956 は?逆転なんかしていませんが。
バイナリモードでファイルを読んで、先頭から1ビットずつ配列に入れる
という要求をそのままコードにしただけですが、何か間違っていますか?
958 :
デフォルトの名無しさん :02/08/18 14:50
ど初心者丸出しの質問で申し訳ないのですが・・・。 マクロ展開後のソースを読む方法を教えて下さい。 (コンパイルオプションだと思うのですが、探し方が悪いためか、 ドキュメントで見つけられず) 使用可能なコンパイラは、 (1) gcc (2) BCC5.5.1 (3) VC++6.0 の3つです。 (カナリ恥ずかしいですが)よろしくお願い致します。m(_ _;)m
960 :
デフォルトの名無しさん :02/08/18 14:55
>>959 ありがとうございます。
できれば、具体的な操作方法(またはヘルプ検索のキーワード)を教えて頂きたいのですが。
>>957 読み込んだcをMSBから調べていって、vector[i]のLSBからセット
していくんだから、bitの並びが逆転してるのは間違いない。
それが963の要望とあっているかどうかはわからないけど。
レス数が950を超えています。1000を超えると表示できなくなるよ。
(´・∀・`)ヘー
>>958 VC++6.0ならcl /?でオプションの一覧を参照できるだろ。
>>962 つーか963は別に何も求めてないだろ。
さて。
そろそろ
うめとくか
973 :
デフォルトの名無しさん :02/08/19 11:09
scanf("%d %d",from,to); だろ
埋めなくていいよ。
>>973 ネタですか?ねぇ、ネタですか?ネタって言ってくださいYO!!
>>975 int f, t;
int *from = &f, *to = &t;
ってやりゃいいんだ(w
あ、いや、そうなんだけどさぁ…(笑)。
うめうめ
たてたて
980 :
デフォルトの名無しさん :02/08/20 15:55
標準入力関数のエコーバックって消せますか?
UNIX Cで、分割コンパイルのやり方を教えてください おながいします ワケワカンネェヨ ヽ(`Д´)ノ ウワァァァン
>>983 cc -c a.c
cc -c b.c
cc -c c.c
cc -c d.c
cc -o e a.o b.o c.o d.o
>984 まずはリンカではないかえ?
cat a.c b.c d.c e.c > tmp.c && cc tmp.c
それはむしろ結合コンパイル。
ネタをネタ(略
埋めろー!!
埋め立てですが何か?
cat a.c b.c d.c e.c | gcc -x c /dev/stdin
>992 バカモノ! こうだる! --- a.cの中にて --- #include "b.c" --- b.cの中にて --- #include "c.c" それで、cc a.cとすれば完璧。
for c in *.c; do echo "#include \"$c\""; done | gcc -x c /dev/stdin
995 :
デフォルトの名無しさん :02/08/23 06:05
cc -c a.c cc -c b.c cc -c c.c cc -c d.c ar q libe.a b.o c.o d.o ranlib libe.a cc -o f a.o -L. -le
996げっと
1!
2!
3!
だーーーーーーーーーーーーー!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。