トップページ⇒tech
957コメント294KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001スーパーハッカー 日下部陽一NGNG
おれは42才、24年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったらオレに聞け。

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

・comp.lang.c Frequently Asked Questions
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/yfcbookshelf-22/250-3950205-1475419

K&Rで挫折するようなヤツはこれでも買え。
これでわからない、救いがたいヤツはあきらめろ。
・作ってわかるCプログラミング(アヒル本と呼べば通のようだぞ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1005618315/250-3950205-1475419

・前スレ C言語なら、オレに聞け! <10>
http://pc.2ch.net/test/read.cgi/tech/1008300863/l50
0232デフォルトの名無しさんNGNG
>>231
まとめたって別にいいじゃん?
漏れは、この例みたいな一文字変数ならば>>231みたいにまとめちゃう。
視認性が気になるならば一文字変数はなるべく使わない。
0233デフォルトの名無しさんNGNG
>>232
なるほど
thx
0234デフォルトの名無しさんNGNG
Windowsで
画面に複数コントロールを置いたとして
C++などではクラス型にしてサブクラス化すればいいんだろうけれど
Cの場合はどうすればよいんですか?
例えばstatictextの背景色変えたりするのは
設計時に一つ一つのコントロールのwndprocを全部記述しないといけない?
うまい方法があれば教えてください。

最悪の方法はIf文でhandle比較だろうけれど
0235 ◆woDeLPHI NGNG
>234
 なんか
http://pc.2ch.net/test/read.cgi/tech/1009190994/337
http://pc.2ch.net/test/read.cgi/tech/1009071535/183
と同じ種類の質問かな?
0236 ◆woDeLPHI NGNG
だとすれば、
一番簡単なのは
1)SetWindowLongで GWL_USERDATA に背景色を埋め込む
2)WM_CTLCOLORSTATIC でコントロールハンドルから
 GetWindowLongして もう判るよね

事で、背景色だけじゃないなら構造体のポインタを渡してやればいいんじゃないの?
0237デフォルトの名無しさんNGNG
>>235 >>235 SetWindowLonf & GetWindowLongですね、
ようはsetwindowLongでHandleに構造体のポインターを読ませるということですね。

大体見えてきました。ありがとうございます。
0238 NGNG
非常にアホな質問だけど、 返り値ってintとbool(BOOL)どっち使うべきなの?
intはエラー値が返せるつーのはあるんだろうけど、mfcはBOOLだよねぇ
統一できねぇ〜〜

boolの存在意味がわからん。エラー値不要の部分に使うにしてもtrue/falseが逆で混乱の元
一体なんに使うの?
0239デフォルトの名無しさんNGNG
>>238
統一しなくていいから、
関数の前に引数と戻り値の説明を
コメントでつけとけ。
0240デフォルトの名無しさんNGNG
>boolの存在意味がわからん。

1bitで表現できるから、メモリの節約になるんだよ。
(と言ってる人がいたら要注意)
0241デフォルトの名無しさんNGNG
>>1
Cで書いたプログラムの一部を、アセンブリ言語で書く方法を
教えろよ。 
0242デフォルトの名無しさんNGNG
>>241
そういう態度なら一生教えません。
0243デフォルトの名無しさんNGNG
>>242
なんで? おしえてよ、知りたいんだよ。
0244デフォルトの名無しさんNGNG
>>241
処理系依存。
0245デフォルトの名無しさんNGNG
>>241
unsigned char asmcode[]にアセンブラコードぶち込んで
そこめがけてジャンプすりゃいいんだよ。
0246デフォルトの名無しさんNGNG
>>241
例えば、DOSのCの関数をASMで書くときは、その関数の名前の先頭に
アンダーラインを足した名前のプロシージャを書くだろ? そして、関数を
呼び出すと、関数の引数が右から順にスタックに積まれて、関数の実体
である、ASMで書いたコードがcall命令で呼び出されるって寸法じゃん。
 けど、これって、Windowsでも通用するやり方なんかな。 
0247デフォルトの名無しさんNGNG
>241
 貴方の命題は自己矛盾しており実現不可能です

お使いのコンパイラをご指示頂ければ回答可能な質問としては

1)Cのソースがあり、コンパイル出力の一部をアセンブリソース形式で出力したい
2)Cのソースの一部をアセンブリ言語で書き直したい
3)Cのソースの一部にアセンブリ言語を埋め込みたい

があります。
0248デフォルトの名無しさんNGNG
>>246
もちろん通用する。
0249241NGNG
>>247
けっこう難しい日本語だね。 2と3の違いがけっこう微妙で分かりに
くいよ。 まあ、要は、cの関数をアセンブラのコードで直接書くって
やり方だよ。
0250デフォルトの名無しさんNGNG
>>241
ホントにむかつく態度だな。

Cの関数内にアセンブラコードを埋め込む(インラインアセンブラ)のと
アセンブラで書いてアセンブルしたオブジェクトをリンクするのでは
やり方が違う。

おまえは前者でもやってろよ。
0251デフォルトの名無しさんNGNG
たぶん>>241はチョンブラなんだよ。
暴力的なことが男らしいと痛い勘違いをしてるんだよ。
0252241NGNG
>>250
まあ、まあ、そんなにプンスカすんなよ。又ー利いこうよ、又ー利と
 インラインアセンブラ使ったら、擬似命令つかえねーじゃん。
オレが言ってるのは、それぞれ別々に、コンパイルとアセンブルして
オブジェクトを結合するやり方なんだよ。 
0253デフォルトの名無しさんNGNG
ひょっとしてリンカの使い方が分からんのか。
0254241NGNG
>>253
ばかにスンナよな. リンかぐらい使えるってよ。 けど、オレが出来る
のは、DOSまでであって、Windowsの場合を知りたいんだYO!
 Windowsの、内部をあんまし知らないし、下手にアセンブラでコードィ
ングしたら、一般保護例外が出ちゃうし。 そもそも、下手にレジスタと
かイジるコードとか書いてもいいのかなっと思っただけ。
0255デフォルトの名無しさんNGNG
具体例が無いから解らん。
まずはWindowsの勉強でもしろ。
0256247NGNG
お使いのコンパイラをご指示頂けなかったので C++Builderと仮定して話しを進めます

1、拡張子がpasのファイルを作成して下さい
2、アセンブラ関数は
function 関数名(引数):返り値;
asm
 アセンブラによるコード
end;

とすれば、アセンブラによりC++から呼び出される関数が作成出来ます
0257247NGNG
なお、C++BuilderでもVC++の場合と同じく
拡張子 .ASM のファイルを作成し、TASMを呼び出す方法もありますが
上記方法がお手軽です
0258デフォルトの名無しさんNGNG
>>256 それってPascalじゃん。

C++でも単独でインラインアセンブラは使えるよ。
それに書いている内容は単にアセンブラの関数をPASCALのインラインで書いているだけだ

アセンブラだろうとPASCALだろうとhファイルで明示的に示してあるものは
call文で呼べるのでは?

>>254 ばかというより無知なんだからもう少しアセンブラとCについて調査すべきでは?
いまの無知のレベルは1日か2日で解消できるレベルだ。
リンカの使い方はわかってないぞ。
MP3関連のソースとプロジェクトファイルを探してソースをみれば
MASMやNASMとVC++やGCCになっているはずだから
その辺(特にmake)をじっくりみることだ。

大体アセンブラで組んで高速化が期待できないものは無理にアセンブラを使うべきではない。
ループ演算とか独立した関数とかに特化するか
CとかPASCALで書いてから展開すべきだ
C単独やC++でのWin programingをやってから出直せ
0259258NGNG
BCB使いでインラインアセンブラに興味のある人は
割と見つけやすいサンプルとして3DNOW関連のヘッダーを探すといいかも
0260デフォルトの名無しさんNGNG
>下手にアセンブラでコードィングしたら、一般保護例外が出ちゃうし
そりゃ下手だ
0261デフォルトの名無しさんNGNG
malloc系関数でいつも何も考えず
p = (char *)malloc(sizeof(char) * mojisuu);
if(p == NULL) return;
みたくやってます。でもよく考えると何故mallocが失敗するんでしょうか?
ヒープを使い切ったとか?mallocが失敗する理由って主に何があるの?
unixかwindowsでお願いします。

以前
if((p = (char *)malloc(sizeof(char) * mojisuu))==NULL)
   p = (char *)malloc(sizeof(char) * mojisuu);
見たく、一度失敗したらもう一回繰り返しているのみたことあるけど
こういうやり方って意味あるんでしょうか?
0262デフォルトの名無しさんNGNG
>>261 意味ある
ふつー、ないと思われ。
そんなモノが通る処理系があるか、よく知らない。
0263デフォルトの名無しさんNGNG
>261 しぱいする原因は、メモリがホントに不足する以外に
  メモリが断片化して連続して領域を取れない場合がある

後の問題は、たぶん意味はな。
でももしかしてマルチスレッドで動いているなら
その間に他のスレッドでヒープが空くかもしれないけど、時間を
置いてないので確率はゼロに近い
0264デフォルトの名無しさんNGNG
なるほど。
どうやらmallocミスったら潔くあきらめるのが良さそうですね。
それかwhileでとれるまで回すとか(w
0265 ◆woDeLPHI NGNG
>264 Cの場合、

 先にある程度の大きな領域を非常用にダミーでmallocしておいて
 メモリ不足になったらこの領域を開放して再度 mallocしてみる という自作アロケート関数を用意

で、メインループのどこかで この非常用ダミー領域が使われた場合に警告を出して安全に
終了するよう全力を尽くすと

いう方法が常套手段かと
0266デフォルトの名無しさんNGNG
タイムアウト処理とかするのか〜 >> 264

うーん。やっぱ皿とフォークがそろってから
食事にとりかかるのが美しいでしょうね。
なければやらない。
そうじゃないと奪い合いしているようで。
0267デフォルトの名無しさんNGNG
>>265-266
つまり一番最初にガバッととっちゃうんですか?
自分はいつも必要なときにmalloc。とれなきゃ処理を終わらせちゃいます。
あちこちでmallocするのでいちいち失敗の処理とか書いてます。
そうすると異常系のデバッグが大変だけどね。
0268 ◆woDeLPHI NGNG
>267 そうですよ〜 ガバっとって程じゃなくて

これは非常用だから文字列用とかファイルバッファとかが収まる程度の大きさね

すると、文字列用とかファイルバッファ用ではあんまり厳密にチェックしなくて済むでしょ?
大きな領域とか取る前だけチェックすればいいでしょ?

異常処理がだいぶ楽になるでしょ?

C++なら例外使えばいいんだけどね
0269デフォルトの名無しさんNGNG
ははぁ。なるほど。つまり

�@最初に予備のメモリをある程度取る
�Amyallocでアロケート。戻り値はチェックしない。
�Bmyallocはアロケートできなければ予備を解放してアロケート
 予備を使ったというフラグもたてる。
�Cどこかでフラグをみてメモリがやばそうだから終了処理に移行

というかんじですか?
0270デフォルトの名無しさんNGNG
あのぅ、C言語プログラムのmainを呼び出すまでの起動ルーティンってなんですか?
教えてください。よろしくお願いします。
0271仕様書無しさんNGNG
なんですか?っつわれても困りますぅ
「スタートアップルーティン」とかで検索しろやゴルァなのですぅ
0272デフォルトの名無しさんNGNG
ありがとうなのですぅ。
解からなかったら又質問させてもらいます。
0273デフォルトの名無しさんNGNG
gccでjpegとかgifの画像を表示させる
関数とかライブラリを教えてください
0274デフォルトの名無しさんNGNG
>>273
libjpeg, libgifで検索してみ
0275デフォルトの名無しさんNGNG
変数をヘッダーファイルで宣言するのとソースファイルで宣言するのは意味が違うのでしょうか?
またデータセグメントの変数とスタックの変数はどう違うのでしょうか?
0276273NGNG
>274
助かりました。どうも
0277デフォルトの名無しさんNGNG
int a;
a = 10;

と

int a = 10;

は意味が違うのですか?
0278デフォルトの名無しさんNGNG
やってることは同じ。
0279デフォルトの名無しさんNGNG
質問です。
それぞれテキスト領域、初期化データ領域、bss領域、スタック領域のどれに格納されるのでしょうか。
1.外部変数
2.関数内でstatic int hoge = 1;
3.関数内でstatic int hoge;
4.関数外でstatic int hoge = 1;
4.関数外でstatic int hoge;

また、初期化データ領域、bss領域が違う必然性はゼロ初期化するか否かだけなのでしょうか。
0280デフォルトの名無しさんNGNG
>>279
普通は初期化されてなければbss、一部でも初期化されてればdata
bssは実行ファイルを小さくする意味がある
静的持続時間の変数の格納場所にスタックは使えない
0281デフォルトの名無しさんNGNG
HTTPのプロトコルの中で、レスポンスでDate: Fri, 04 Jan 2002 05:00:00 GMTみたいなの
が表示されるのですが、このGMTっていうのは、C言語で何の関数を使えばよいのでしょうか?
0282デフォルトの名無しさんNGNG
>>279
関数内というのを何らかのブロック内と判断すると---
1と、ひとつめの4とふたつめの4は、スコープをファイル中に
制限するかどうかの違いのみ。
すべて静的なので、初期化データ領域かbss領域に割り当てられる。
データかbssかは、初期化されているかどうかで決まる。
bssは実行ファイル中にはその変数のサイズのみ保持していて
ロード時に実際の領域の分だけメモリを確保する(で、そのあと
ゼロクリアされる)。どこかで、bssはBetter Save Spaceとかって読んだ気が。
ほんとかな??

いいかげんな言い方をすると、「静的」という言葉は、
コードの実行開始時に確定している、といった意味で
使われている様子。Cに関して言えば、staticというのが
一般的な静的という意味の指定と、スコープの限定の両方に
使われるため混乱しがちかも。

UNIXが使える環境があるならば、大きな配列を作って、
初期化したりしなかったり、staticにしたりautoにしたり
してみて、各実行ファイルについて、sizeコマンドを
実行するといいかも。Winなら、DLLやEXEをクイックビューアで
みれば、ある程度のことはわかります。そこまでしなくても
静的であることがわかっているならば、実行ファイルの
ファイルサイズでデータかbssかはなんとなくわかるかも。
0283デフォルトの名無しさんNGNG
>>281
GMTの文字列を作成したいの?
それとも解析してtime_tとかに変換したいの?
せめてそれくらいは教えてちょん。
0284デフォルトの名無しさんNGNG
280さん282さんありがとうございました。
とても解かりやすかったです。
0285デフォルトの名無しさんNGNG
>>283
GMTの文字列を作成したいのです・・・。
0286ななしさんNGNG
1 gettimeofdate()
2 localtime() あるいはlocaltime_r()
3 sprintf()で出力。でもlocaltime()はその名のとおり時差が
 入っているので、修正しとくこと。
0287ななしさんNGNG
gmtime()でなくてlocaltime()なのは、サーバ上のファイルをGMTで管理
する奴はまずいないと思われるので。
まぁ好きにしてくれ。
0288デフォルトの名無しさんNGNG
strftime使えよ
0289           NGNG
K&Rってライオネルリッチーの略ですか?
0290デフォルトの名無しさんNGNG
しかも、"GMT"なのにlocaltime()とか言ってるし
0291デフォルトの名無しさんNGNG
>289
カンキチ・リョウツの略です。
なぜ真ん中が&なのかについては諸説あります。
0292デフォルトの名無しさんNGNG
カニチャーハンこと蟹飯じゃなかったのか?
0293デフォルトの名無しさんNGNG
その相方のリョウツさんですが、ちょっと悪人面じゃありませんか?
0294デフォルトの名無しさんNGNG
Kuririn&Rice
0295デフォルトの名無しさんNGNG
汎用性のないラッパー関数を持ち出して煽りか?
time_tを与えたら直接文字列を生成してくれるなら重宝するが。
汎用性がないなら素直にsprintf使ったほうが便利と思われ。
つーか、使いたくなるだろうな。

で、gettimeofdateじゃなくてgettimeofdayだろうな。
0296デフォルトの名無しさんNGNG
read.cgiのソース
int get_lastmod_str(char *buf, time_t lastmod)
{
  strftime(buf, 1024, "%a, %d %b %Y %H:%M:%S GMT",
    gmtime(&lastmod));
  return (1);
}
0297デフォルトの名無しさんNGNG
本当にstrftimeを知らないのかな。ANSIにもPOSIXにもあるのに。
それとも、localtimeで日付を管理と言う位だから
MS-DOSをサーバーOSとして採用しているのかな。
0298デフォルトの名無しさんNGNG
汎用性のないラッパー関数ってlocaltime_r()のことか。
0299デフォルトの名無しさんNGNG
俺もそんなに詳しくはないけど、
strftime()のフォーマットの細部に差があるのは知ってるよ。
だけど、RFC822形式の出力に使う程度なら問題ないはずだけどね。

少なくとも、OSがファイルの日時をローカル時間で管理しているとは思わないし、
time()やstat()/fstat()のtime値がTZに依存しない事も知っている。
だから、「timeをGMTで出力」にgmtime()でなくlocaltime()を使おうなどとは
考えた事もない。
0300初心者NGNG
cosとsinの値を出力したんですが値が変です。90といれると両方とも
0になったりします。何がおかしいのか教えててください
#include<stdio.h>
#include<math.h>
int main(void)
{
double s,c,g;
scanf("%d",&g);
s = sin(g);
c = cos(g);
printf("sin= %f\n",s);
printf("cos= %f\n",c);
return 0;
}
0301デフォルトの名無しさんNGNG
つか、degreeでなくradianで入れろよ。
0302デフォルトの名無しさんNGNG
doubleをscanfで取るのに%dは止めた方がいいような。
0303デフォルトの名無しさんNGNG
関数に文字列を渡す時、(char[100])
先頭のポインタだけを渡すのが一般的なのでしょうか??(&char[0])
0304デフォルトの名無しさんNGNG
そうですね。
char[100]を構造体でくるんだり、文字列の
末尾ポインタだけを渡すようなことは、
あまり一般的ではないと思いますよ。
0305デフォルトの名無しさんNGNG
char[100]???
0306デフォルトの名無しさんNGNG
こんばんは。質問します。
・ヒープ領域って具体的にどんなのですか?
 絶対アドレスのココからココまで、みたく決まってるんですか?

・ヒープってプロセス事に非干渉なんですか?ほかのプロセスに壊されることはないの?

・ローカルやグローバルにもっている静的な配列や変数はヒープに作成されるの?
いろいろ教えてください。とりあえず、unix&winで。m(_ _)mペコリ
0307デフォルトの名無しさんNGNG
char *buff
char* buff

下側のように書きたいです。
                            以 上
0308デフォルトの名無しさんNGNG
Cのソース読んでるとたまに
1Uとか0Uとか
でてくるんだけど、これって何?
0309デフォルトの名無しさんNGNG
サーバラックの高さ。だから、int i=5U;とかくと、5Uの高さがcmで与えられる。
なお、単位を変更するには、setlocale(LC_LUCK, "ISO")などと
すればよい。類似のものに、int k=2B;などがある。
0310デフォルトの名無しさんNGNG
>1Uとか0Uとか
>でてくるんだけど、これって何?

ここで聞くなとは言わないけど、
こういうどんなダメな解説書にも必ず説明があるような
事を聞く人って、本を買わないのか?
0311日下部さんチェキ!NGNG
>>308
たとえば、10uはunsigned int型の10のことですよ。
他には、lがついてればlong型、fがついてればfloat型です。
0312デフォルトの名無しさんNGNG
>>309
> setlocale(LC_LUCK, "ISO")
好運量もISO規格化されてたのか。
0313デフォルトの名無しさんNGNG
こんにちは、質問させてください。
私は現在C言語を勉強しているものですが
二次元配列の引数の渡し方がわかりません。
どうか教えてください。
0314デフォルトの名無しさんNGNG
>>306
とりあえず俺が答えられるのは
> ・ヒープってプロセス事に非干渉なんですか?ほかのプロセスに壊されることはないの?
1. ヒープはプロセス空間の一部です。
2. *まともな*メモリ保護を持っているOSの場合、
   自分のプロセス空間以外の空間を破壊することはありません。

よって、*まともな*メモリ保護を持っているOSの場合、
ヒープを他プロセスが破壊することはありません。

ちなみにメモリ保護自体持っていないOSとしてMS-DOSがあります
# MS-DOSはOSかどうかを議論するつもりはないです
0315日下部さんチェキ!NGNG
>>313
/*test*/
#include <stdio.h>
void foo(char (*p)[10]){
printf("%s\n", p);
printf("%s\n", p+1);
}
int main(int argc, char *argv[]){
char str[][10] = {"january", "february"};
foo(str);
}
わたしもビギナーですが、確かCプログラミング専門課程という本に詳しくのってますよ。
0316デフォルトの名無しさんNGNG
よく、浮動小数点は誤差があるので、金銭の計算には
使ってはいけないという話をききます。
こんど小数部が二桁の計算を行うので、どのくらい
誤差が出るかとおもい、ためしにVC++で下のような
処理を書いて試してみました。
しかし、どうも誤差はでないようです。
扱う値が小さい場合は、誤差はでないのでしょうか?


{
  srand(time(0));

  const int loop_num = 10000;
  int total = 0;
  double real_total = 0;
  for (int i = 0; i < loop_num; i++) {
    int n1 = rand() % 1000; // 整数部
    int n2 = rand() % 100; // 小数部
    total += n1 * 100 + n2; // 整数計算

    double d = (double)n1 + (double)n2 / 100; // 実数計算
    real_total += d;
  }
  TRACE("%f\n", (double)total/loop_num/100); // 整数での計算結果
  TRACE("%f\n", real_total/loop_num); // 実数での計算結果
}
0317デフォルトの名無しさんNGNG
>ちなみにメモリ保護自体持っていないOSとしてMS-DOSがあります

Xの付かないMacOSモナー
0318デフォルトの名無しさんNGNG
>>316
乱数つかってるところ
int n1 = 0 ;
int n2 = 3
にでもして、最後に
if(total/100.0==real_total) TRACE("hogehoge\n") ;
でもしてみそ
0319デフォルトの名無しさんNGNG
そこそこ大きいソース(20000〜)を読む時コツってありますか?
0320デフォルトの名無しさんNGNG
>>319
モジュール構成図を書け
グローバル変数の一覧表や構造体の一覧表を作れ

まともな関数名を付けている場合、これだけで処理の概要はわかる
まともなソースでない場合、あきらめろ
例)ローカル変数がない、
 1000行以上ある関数が何個もある
0321デフォルトの名無しさんNGNG
今tagとviとgrep使って追ってるんですがやっぱりそこまでする必要ありますかね?
日本語化の類いなんですけど.

後諦めきれない場合は自分で書いた方が早いですか?
人のソース見るのって大変だ.
0322NERONGNG
なぜ、どの本もファイルのオープン、クローズまでしか載ってないのですか?
Cでビジュアル的な部分の作り方を書いてある本を見たこと無いのですが。
 RPGの作り方や、シューティングの作りかたとか
0323デフォルトの名無しさんNGNG
>>322
RPGやシューティングでもファイル操作は必要だろうよ。
“ビジュアル的”ってのが何を指しとるのかしらんが、
例えばWindowsならDirect Xとかか?
そういったライブラリは“Cの本”の範疇外だろうよ。
Cの本ではなく、画像処理系の本を買って読め。
0324デフォルトの名無しさんNGNG
>>322
Cの入門書とかにそういう話が出ないのは、「ビジュアル的な部分」は
Cの仕様の範囲外で、OS依存の部分だから。

「Windowsで」のようにOSを限定した本なら、探せばあるでしょう。
でもそれは「Cの本」じゃないよね。
0325デフォルトの名無しさんNGNG
あ、画像処理のアルゴリズムとかの話だったら、OS依存じゃないか。
でもどっちにしてもCの本ではないな。
0326デフォルトの名無しさんNGNG
>>307
それ、C++の作法よ。
C言語だと char *buff の方が普通。

>>313
出来ないこともないけど、面倒だからやめとけ。
2次元配列やめて、C++とSTL勉強してstd::vectorを2重にして使え。
std::vector<std::vector<Type> >
関数に渡すときには参照渡しな。

>>325
結局、表示部分で機種依存な本ばっかりだけどな。
0327デフォルトの名無しさんNGNG
関数で計算した内容が反映されない(通らない)のはどうしてでしょうか?

void hen(float ab,float b,float c);
for(i=0;i<N;i++){
hen(ab[i],b[0],b[i]);
printf("%4.1f\n",ab[i]);
}
void hen(float ab,float b,float c){  /*関数*/
if(ab>1){
ab=b*c/10;
}
0328デフォルトの名無しさんNGNG
皆さんに質問です。
C言語などで文字リテラルってありますよね。
一般的には処理系依存と言うことになっているけど、ASCIIに関しては
ほとんどの文字コードでは下位7bit以下がASCII互換だと思います。
と言うことは英数字のみに限定すればASCIIの16進コードで
処理してしまってよろしいのでしょうか?
それともASCII互換ではない文字コードを標準文字セットとして使う
OSやコンパイラがあるのでしょうか。
知っている方教えて下さい。
0329デフォルトの名無しさんNGNG
>>327
何故と問われても、“引数”という物を理解してくださいとしか…

float hen(float ab,float b,float c){
if(ab>1){
return b*c/10;
} else {
return ab;
}
}

for(i=0;i<N;i++){
ab[i]=hen(ab[i],b[0],b[i]);
printf("%4.1f\n",ab[i]);
}
03302月発表なド素人君NGNG
課題研究で2月にじゃんけんゲームを発表しなければならなくて、
間に合う気がしなく、高校卒業不可能の危機におちいってる者です。
C言語がここまで難しいものだったとは、今頃後悔している所です。
ただ後悔してももぅ仕方ないのでなんとかして完成させようと思っています・
今日は質問させてもらいます。
WindowsでSDLを使って、グーとチョキとパーの絵を画面に出し、
選択したら、相手のランダムの手で勝ち負けの結果を出し、
続けるか続けないか尋ねるという形で
最終的に結果を表示できるような物にしたいです。
結果の数字や、じゃんけんの手、それから背景画面すべて
用意したbmpファイルを載せる形にしたいと思っています。
家では、Cマシーン ttp://homepage1.nifty.com/kentake/ を利用させていただいており、
学校ではTurbo C++を利用しています。
もちろん発表は学校で行われるのですが、
どうも分からない事だらけで助言をお願いしたい。
SDLをヘッダファイルとして利用できるようにする方法
(新たなヘッダファイルを加える方法)が分からないのですが、
分かる方、助言お願いいたします。
0331NERONGNG
 皆さん回答ありがとうございます。 早速ですがもうひとつ
質問させてもらいます。 Cの基楚本をクリアーした後、
皆さんどのような道を歩んだんですか? 教えてください。
■ このスレッドは過去ログ倉庫に格納されています