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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
C言語質問スレッド Part 24

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

・前スレ
<23> http://pc.2ch.net/test/read.cgi/tech/1023024817/l50

コンパイラなどのリンクは>>2-3
0002デフォルトの名無しさんNGNG
【コンパイラ】
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
0003デフォルトの名無しさんNGNG
(・∀・)オツカレー
0004デフォルトの名無しさんNGNG
:::::::::::::::::::/ ,r:::::::::::.:::::::::.:: :
:::::::::::::::/ /::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
:::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
:::::/ /::::::::::::::`(::::::: ,ヘ:::::::::::::::::::::: ヽ
::::::し ::::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
:::::::::::::::::::::::::::::::::::::: `' ::::::::::::-‐ ´
      ハァ…ハァ…
0005デフォルトの名無しさんNGNG
クックック
0006 NGNG
a[Cnt++]=1;
短いコード書きたい時に,上のようにして使いますか?
a[Cnt]=1;
Cnt++;
を略したい時とかに
0007デフォルトの名無しさんNGNG
またポケコンスレかよ
0008デフォルトの名無しさんNGNG
>>6
そんな書き方はせんでよろしい。
0009デフォルトの名無しさんNGNG
今回の 1 は誰ですか?
カーニハンかな?
0010デフォルトの名無しさんNGNG
ていうか++とか+=とかいらないと思うの俺だけ?
0011デフォルトの名無しさんNGNG
>>10
地獄の苦しみ。
そんなあなたはVBとかObjectPascalとかを使って悔い改めて下さい。
0012デフォルトの名無しさんNGNG
普通人間は「Aに1を加える」と考え、
「Aの値に1を加えたものをAに代入する」とは考えない。
++や+=は、人間の思考に沿った良い記述方法なのだ。
0013デフォルトの名無しさんNGNG
一部のプロセッサに沿った記述法だろ
0014デフォルトの名無しさんNGNG
>>12
純粋にタイプ量が増えるというのも上げてみたい。
0015デフォルトの名無しさんNGNG
>>12
自分は数学系の人間だけど、=とか配列の使い方とか、最初はかなり戸惑った。
コンパイルのたびに何度もエラーメッセージを出して、繰り返すうちに慣れた。
0016デフォルトの名無しさんNGNG
誰もINCにコンパイルされるとは書かんのか。
0017デフォルトの名無しさんNGNG
凄い初心者な質問で恥ずかしいのですが、

void test_strdup(char **string)
{
string[0] = strdup("test");
fprintf(stderr, "%s\n", string[0]);
}

void main(int argc, char *argv)
{
char **string;

test_strdup(string);
fprintf(stderr, "%s\n", string[0]);
}

とはできますよね。
で、この場合に文字列の配列ではなくて、文字列へのポインタを関数の呼出の引数
に与えて、呼出された側で文字列へのポインタのアドレスを変更する場合には
どうしたらいいんでしょうか?

void test_strdup(ここはどうしたらいいんですか?)
{
ここはどうしたらいいんですか? = strdup("test");
fprintf(stderr, "%s\n", string);
}

void main(int argc, char *argv)
{
char *string;

test_strdup(ここはどうしたらいいんですか?);
fprintf(stderr, "%s\n", string);
}

以上、よろしくおねがいします。
0018デフォルトの名無しさんNGNG
void test_strdup(char *string)

?
0019デフォルトの名無しさんNGNG
test_strdup(char** string) か char* test_strdup(void) にしれ。
つか、test_ って…
0020デフォルトの名無しさんNGNG
>>19
呼び出し元にfreeを強要するのってあり?
0021デフォルトの名無しさんNGNG
>17
つまり、こうしたいとでも?
もっとポインタ型の勉強が必要だと思われ。


void test_strdup(char **str) {
*str = strdup("test");
fprintf(stderr, "%s\n", *str);
}

int main(void) {
char *str;

test_strdup(&str);
fprintf(stderr, "%s\n", string);
}
0022デフォルトの名無しさんNGNG
#define 日下部陽一死ね void
0023デフォルトの名無しさんNGNG
しまったぁ↓
fprintf(stderr, "%s\n", string);

適当に直しといて>17
0024デフォルトの名無しさんNGNG
>>20
strdupが呼び出し元にfreeを要求してますが、なにか?
0025デフォルトの名無しさんNGNG
>>17
上の方もできてないという罠。
mainの中の1行目の宣言は char *string[1]; の間違いか?

test_strdupはそのままで合ってるから、mainの方を
 char *string;
 test_strdup(&string);
のようにするよろし。

test_strdupの中の string[0] を *string に直すとなおよろし。
002617NGNG
>>21さん
>>25さん

ありがとうございます(^^;

呼出した方でアドレスを与えて、呼出された方で、配列と同じように
処理すればいいんですね。

mainの方で(&str)として、test_strdupの方で(*str)として(たり色々
試して) たのでうまくいきませんでした。
#構造体を確保したかった時にも同じようなことがあった。

こういうのって、どこで学んだらいいんでしょう?
0027デフォルトの名無しさんNGNG
本
002817NGNG
>>27
そうですね。とりあえず学校に行くわけじゃないから本読みます。
どんな本がいいですか?
0029デフォルトの名無しさんNGNG
>>28
K&R以外ならどれでも
0030名無し募集中。。。NGNG
>>29
K&Rで独学してちゃ駄目ですか?
0031デフォルトの名無しさんNGNG
>>30
最終的に理解できてプログラムが書ければ良し。。
0032デフォルトの名無しさんNGNG
>>30
できるんならいいよ
003330NGNG
>>31-32 レスどうも。
一通り読んで、演習問題やったりしているんだが
このスレのかき込みもあんまり理解できていない
0034デフォルトの名無しさんNGNG
>>33
実戦から学べば良し。
オリジナルで数本何か書いてみればいい。
0035デフォルトの名無しさんNGNG
cでDllつかうのってどうすればいいんですか?
解凍ソフト作りたいんですが・・・
0036デフォルトの名無しさんNGNG
>>35
LoadLibrary
GetProcAddress
0037デフォルトの名無しさんNGNG
char *p,*temp;

*p=(char *)calloc(2,sizeof(char));
*temp=(char *)calloc(10,sizeof(char));

*p[0]=1;
*p[1]=2;

このpの中の1と2をtempにコピーできる関数はありますか?
temp=p;
だとアドレスをコピーしてしまうので,
temp[0]=5;
とやってしまうと,*pのないようまで変更してしまうので。
0038デフォルトの名無しさんNGNG
*p[0]=1;
*p[1]=2;
 ↓
p[0]=1;
p[1]=2;

char temp[2];
temp[0] = p[0]; //1のピーコ
temp[1] = p[1]; //2のおすぎ
0039デフォルトの名無しさんNGNG
*p=(char *)calloc(2,sizeof(char));
*temp=(char *)calloc(10,sizeof(char));
 ↓
p=(char *)calloc(2,sizeof(char));
temp=(char *)calloc(10,sizeof(char));
0040デフォルトの名無しさんNGNG
>>37
3行目と4行目で警告。char型にchar *型を入れるな。
0041デフォルトの名無しさんNGNG
























ともっち!大好き!
0042デフォルトの名無しさんNGNG
関数に型を送りたいのですが,可能ですか?
それをもとに,配列を確保したいのですが
0043デフォルトの名無しさんNGNG
>>42
void (void *a)
{

}
0044デフォルトの名無しさんNGNG
>>42
そろそろC++の初めどきです。
004542NGNG
できないのですか?
0046デフォルトの名無しさんNGNG
>>45
> 関数に型を送りたいのですが,可能ですか?
そもそも、この「関数に型を送る」の意味が分からんよ。やりたいことを明記せい。
0047デフォルトの名無しさんNGNG
十分分かるぞ。

>>42
自分で型を(名前などで)管理すれば可能だが
面倒だね。C言語自体にその機能は無い
0048デフォルトの名無しさんNGNG
template <typename T> T* makeArray( size_t count )
{
 return new T[count];
}
0049デフォルトの名無しさんNGNG
>>45 だからC++をやれというとるでしょうが
template<typename Type, int n>void f(){Type ta[n];} //当然動的確保じゃなくてもOK
f<int, 256>(); //int型256個の配列ができた
0050デフォルトの名無しさんNGNG
>>47
どう理解したの?

>>48
「型を元に配列を確保したい」と言ってるから、実は

if (型 == Player)
  プレイヤー用の配列を確保 & 初期化
else (型 == Cell)
  セル用の配列を確保 & 初期化

だったりしないか。分からんが。

単にメモリブロックを確保したいだけなら、それこそ malloc() に sizeof(配列要素) *
要素数で終わりだしねぇ。
0051デフォルトの名無しさんNGNG
>>49
C++ 的には配列捨て捨てで vector<T> で良いかと。
0052デフォルトの名無しさんNGNG
>>50
だよねぇ
型を渡してってのが意味不明、
Cじゃメモリ確保に型なんか必要ないし
0053デフォルトの名無しさんNGNG
ポインタについて教えてください
0054デフォルトの名無しさんNGNG
本買え。
0055デフォルトの名無しさんNGNG
俺の体の中ほどにあるとんがってピクピク動いている硬い竿がポインタ(指し示す者)で
ついでにこの亀のような形のものがセグメントアドレスです
005653NGNG
>>54
持ってるけど分からない・・・
0057デフォルトの名無しさんNGNG
C99に対応したコンパイラって出回ってますか?
0058デフォルトの名無しさんNGNG
分かるまで買い続けろ。
まさかたかだか1〜2冊というわけではあるまいな。
0059デフォルトの名無しさんNGNG
そこまで市内とポインタが分からんのか?
歳はいくつぐらい?
0060デフォルトの名無しさんNGNG
>>59
わからん人にはわからんみたい。
って言うか実戦で使ってみないことには完全には理解できないでしょ。
メリットとかそもそもの使い方とか。

本だけ読んで自己満足してその知識だけでここでなれ合っているというなら問題だけどな。
0061デフォルトの名無しさんNGNG
>>55
じゃあ、ミルクみたいな奴はなんというのでしょうか?
0062デフォルトの名無しさんNGNG
教訓
 習うより慣れろ
0063デフォルトの名無しさんNGNG
>>62
故Dr.パソコンに合掌
006442NGNG
わかりずらくてすみません。
callocを使って関数で任意の型を作りたいのですが,
(char *)の部分は,型を送らないと任意の型を作れないので,型を送りたいんです。
0065デフォルトの名無しさんNGNG
>>64
まださっぱりわからん
型を作るって何?
型を送れないと・・・って何?
0066デフォルトの名無しさんNGNG
>>64
typedefと構造体か素直にC++か。
0067デフォルトの名無しさんNGNG
>>64
演算をしないならCのキャストは無敵だから何の心配もいらない。
サイズだけ分かればよい。でもやっぱり多態とRTTIが最強
0068日本語を勉強したいです。NGNG
>>64
void *yattekure(size_t count,size_t size){
return malloc(count * size);
}

sonohennokansu(){
int *pi;
char *pc;
pi = (int *)yattekure(10,sizeof(int));
pc = (char*)yattekure(16,sizeof(char));
・・処理・・
free(pi);
free(pc);
}
とか。
0069デフォルトの名無しさんNGNG
やっぱり無理なんですかね?
void ( void * a,size_t count,size_t size,?? kata )
{
 a=(kata *)malloc(count * size);
}

のようにしたいのですが,kataの部分がどうやって送っていいのかわかりません。
void *ではないですしね。
0070名無しさん@カラアゲうまうまNGNG
>>64
> わかりずらくてすみません。
すげーわかりずらい。

#define allocate(n, type) (type *)calloc((n), sizeof(type))
0071デフォルトの名無しさんNGNG
>>69
その微塵も意味のない
(kata *)へのキャストはなんですか?
何か根本的に間違ってませんか?
0072デフォルトの名無しさんNGNG
>>70

ありがとうございます
それをつかえば,できますね。
defineがあったのか。
0073デフォルトの名無しさんNGNG
char *moji="aあaあ";

moji[0]=?; //a?
moji[1]=?; //あ?
moji[2]=?; //a?
moji[3]=?; //あ?

全角文字も半角文字も一つの配列に入るのですか?
0074デフォルトの名無しさんNGNG
>>73
SJISと仮定して全角文字は2Byteです。
プログラムも良いけどコンピュータアーキテクチャとかも学ぶと吉。
0075デフォルトの名無しさんNGNG
comってなんですか?
0076デフォルトの名無しさんNGNG
>>75
俺が知ってる限りで3個以上意味がある。
0077デフォルトの名無しさんNGNG
どのcomよ?
0078デフォルトの名無しさんNGNG
>>75
むむむ・・・。
0079デフォルトの名無しさんNGNG
computer-output microfilm
0080デフォルトの名無しさんNGNG
>>75
奇怪語ONLYの最大64KBの実行可能ファイルよ
0081デフォルトの名無しさんNGNG
漏れは関東出身なんだが、最近からあげは塩コショーで食うのがいいと思うようになってきたage
0082デフォルトの名無しさんNGNG
どうでもいいが>>69はメモリリークする。
0083デフォルトの名無しさんNGNG
>>82
どうでもいいな・・・。
0084デフォルトの名無しさんNGNG
あー、Cって参照使えなかったのかー。

>>80
Turbo C/C++だとタイニーモデルで作れたよ。
0085デフォルトの名無しさんNGNG
>>81
唐揚げはわさびがあうぞ
0086デフォルトの名無しさんNGNG
>>70
だめでした
allocate(10, char);
と使いましたが
0087デフォルトの名無しさんNGNG
何がどう駄目だったのか書かないところを見ると、
かなりのハクチのようですな、、、
0088デフォルトの名無しさんNGNG
signedな数に最大値より大きい数を代入した時は
オーバーフローして未定義だけど、
unsignedな数に同じことをした時にはどうなるの?
オーバーフローしないとか書いあったんだけど、
それは、勝手に最大値に丸められるということ?
0089デフォルトの名無しさんNGNG
>>88
いや、単にオーバーフローしたビットが省かれる。
0090デフォルトの名無しさんNGNG
unsignedだってオーバーフローするんでないかや?
0091デフォルトの名無しさんNGNG
数値計算やってるものですが
C言語、わかってたつもりなのに全然わかってなかったです
関数に二次元配列を渡す方法がわかりません
大きさ不定の二次元配列を渡す方法がわかりません
それからポインタのこともわかってなかったです

配列のポインタのことをよく書いてあるHP教えて下さい
それからポインタのことを語って下さい 語りつくして下さい
お願いします!!!
0092デフォルトの名無しさんNGNG
>>88
unsigned int a=-1;
a+=2;
printf("%d",a);
0093デフォルトの名無しさんNGNG
ポインタはメモリのアドレスをポイントするで終わりでないの?
0094デフォルトの名無しさんNGNG
>>91

void hoge(DATA **dat)
{
}
0095デフォルトの名無しさんNGNG
>>87
そろそろ「型を送る」人は放置で良いかと……。自分の置かれている状況と解決
すべき問題を明確に示せない人には、掲示板でアドバイスするのは無理だよ。
0096デフォルトの名無しさんNGNG
1次元な配列を作って先頭アドレス渡して、受けとった関数で
自前に2次元的にアクセスするとか?
0097デフォルトの名無しさんNGNG
>>87
もう諦めてvector<T>を使いなさい。
009891NGNG
>94
ポインタのポインタと二次元配列は違うのでは???
0099デフォルトの名無しさんNGNG
>>89
そうなんか…Thx!

>>92
printf("%d");
つうのは、signedじゃなかったけ?
010097NGNG
ごめん >>86 の間違い。
010191NGNG
ようするにどんな大きさの二次元配列でも引数にとれる関数を書きたいのです
0102デフォルトの名無しさんNGNG
vectorクラスはどういうことですか?
vector<T>?
0103デフォルトの名無しさんNGNG
>>98
ポインタに配列の先頭アドレスを代入してるってことだよ。
0104デフォルトの名無しさんNGNG
配列の先頭要素はポインタではなかったですか?
0105デフォルトの名無しさんNGNG
>104
ではない
0106デフォルトの名無しさんNGNG
>>91
http://www.google.co.jp/search?hl=ja&ie=UTF8&oe=UTF8&q=%E9%96%A2%E6%95%B0+%E4%BA%8C%E6%AC%A1%E5%85%83%E9%85%8D%E5%88%97+%E6%B8%A1%E3%81%99%E6%96%B9%E6%B3%95&lr=
0107デフォルトの名無しさんNGNG
>>105
配列の先頭要素はメモリのアドレスではなかったですか?
違いましたでしょうか?
0108デフォルトの名無しさんNGNG
char **argv

はもう推奨されないんですか?
0109デフォルトの名無しさんNGNG
>>108
それはchar* argv[]の別表記じゃん、2次元配列じゃないっしょ
0110デフォルトの名無しさんNGNG
ttp://www.kumei.ne.jp/c_lang/intro/no_23.htm

二次元配列というのはつまり、
その中の一次元配列の先頭アドレスを格納したポインタの、配列ってことだよ。
0111110NGNG
その二次元配列の先頭アドレスを格納したポインタを引数として
関数に渡せば言いわけ。
ただ、out of rangeになるという危険性をはらむが。
0112デフォルトの名無しさんNGNG
int a[3][4];

00 01 02 03
10 11 12 13
20 21 22 23
0113デフォルトの名無しさんNGNG
>>109
char argv[][]

って書き方も出来ますよね。
0114110NGNG
>>112
それは二次元配列の宣言だろ。

関数に渡すこととは関係ない。
0115デフォルトの名無しさんNGNG
>>113
できないんじゃねぇの?
0116112NGNG
関数に渡すこと言っていたんだ。
勘違い、スマソ
0117110NGNG
char a[];
char *a;

前のは、配列として宣言してしまっているから、大きさが自動的に決定してしまい、
書き換えできない。後ろのならばできる。

0118デフォルトの名無しさんNGNG
>>115
DOSのQuick Cでは出来たよ。
0119110NGNG
>>113
無理。
コマンドラインの各引数はプログラム外で確保されるために、
ポインタが渡される。よって、プログラムは各引数のサイズを
知ることができないので、無理。
0120デフォルトの名無しさんNGNG
配列よりポインタ使ったほうが融通が利くと独習Cに書いてあった気がしました。
ポインタでアドレス指定して操作すればいいのではないの?
ポインタ、ポインタというと帰って分からなくなりそうです。
0121110NGNG
>>118
そりゃ、Quick CがCの仕様に沿ってないんだろ。


…自信がなくなってきた。間違ってたらスマソ
0122デフォルトの名無しさんNGNG
2次元以降はサイズが確定してないと駄目れすね。
0123110NGNG
>>120

>>117を読んでくれ
0124110NGNG
>>91が何にも言わないので悲しい。

逝ってくるか…。
0125120NGNG
>>117
そうですよね。
自分のは間違ってない、と、勝手に思ってます。

おかしくなったときに考えましょう、と思ってますし。
0126俺に日本語を教えれ!NGNG
>>37
意味不明だが、
とくに
>*pのないようまで変更してしまうので。
memcpyを使ってからもう一度。

>>86
char *p;
p = allocate(10,char);
で何の問題も無い気が…。
呼び出しをチェックしれ。
あとCではvoid*はいちいちキャストしなくてもいいし。
というかまったく意味ないし。

>>91
多次元配列だと、
void kansu(int matari[][]);
のようにはできない。
void kansu(int sastubastu[][10]);
のように一番上以外を定数として宣言しないとダメ(配列の宣言のときを考え)。
自由にやるには多重ポインタしかない。
0127110NGNG
何言ってるんだ俺!!!!

119は間違い。
配列の配列は結局、一次元の配列の先頭アドレスを格納したポインタ、の配列だから、
ポインタということは、サイズをコンパイラは知ることができないわけ。で、無理。

鬱だ。逝ってきます。
0128デフォルトの名無しさんNGNG
果たしてそうかな...
0129デフォルトの名無しさんNGNG
何が正しいのか分からん。
K&R見る。
0130ANSI工作員NGNG
そうそう
アソシから今すぐ規格書を買って詳細を調べれ
0131デフォルトの名無しさんNGNG
>>127
とりあえず
> 先頭アドレスを格納したポインタ、の配列だから、
は間違ってると思われ
0132110NGNG
つまり、二次元配列を関数に与えるときは、
配列の先頭アドレスとともに、配列のサイズを渡さなければならないわけ。
そうしないと配列のサイズが見えないから範囲外にアクセスして、
悪けりゃ、Winごとおさらば…

大体、こんな感じ
void hoge(int **v, int x_size, int y_size)
{
for (int x = 0; i < x_size) {
for (int y = 0; c < y_size) {
v[x][y] = 17;
}
}
}


int main()
{
int foo[9][7];

hoge(foo, 9 , 7);
}
0133110NGNG
つぶれちまた…。

>>131

???
0134デフォルトの名無しさんNGNG
>>132
だめ。2次元配列はポインタのポインタではなく長さの情報をもった型
省けるのは一つだけだからエラー
0135デフォルトの名無しさんNGNG
間違った知識ひけらかすのはそろそろやめてホスィ・・・
0136デフォルトの名無しさんNGNG
はい
int v[][7]
0137デフォルトの名無しさんNGNG
エキスパートCプログラミングよめ。
0138デフォルトの名無しさんNGNG
で、結局何が知りたくて、何が理解できたのよ。
0139デフォルトの名無しさんNGNG
ポインタ関係の説明は馬鹿ばっかだった。
以上。 
0140デフォルトの名無しさんNGNG
>>139
同意(鬱)
0141デフォルトの名無しさんNGNG
おとなしく一次元配列にして、
matrix[ y*y_len + x ] とかアクセスすれば〜
0142デフォルトの名無しさんNGNG
全員Cコンパイラを作ればよろし。
0143デフォルトの名無しさんNGNG
>>132
int main()
{
int foo[9][7];
int *p[7];
for(int i=0;i<7;++i)p[i] = foo[9] + i;
hoge(p, 9 , 7);
}

0144デフォルトの名無しさんNGNG
やっぱ、vector使うのがよろし。
0145110NGNG
     ||
   Λ||Λ
  ( / ⌒ヽ
   | |   |
   ∪ 亅|
    | | |
    ∪∪
0146デフォルトの名無しさんNGNG
あ〜あ・・
0147134NGNG
     ||
   Λ||Λ
  ( / ⌒ヽ
   | |   |
   ∪ 亅|
    | | |
    ∪∪
014891NGNG
91です。
FAQみながら↓みたいにやったらできました

void f(int n,double **x){
}

int main(){
int i,n=3;
double **x;
x = (double **)malloc(sizeof(double *) * n);
for(i=0; i<n; i++)
x[i] = (double *)malloc(sizeof(double) * n);
f(x);
return 1;
}
0149デフォルトの名無しさんNGNG
vector< vector<int> > foo(9, vector<int>(7,0)) ;
0150デフォルトの名無しさんNGNG
>>149
タイトル読もうな。
0151デフォルトの名無しさんNGNG
そして、91は何事もなかったように去った。
後には、110と134の死体が揺れていた…。


FIN
015291NGNG
普通に

double **x;
x = (double **)malloc(sizeof(double) * n * n);
だとダメらしいのですがなんでダメなのかわからない
0153デフォルトの名無しさんNGNG
mallocが返すのはふつうのポインタ。
xは2重ポインタ。
0154デフォルトの名無しさんNGNG
ケツの穴多いな
0155デフォルトの名無しさんNGNG
>>152
double *の正体がないから。
double ** -> double * -> double って具合に2段にわたって参照するので、
途中通過する double * も必要。
015691NGNG
なんかみんなポインタの間違って理解してる気がする
上のレス見たらよけいわからんなった

ちなみに自分は連立方程式の数値解を求める関数を書きたかったのです
fortran90ならこんなのちょろいのになー C言語むづすぎ
0157デフォルトの名無しさんNGNG
>>152
これこそ、>>110の言ってたポインタのポインタの話じゃないか?
0158デフォルトの名無しさんNGNG
>>156
2chはいきなり初心者モード無視して答えを書いてくるヤシが多い
ので、かえって混乱するかも。でもいつか理解できる。
015991NGNG
誰かC言語のコンパイラ作った人いないの?
そういうのを専門でやってる人いませんかねえ
いたらポインタと配列についてコンパイラ実装者の立場から説明して欲しい
016091NGNG
mallocで動的にメモリを確保せずにポインタを使わずに
関数に二次元配列を渡せないのでしょうかね?
0161デフォルトの名無しさんNGNG
ネタにしては偉そうだ。
0162デフォルトの名無しさんNGNG
>>160
int a[4][5]ならint (*b)[5]
0163デフォルトの名無しさんNGNG
>>159
アセンブラを覚えれば分かるよ。
0164デフォルトの名無しさんNGNG
必要より大き目なサイズ固定の二次元配列をつかう。
016591NGNG
引数で大きさ指定してどんな大きさの二次元配列でも扱えるような
関数を書けないですかね?
ポインタつかわんでmalloc使わんで
0166デフォルトの名無しさんNGNG
>>165
Perlでも使えよ・・・
0167デフォルトの名無しさんNGNG
>>165
C++使え
0168デフォルトの名無しさんNGNG
>>160
ポインタを使わないって時点で無理。
0169デフォルトの名無しさんNGNG
無理ぽいに一票
0170デフォルトの名無しさんNGNG
つーか規格書買って読めつうの。アフォか
0171デフォルトの名無しさんNGNG
>>168
こーぞーたいのメンバーにすれば渡せないこともない。
0172デフォルトの名無しさんNGNG
>>165
支離滅裂
017391NGNG
アセンブラの立場から説明してみてや、自分はアセンブラわかりませんが > 163
それは無駄にメモリ使う上に柔軟性がないでしょ > 164
0174デフォルトの名無しさんNGNG
91はここの住人を試しているようにしか見えないな・・
0175デフォルトの名無しさんNGNG
>>173
UNIX板からの刺客?
0176デフォルトの名無しさんNGNG
91を一休さんのキャラに例えると誰ですか?
0177デフォルトの名無しさんNGNG
>>91
だから最初の要素以外の大きさはコンパイル時に
決定していなければならないわけで、>>152はよくて
#define N 100
double (*hoge(int n))[N]
{
double (*x)[N] ;
x = (double(*)[N])malloc(sizeof(double)*n*N) ;
return x ;
}
のようにしかできない
017891NGNG
上のやりかた以外に方法ないんですかねえ
0179デフォルトの名無しさんNGNG
>>178
なんでCにこだわるの?
0180デフォルトの名無しさんNGNG
あそこの板嫌いだな
こういうのばっかりだから
0181デフォルトの名無しさんNGNG
一回ポインタとmallocを使わないでプログラムを実行中に
好きな大きさのメモリを確保してほしい。
0182デフォルトの名無しさんNGNG
つまらん。
0183デフォルトの名無しさんNGNG
ポインタを使うのがCの醍醐味ではないけ?
0184177NGNG
間違えた。すべて決まってなければならない
最初がいらないのは受け渡しのときだけだ
0185デフォルトの名無しさんNGNG
別にCだけではないだろ。
018691NGNG
やっぱfortranかなあ
Cむづかしすぎ
みんなもよくわかってないっぽいし
0187デフォルトの名無しさんNGNG
>>186
わかってないのはおまえと110だけだと思われ
0188デフォルトの名無しさんNGNG
>>186
分かっているから無理だと言っているんだろ(ワラ
018991NGNG
a[n][n]でaはポインタのポインタではないんですよね?
でわaはなんですか?
0190デフォルトの名無しさんNGNG
Lisp Schemeでも使え。
考えがスマートに書ける。
0191デフォルトの名無しさんNGNG
あなたにはそれが一番似合ってます、おめでとう。
0192デフォルトの名無しさんNGNG
fortranは処理系が中でポインタとmallocを使ってるだけだろ
0193デフォルトの名無しさんNGNG
>>189
配列名だよ!
019491NGNG
煽り多くなってきたな
むづかしすぎたかな
0195デフォルトの名無しさんNGNG
(´-`).。oO(どういう勉強のしかたすると>>91みたいのが出来あがるんだろう…)
0196デフォルトの名無しさんNGNG
>>159
> ポインタと配列についてコンパイラ実装者の立場から説明して欲しい
以前に書いたヤツだと、こんな感じやねぇ。

  | l_value '[' expr_ ']' {
    struct comp_node *offnp;
    struct cast_info *cast;
    if (!cast_is_array($1->cn_cast))
      yynotice(COMP_ERRMSG_ELEM_NOARRAY);
    else if (!cast_equal(node_get_cast($3), CAST_INT))
      yynotice(COMP_ERRMSG_INDEX_NOTINT);

    cast = cast_element($1->cn_cast);
    /* offset <- expr_ '*' size */
    offnp = node_create_op2(CAST_INT, $3,
      node_create_valint(cast_size(cast)), OPR_MUL);
    $$ = node_create_lv_off(cast, $1, offnp);
  }

  | '*' l_value %prec PREC_DEREF {
    if (!cast_is_pointer($2->cn_cast))
      yynotice(COMP_ERRMSG_DEREF_NONPTR);
    $$ = node_create_rlv(cast_deref($2->cn_cast), $2);
  }
0197デフォルトの名無しさんNGNG
だから答えは出てるっつーの
0198デフォルトの名無しさんNGNG
>>189
int a[n]はint型をn個持つ配列。
int a[n][m]はint型をm個持つ配列をn個持つ配列。
0199デフォルトの名無しさんNGNG
91が一番煽ってる
0200デフォルトの名無しさんNGNG
>>189
識別子です。
そろそろやめたら(ボソ
020191NGNG
ポインタむづかしすぎ!C言語挫折しそうですわ
0202デフォルトの名無しさんNGNG
91は暇なやつだな。
そして日本語すらよく分かっていないな。

>むづかしすぎたかな
0203198NGNG
メモリー上では一直線にならんでいるがな。
0204デフォルトの名無しさんNGNG
yacc?
0205デフォルトの名無しさんNGNG
典型的な逆切れパターンか・・・
91にはCは無理だ、あきらめな
0206デフォルトの名無しさんNGNG
>>203
それだ!それを91は理解しないと
0207デフォルトの名無しさんNGNG
ラーメンうまかったなぁ。
0208デフォルトの名無しさんNGNG
>>186
二次元配列諦めて、ポインタのポインタにしたら?

double **d;

d = (double **)malloc(sizeof(double *) * 100);
for (i = 0; i < 100; i++)
d[i] = (double *)malloc(sizeof(double) * 100);

で、見かけ上d[100][100]まで使えるから。ただし、これを受け取る関数も
double **で受け取ること。それに、xとyの次元も指定しなければならない
から、

struct dd {
int x, y;
double **d;
};

のように構造体にした方が柔軟性が増す。
0209デフォルトの名無しさんNGNG
パイの実(いちご)うまかったなぁ。
0210デフォルトの名無しさんNGNG
>>208
それを91は嫌がっているんだよ(笑)
0211デフォルトの名無しさんNGNG
>>201
>ポインタむづかしすぎ!C言語挫折しそうですわ
     .,/ ̄ ̄\.
    .,/  ____ \.
   / /川〃ノ\. ヽ.
   ( (ミ/⌒ヽ三) )  / ̄ ̄ ̄ ̄ ̄
    ヽ. ヽ| ´∀` |ノ .ノ < オマエダケー
      ̄|   .::| ̄    \_____
      |____|
0212デフォルトの名無しさんNGNG
>>210
ふーん。何でこんなにもめているのか理解できたっすよ。(藁
0213110NGNG
俺のせいか(藁
021491NGNG
>208
上に貼ったソース まさにそのやりかたです。
いちいちそんなめんどくさいことしないとできないのかあ
ポインタのこと考えないで配列の受渡ししたい
0215デフォルトの名無しさんNGNG
C++などを使おう。
0216デフォルトの名無しさんNGNG
>>215
もうほっときなって。
0217デフォルトの名無しさんNGNG
>>214
Perlを薦めるよ。
0218デフォルトの名無しさんNGNG
>>214
頭固すぎ
他言語使えって
0219デフォルトの名無しさんNGNG
どうでもいいが91は渡す配列をどうやって持ってくる気だ?
022091NGNG
Javaだと配列のサイズ決めないで関数に渡せますね
0221デフォルトの名無しさんNGNG
>>220
Java使えるならJava使えよ!!(;_;)
0222デフォルトの名無しさんNGNG
>>220
あれはポインタのポインタと同じ
0223デフォルトの名無しさんNGNG
>>91
それをしたかったら、もっと高級な言語を使え。
メモリアドレスが1次元である以上、どこかで行と列の計算をする必要があるだろ。
そんなことまでCは面倒見てくれない。
0224デフォルトの名無しさんNGNG
わかってるヤツは、とっくに飽きてる話題だからな。
022591NGNG
これ以上話広がらないかなあ
0226デフォルトの名無しさんNGNG
>>225
そりゃおまえがネタだと見抜かれてるからね
0227デフォルトの名無しさんNGNG
無能が煽っても大して大きくならないのは定説。
0228デフォルトの名無しさんNGNG
>>220
Cは配列の扱いについて、極端に単純化して、一次元配列しか
基本的には使えなくなっていると思われ。
022991NGNG
void f(double[][] a)
↑Javaだとこんな感じで配列の大きさ指定しないで関数に渡せて便利ですな
0230デフォルトの名無しさんNGNG
>>229
配列もオブジェクトの一種ですからな。
0231デフォルトの名無しさんNGNG
やっぱり煽りは日下部タンじゃないと・・・・
0232デフォルトの名無しさんNGNG
C言語まったく知らないんだけど、
ポインタ変数の宣言ってどうやるの?
0233デフォルトの名無しさんNGNG
余計なことを何もしないのが、Cのいいところじゃん。
0234デフォルトの名無しさんNGNG
>>232
*
023591NGNG
>232
double *p;
0236デフォルトの名無しさんNGNG
>>234
親切度が半端
0237デフォルトの名無しさんNGNG
>>234
今日はしたい気分なんだ、いいだろ。
023891NGNG
C糞かも
0239デフォルトの名無しさんNGNG
>>238
はげどー
91みたいなどうしようもないやつを生んでしまうもんな。
0240デフォルトの名無しさんNGNG
>>239
禿同
024191にとってはNGNG
Cは糞です。
0242デフォルトの名無しさんNGNG
>>238
うん、糞だ。
しかし、その糞さえもろくに(略
0243デフォルトの名無しさんNGNG
>>229
それを「便利」と思うか「余計なお世話」と思うかは、微妙なところだ。少なくとも
処理系を実装する立場から言えば C は、適度に小さく強力で、良い言語だろう。

ところで 91 は >>196 へのコメントはないの?
0244デフォルトの名無しさんNGNG
>>238
ちょっと同感ついでに>>91も糞
0245デフォルトの名無しさんNGNG
Cは落ちこぼれ発生率がかなり高いし、糞だな
0246デフォルトの名無しさんNGNG
91はCがアセンブラに近いことがだんだんと分かってきて、嫌気が
さしてきた様子。迷わずFORTRANやjavaに逝ってよし。
0247デフォルトの名無しさんNGNG
>>243
理解できるわけないじゃん
0248デフォルトの名無しさんNGNG
おまえら進行早すぎ。
もっと落ち着け
0249デフォルトの名無しさんNGNG
もう>>91の時点でネタだってわかってるのに、
付き合ってあげるこのム板住人のやさしさ。
0250デフォルトの名無しさんNGNG
いい暇つぶしができたよー
0251デフォルトの名無しさんNGNG
>>249
ROMっている人のため。
0252デフォルトの名無しさんNGNG
>>249
語りつくしてくださいというから語っているのさ(w
0253デフォルトの名無しさんNGNG
1スレに2回くらい発生するネタだけどな。
0254デフォルトの名無しさんNGNG
16進数(HEXコード)について知ってる人教えて!
いまいちF1だとかがよくわかんない。
お馬鹿でスマソ
0255デフォルトの名無しさんNGNG
>>254
すれ違いだぞー
とりあえずCでは0xを先頭につけろ。
0256デフォルトの名無しさんNGNG
>>254
F1=241
0257デフォルトの名無しさんNGNG
F1 = F x 16 + 1 = 15 x 16 + 1じゃん
0258デフォルトの名無しさんNGNG
F1 = 1111-0001
0259デフォルトの名無しさんNGNG
>>258
ハァ?と思ったが、-は区切りか。
0260デフォルトの名無しさんNGNG
今質問すれば誰かがものすごい勢いで答えてくれそうだな(w
0261デフォルトの名無しさんNGNG
F1 == Formula One
0262デフォルトの名無しさんNGNG
F1=ヘルプ
0263デフォルトの名無しさんNGNG
F1 = Winアプリだとヘルプが出てくる
0264デフォルトの名無しさんNGNG
なぜFに16をかける?
0265デフォルトの名無しさんNGNG
C2=虫歯
0266デフォルトの名無しさんNGNG
ケコーン
0267デフォルトの名無しさんNGNG
>>263
間違って押してしまって糞重いヘルプが・・・
026891NGNG
>243
196って何言語なのかもわからん
0269デフォルトの名無しさんNGNG
寂しい漏れを抱いて↓
0270デフォルトの名無しさんNGNG
>>264
2桁目は16の1乗を表すから。
0271デフォルトの名無しさんNGNG
こういうのに寄ってたかってレスするから、
このスレの消費速度が速いんだよな、、
0272デフォルトの名無しさんNGNG
>>267
F2の隣にF1置いたの誰だよ!
0273デフォルトの名無しさんNGNG
数値計算なら自分でプログラム組むよりマスマティカあたりを使えば・・・
0274デフォルトの名無しさんNGNG
ていうかHEXコードってなに?
0275デフォルトの名無しさんNGNG
>>272
ごめんなさい。
0276デフォルトの名無しさんNGNG
F1が出てきてからおもしろくない。
027791NGNG
>273
今回はC言語のお勉強だったのです
普段はmatlab使ってます
0278デフォルトの名無しさんNGNG
Mathematica高い!!!!
0279デフォルトの名無しさんNGNG
関数のオーバーロードの方法を教えてください。

ライブラリのある関数を乗っ取りたいのですが
ldのオプションでENTRYを指定すればいいらしい
というところまではわかりました。

でも、実例を示してくださるとありがたいです。
0280デフォルトの名無しさんNGNG
なんで関数のオーバーロードにそんなたいそうな(ようわからんけど)
ことをする必要があるの?
オーバーロードでしょ?
0281デフォルトの名無しさんNGNG
Cでもオーバーロードって出来たのか。
0282デフォルトの名無しさんNGNG
モビルスーツがオーバーロードしてます
0283デフォルトの名無しさんNGNG
>>281
できねえって
0284デフォルトの名無しさんNGNG
「乗っ取る」とオーバーロードが結びつかない
0285デフォルトの名無しさんNGNG
オーバーライドと勘違いしてるんじゃないの。
0286279NGNG
要するに
ライブラリにある関数と同じ名前の関数を作ったから
ライブラリの方じゃなくて自分の作った関数の方を
リンクしてくれ、と ldに指示を出したいわけです。
0287279NGNG
オーバーロードじゃなくてオーバーライドでした
028891NGNG
>279
お前レベル低すぎるよ
死んでくれよ
0289デフォルトの名無しさんNGNG
オーバーレイのまちがい?
0290デフォルトの名無しさんNGNG
ENTRYはエントリーポイント関係じゃないの?
0291デフォルトの名無しさんNGNG
頭がオーバーヒートしてんじゃないの?
0292279NGNG
>>288
おまえだけには言われたくないよ。
0293デフォルトの名無しさんNGNG
>>279
C++スレへ来なさい

パパが誠意を持って体中で教えてあげるから
0294デフォルトの名無しさんNGNG
>>279
自分の関数の名前をちょっと変えて#defineで見た目をごまかすとかは
どう?
0295デフォルトの名無しさんNGNG
>>279
ライブラリをリンクしない。
0296デフォルトの名無しさんNGNG
279が希望することって実現可能なの?
0297デフォルトの名無しさんNGNG
$ man ld
しれ
0298デフォルトの名無しさんNGNG
.obj にしてリンクするだけじゃないのか?
0299デフォルトの名無しさんNGNG
>279
あるライブラリをリンクしたいが、それに含まれるいくつかの
関数だけは自分バージョンを同じ名前で使いたいってこと?
0300279NGNG
ひょっとしてここの奴らって程度低いの?
0301279 ◆bislCqN. NGNG
>299
はい、そういうことです。

>>300
騙らないで
0302デフォルトの名無しさんNGNG
たしか、glibcの日本語localeがぐちゃぐちゃだったときに、
プリロード、って言葉を聞いたことがあるけどな……
0303デフォルトの名無しさんNGNG
騙りという名のスケープゴート
0304299NGNG
>>279
いま急いで調べたから違っているかもしれないけど、ldの--entryオプションは
プログラムのエントリーポイントを設定するだけで、関数の乗っ取りは
少なくともこのオプションではできないと思うよ。
0305279 ◆bislCqN. NGNG
>304
わざわざありがとうございます。
そうですね、関係なかったみたいですみません。

プリロードうんぬんって、動的リンクさせるときに読み込むライブラリを
順番指定するとかして自分の思い通りにライブラリをリンクさせる手法
でしたっけね。
静的リンクでも同様のことがこれで出来るのかな?
調べてみます。
0306デフォルトの名無しさんNGNG
>>299
>>294のいうとおり
#if use_custom_printf
#define getchar printf__
#include <stdio.h>
#undef printf__
#endif
とかじゃだめ?ヘッダファイルの内容次第では死ぬけど。
0307デフォルトの名無しさんNGNG
半径N(ピクセル)の円の中に含まれる点(x,y)をランダムに算出する方法がわかりません。
講義で習ったんですが忘れてしまいますた。
別に宿題というわけではありませんが、教えてください。おねがいします。
0308デフォルトの名無しさんNGNG
dx = rand() % N;
dy = rand() % N;

if(dx * dx + dy * dy < N * N)
{
  出力(x, y, dx, dy);
}
の繰り返しじゃだめなの?
0309デフォルトの名無しさんNGNG
>>307
x と y を -N〜Nまで乱数で求め、x^2+y^2<=N^2となる(x,y)を出力しなされ。
0310308NGNG
わしのちょっとおかしい。
>309さんのがいいね。
0311デフォルトの名無しさんNGNG
>>310
設問にxとyが負でもいいのか条件が欲しいところだね。
0312デフォルトの名無しさんNGNG
できました。こんなかんじです。

for(int i=0;i<15000;i++){
int a,b;

for(;;){
a=rand()%200-100;
b=rand()%200-100;
if( a*a + b*b <= 100*100)
break;
}

shige[i].SetPosition(200+a,200+b);

}

どうもありがとうございました。
0313デフォルトの名無しさんNGNG
角度と長さをランダムで求めて、適当に出力するのが良いんじゃないの?
無駄撃ちが無くなるし。
0314デフォルトの名無しさんNGNG
shige?
0315デフォルトの名無しさんNGNG
>>313
分布が一様じゃなくなるんじゃない?
0316デフォルトの名無しさんNGNG
>>301
298 で答え出てる気が。もし実行ファイルで、実行時リンカが解決するシンボルを
上書きしたいなら、共有ライブラリを作って LDPRELOAD 環境変数で指定、かね。
(man ld.so)

ただ、よーく理解して使わんと死ぬぞ。詳しい話を知りたければ、書籍「Linkers &
Loaders」でも買って読むべし。
0317デフォルトの名無しさんNGNG
質問というかアンケート。
関数書く時、最大何行超えると駄目ってのありますか?
0318デフォルトの名無しさんNGNG
>>317
行数とは無関係だと思う
0319279 ◆bislCqN. NGNG
>316
どうも。その本買いに行ってきます。
0320デフォルトの名無しさんNGNG
一関数で変数が4000万とかになったりすると、
コンパイラに、いろいろヤヴァイ部分が出てくるとおもう。
角度とか。
0321デフォルトの名無しさんNGNG
>>318
いやでも1関数で何千行とかあったら引きませんか?
0322デフォルトの名無しさんNGNG
>>321
引くけど、
でも50行でもその中に複数の処理が混ぜ混ぜに詰め込まれてたらダメでしょ
逆に何千行でも分割不可能な最小の処理(ありえるか?)なら仕方がないし
(何千行の関数がコンパイルできるかどうかは知らんけど)
0323デフォルトの名無しさんNGNG
>>322
現実派そんなことあるのですか?
0324 NGNG
個人的には一関数200行かな
0325デフォルトの名無しさんNGNG
ソースを読んでたらこんな記述がありました。
w->sp0->x_pos = 0;
なんですか -> って。見たこともない表記に混乱しています。助けてください。
0326デフォルトの名無しさんNGNG
>>325
a->b == (*a).b
0327デフォルトの名無しさんNGNG
>>325
構造体Aが構造体bへのポインタ型のメンバを持っている。

で、構造体Aのポインタから構造体bのメンバを参照している。
0328デフォルトの名無しさんNGNG
こんな質問をするあたり、構造体自体知らないかも・・・・
0329デフォルトの名無しさんNGNG
>>322
1000を越えることはないだろうけど、出力するものが多いプログラム(CGIとか)の場合は一つの関数の行数が多くなりそう。
0330デフォルトの名無しさんNGNG
>>329
そうならないようにデザインとコードはわけろとあれほど・・・。
と言うアンチ最近の風潮な俺は逝ってきます。
0331デフォルトの名無しさんNGNG
>>326-328
あー、思い出しました。完全に忘れてた。なんで忘れてたんだろう。
ありがとうございました。
0332デフォルトの名無しさんNGNG
おおお、、、25000行以上の関数がコンパイル通った(VC++6.0)・・・
ファイルサイズが260KBにもなったが・・・
0333デフォルトの名無しさんNGNG
質問よろしいでしょうか
目盛り関数のmalloc()は型の指定がないようなのですが
自分でサイズを確保しておけばどの型のデータも格納できるのでしょうか
0334デフォルトの名無しさんNGNG
>>333
???????
戻り値のvoid *のこと?適切な型にキャストすれば?
もっとも、mallocのプロトタイプが有れば必要ないけど。
0335デフォルトの名無しさんNGNG
>>333
?
まぁ、そう言うことやね。
変数も所詮は数バイトのメモリ領域。

でも、ちゃんと然るべき型のポインタに入れてやるように。
0336デフォルトの名無しさんNGNG
説明がヘタですいません、
例えば戻り値void*が返ってきて
その番地に何か値を代入するとしたら
charとかintとか関係無くどの種類の値も代入できるのかと思いまして
0337デフォルトの名無しさんNGNG
>>336
できる。
mallocはメモリを確保するだけ。
それをどう扱うかは変数次第。
0338デフォルトの名無しさんNGNG
>>333

問題ない。
このスレの少し上のほうにそれを知らなかったのか意味不明な質問があったが。
0339デフォルトの名無しさんNGNG
こんな初心者に親切に答えて頂いて有り難うございます
一応代入は出来たのですが、型の指定とかしなくていいのかな?と
疑問に思いまして・・
みなさん有り難うございます
0340デフォルトの名無しさんNGNG
>>336
大きささえ合えばね。
余る分にはいいが少ない場合は危険。

共用体とかC自体結構そう言うことを想定してる。
0341デフォルトの名無しさんNGNG
va_argのmanpageの
>ap が va_arg(ap,type) の形で関数に渡されると、 ap の値は関数から返って来た後は不定となる。
という記述の意味が分かりません。

va_list型のapを「va_arg(ap,type)の形で関数(何の?)に渡す」とは具体的どういうことでしょうか?
user_func(va_arg(ap, char *));
のように渡す場合のことかと思ったのですが...。
(これでapが不定になる筈が無いとも思いますけど...)
0342shigeNGNG
>>341
英語で読んだ方が明解でないか?
>If ap is passed to a function that uses va_arg(ap,type)
> then the value of ap is undefined after the return of that function.
つーか、酷い訳だな。それ。
0343デフォルトの名無しさんNGNG
>>342
酷いつーか誤訳?
0344shigeNGNG
誤訳でふね。どこをどう読めばそんな訳になるのかわからんけど。Rubyさいこー

関係ないが、 http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/C-faq-15.html
> 可変個数の実引数リストの可変個数の部分には、古い「省略時の引数格上げ」が適応される。
> つまりfloatの引数は必ずdoubleに格上げされ(幅を広げられ)、charとshort intの引数はintに
> 格上げされる。よってva_arg(argp, float);と書くのは常に誤りである。代わりにva_arg(argp, float)
> と常に書かなければならない。
何も変わってません。Rうbyさいこー
0345デフォルトの名無しさんNGNG
>>344
warata
0346デフォルトの名無しさんNGNG
配列(構造体配列、多次元配列も)の要素数を
動的に確保したいのですが、どうすればいいのでしょうか?
0347デフォルトの名無しさんNGNG
>>346
燃料投入だな。
それは無理。代わりにポインタと[]演算子を使う
0348346NGNG
>>347
□演算子?これは初めて聞きました
どのようなものでしょうか?
0349デフォルトの名無しさんNGNG
malloc を使え
0350デフォルトの名無しさんNGNG
>>348
ダランベリアンじゃなくてだな
[と]。ポインタをint *pとしてmallocで確保した後
p[3]とかやってアクセス
0351デフォルトの名無しさんNGNG
んで、気が向いたら free
0352346NGNG
>>349
大変お恥ずかしい話ですが
mallocを使ったことがありません
失礼ですが、どうのように使えばよいのか
教えていただけませんでしょうか?
0353デフォルトの名無しさんNGNG
マトモな本買えよ、、、
0354346NGNG
>>353
本を買ったら使えるようになるのでしょうか?
やっぱり使い方を知らないと使えないと思うのですが。
0355デフォルトの名無しさんNGNG
>>352
何度もでてるが、例えば一次元なら
int *p ;
p = (int*)malloc(sizeof(int)*n) ;/* nは確保したい個数 */
使い終わったら
free(p) ;
0356デフォルトの名無しさんNGNG
>>352
知らないのはいいとして調べないのが問題だ。

powered by google
http://bi.appi.keio.ac.jp/seminar/c/node53.html
http://homepage1.nifty.com/MADIA/vc/C/c_lang_ansi2.htm
http://www.microsoft.com/JAPAN/developer/library/vccore/_crt_malloc.htm
http://www.ice.nuie.nagoya-u.ac.jp/~l94334/c/malloc_calloc.html
http://cai.cs.shinshu-u.ac.jp/sugsi/Lecture/c/e_04-02-01.html

一番下の信州大 Flash まで使って無駄に豪華だ。
0357デフォルトの名無しさんNGNG
>>354
本買ったら使い方くらい書いてあると思うのですが。
0358デフォルトの名無しさんNGNG
まあまあ、慣れないうちはキーワードすら思いつかないものだ
0359346NGNG
あれ?
346は自分です
>>354は誰ですか?

>>355
ご親切にありがとうございます
多次元などは自分で頑張ります
本当にありがとうございました
0360346NGNG
>>356
確かに・・・
失礼しました
これからは自分で調べてから質問します
お手数かけてすいませんでした
0361デフォルトの名無しさんNGNG
>354
┐(´ー`)┌
0362デフォルトの名無しさんNGNG
NULL は ナル と読むんですか?
0363デフォルトの名無しさんNGNG
NULLはナル?ヌル?
http://piza2.2ch.net/tech/kako/992/992588535.html
NULLって
http://pc.2ch.net/test/read.cgi/tech/1014987555/
「False」を「ファール」って発音してる人の数→
http://pc.2ch.net/test/read.cgi/tech/1005578173/
0364デフォルトの名無しさんNGNG
null /nΛ'l/
0365デフォルトの名無しさんNGNG
よくゲームプログラミングで聞かれるスクリプトってどういうふうな機能を指すんですか?
0366Dennis M.RitchieNGNG
Cの王子光臨。
0367Dennis M.RitchieNGNG
何でもきいてくれ。・
0368デフォルトの名無しさんNGNG
光臨ならIP晒せ。(藁
0369デフォルトの名無しさんNGNG
>>365
プログラミング言語の一種。

C++ や Java などといったプログラミング言語に比べて、
特定の目的に特化されており、
プログラマではなくても記述できる(ことを目的としている)。

より広い範囲では、コンパイルなどの煩雑な作業が必要ない
手軽に使える簡易言語といったところ。
0370デフォルトの名無しさんNGNG
ビット演算で質問なのですが、
特定のビットが0なのか1なのかは論理積を使って読めるようになりました。
書き込むのも論理和なり排他等を使えば可能なのですが、
ビットイメージ(2進数)で書き込みたいのですが、
手持ちの書籍、インターネットでの検索で見つけることができませんでした。
現在はWindowsの関数電卓を使って2進数を10進数に変換して
それをコピーアンドペーストしているのですが、
面倒で仕方がありません。何とかならないものでしょうか?
ちなみに、Borland-C++ エディターはC言語をはじめよう を使っております。
0371デフォルトの名無しさんNGNG
>>370
int x = /* ここに2進数表記で整数を書く */;
ってことがやりたいってことか?
それならCだと無理。16進か8進で我慢じゃ。
0372Dennis M.RitchieNGNG
>>370
むり
Cの開発者がいってるんだからムリ
0373デフォルトの名無しさんNGNG
2進で編集したデータを10進に変換。
読み込むときに、10進を2進に変換して
2進からデータを読み込むってのはダメ?
0374デフォルトの名無しさんNGNG
荒業で伽羅型で書く、変換は?
めんどいけど、どうしてもやりたいなら(w
0375デフォルトの名無しさんNGNG
>>370
モニタの横に、0からFまでの16進⇔2進変換表でも貼っとけ。
そのうち覚える。
0376デフォルトの名無しさんNGNG
>>370
int i ;
asm mov i, 10101010101B
0377デフォルトの名無しさんNGNG
int x = strtol("01000110101", NULL, 2);
0378デフォルトの名無しさんNGNG
>>370
簡単なプリプロセッサ自作すればいいんでは?
プリプロセッサといっても、実際にコンパイラ
に組み込まなくて、単に標準入力の2進数入り
ソースを、10進数なり16進数に置き換えるだけ
でいいと思う。mypp < foo.cbb > foo.cpp みたい
な感じで。2進は 0b ではじめる、とか決めとけ
ばいいんでないの?

漏れは大昔、漢字変数名や漢字関数名が使える
ようなのを作って遊んでたよ。コンパイルエラー
表示を戻すことは考えていなくて、エラーが出る
と意味不明な英数字が表示されることになった
けどな(w。
0379デフォルトの名無しさんNGNG
つうか、先頭ビットが0立っても
unsignedなら表現できるのか?
0380デフォルトの名無しさんNGNG
#define B0000000000000001 1
#define B0000000000000010 2
以下略
0381デフォルトの名無しさんNGNG
gccを改造して2進表記を可能にしてた人がいたね。
パッチをざっと眺めた限り、思ったよりは複雑なことしてなかった。
コロンブスのエッグって感じだったな。
0382デフォルトの名無しさんNGNG
>>381
そんな対応は
#define START {
#define END }
とするぐらい、無意味でやっちゃならん事だと思うが。
0383デフォルトの名無しさんNGNG
まーそれもそうだねぇ
printfで %b を追加した方がまだマシかな
0384デフォルトの名無しさんNGNG
VC++にはstdint.hがあ遘サ讀肴ァ遘讀
0385デフォルトの名無しさんNGNG
>>371
そうです。そうです。
そういうことがやりたいんです。
頭の中で2進にできなくて。
16進にしろ8進にしろ一度変換しないとだめなんですね。
16進だとどういう手段で可能なのかは分かりかねますが(汗

>>372
標準で不可能なようですね。
ありがとうございます。

>>373
371さんの書いてあることがしたいので、
残念ながら373の方法では、
コマンドラインから入力する場合なら可能ですね。
後の374さんが書かれていますが、
charで処理と言うのは、
CUIに2進表記するために、
10進をcharで2進表記しようとしましたが、
化け化けで失敗。一筋では通らなかった。
まだまだ精進が足りないようです。

>>374
上記の通りですm(__)m

>>375
そうですね。
371さんのいう16進でと言うのをやるためには、
暗記して、頭の中で処理できるようにならないとだめですね。
まだまだ精進が足りないようです。

>>376
はじめ見て何のことか分かりませんでしたが、
辞書で調べてみたところ、
アセンブラとC言語を組み合わせるためのような
ちょっと不明ですが、試してみたいと思います。
一手間かかりますが、それで可能なら見た目的にやりやすくて
ちとうれしいです。

>>377
なるほど。
文字列を2を基数にして変換してしまうのですか。
long型に変換してint型に入れてしまって良いものなのかは
ちょっと謎ですが(現在のPCなら問題ないだろうけど)
私にはまったく思いつきませんでした。
結構基本的な関数なのに、まだまだ頭が固いようです。
精進します。

>>378
拡張子cppと言うことはC++ですね?
ちょっと無理なようです。

>>379
現在はintでやっていますが、
将来的にはunsinged longまで拡張する可能性があります。
というか、そこまで使うかどうかは分かりませんが(w

>>380
それはちょっと・・・
0386378NGNG
>>385
>拡張子cppと言うことはC++ですね?
>ちょっと無理なようです。
こういうResになるということは、確かに無理だろうな(w
拡張子は何だって構わないんだが。因みに漏れが昔書いた
ヤシは、C++でなくCで書いてある。当時はC++なんて、存在
すら知らなかったんだよ(w
0387デフォルトの名無しさんNGNG
>cpp
暗にスレ違いってことでは。
0388デフォルトの名無しさんNGNG
カンマ打つのめんどくさいが。

#define bit(b,n) ((b)<<(n))

#define bin4byte(b7,b6,b,b4,b3,b2,b1,b0) \
(bit(b7,7)|bit(b6,6)|bit(b5,5)|bit(b4,4)\
|bit(b3,3)|bit(b2,2)|bit(b1,1)|bit(b0,0))
#define bin4short(\
b15,b14,b13,b12,b11,b10,b9,b8,\
b7,b6,b5,b4,b3,b2,b1,b0) \
((bin4byte(b15,b14,b13,b12,b11,b10,b9,b8)<<8)\
|bin4byte(b7,b6,b5,b4,b3,b2,b1,b0))

以下略。
>>377はマクロで隠蔽すれば(実行効率以外は)けっこういいかも。
0389378NGNG
>>387
ああそうか、スマソ。例がマズすぎたんだな。
0390デフォルトの名無しさんNGNG
>>375 これ常識。
たった16種類の一対一対応。簡単に覚えられる。
0391デフォルトの名無しさんNGNG
九九を覚えるよりも早く15x15を覚えました
一度身に付けるとスゲー楽だよ
0392デフォルトの名無しさんNGNG
>現在はWindowsの関数電卓を使って2進数を10進数に変換して
>それをコピーアンドペーストしているのですが、
8進法や16進法ならだいぶ簡単だよ。

  0  1  2  3  4  5  6  7
0000 0001 0010 0011 0100 0101 0110 0111
  8  9  a  b  c  d  e  f
1000 1001 1010 1011 1100 1101 1110 1111

だから16進法だと4桁づつ区切って
0010 0111 1100
  2  7  c
int x = 0x27c;
ってやれば
printf("%d\n", x);
でちゃんとコンパイラが10進法に変換してくれる。

0393デフォルトの名無しさんNGNG
>>392
そこで10進法に変換してるのはコンパイラではなくprintfだったりする(笑)
0394デフォルトの名無しさんNGNG
>>393
gcc (x86) あたりだと、コンパイラが 10 進数に変換してアセンブリコードを
出力してたり。もっともアセンブラがバイナリに変換するから、そこはどうでも
良いんだが。
0395デフォルトの名無しさんNGNG
printfに二進のイメージで書き込む機能をつけてほしかった。PHPにはあるようだけど。
0396デフォルトの名無しさんNGNG
C言語,UNIX-XWindowシステムでグラフィックを描くプログラムを勉強したい
んですが、どこかわかりやすいHPありませんか?
教えてください。
0397デフォルトの名無しさんNGNG
>>396
あまり環境に依存することはここでは聞かないでね。
0398名無しさん@カラアゲうまうまNGNG
>>396
Unix板で聞いたほうがよろし。
ただし、「XWindowシステム」という妙な表記は避けたほうが無難。
0399デフォルトの名無しさんNGNG
2進出力関数ぐらい自分で作れ矢
0400shigeNGNG
400got
0401デフォルトの名無しさんNGNG
a,b,c;という構文があったとしたら、必ずしもa -> b -> cの順で評価されるとは限らないんですよね?
0402デフォルトの名無しさんNGNG
限るよ。
0403デフォルトの名無しさんNGNG
f( a, b, c ); だったら限らんが a, b, c; なら限る。
0404デフォルトの名無しさんNGNG
>401
402の言うように
a, b, c;
なら評価順はa => b => cになることが保証されている。&&や||でも同様。
func(a, b, c)
はどこから評価されるかわからない。
0405デフォルトの名無しさんNGNG
質問です。
SJISからEUCへ変換させるプログラムを作りたいのですが,
まったく分かりません。どなたか教えていただけないでしょうか。
お願いします。
0406デフォルトの名無しさんNGNG
>>405
google 逝け。探せば文字コードの解説、ソース公開しているサンプルプログラムとも
山のように見つかる。

(文字コードの解説は、ここで書くには長すぎるし)
0407デフォルトの名無しさんNGNG
>>395
vsprintfにパッチ当てようぜ。
0408デフォルトの名無しさんNGNG
>>405
system関数でnkfを呼び出す。
0409401NGNG
>>403-403
そうなんですか。
じゃあv=(a,b,c);という構文があったとしたら、必ずa -> b -> cの順に評価され、vにはcの結果が入ると見てよいのですね?
0410デフォルトの名無しさんNGNG
>>409
v = (a, b, c); の , はカンマ演算子だけど、v = func(a, b, c); の , は
カンマ演算子でなくてただのセパレータ。
0411デフォルトの名無しさんNGNG
エクセルVBAなんですけど

---

Sub Test()
Dim ff As Object

Set ff = CreateObject("Shell.Application"). _
BrowseForFolder(0, "フォルダを選択してください", 0, "c:\\")

If Not ff Is Nothing Then
MsgBox ff.Items.Item.Path
'選択したフォルダ名を表示
End If

End Sub

---

これで出てくるフォルダ選択ウィンドウで、
一番上の階層であるデスクトップを選ぶとエラーになっちゃうんですけど
エラーにならない方法ってありますかね?
ちなみに"c:\\"のパラメータを0(デスクトップ)にしても同じでした。
0412デフォルトの名無しさんNGNG
>>411
>エクセルVBAなんですけど
良い根性してるな。
0413デフォルトの名無しさんNGNG
>>411
もしかして絨毯爆撃ですか?
0414デフォルトの名無しさんNGNG
>>409 正解!
0415デフォルトの名無しさんNGNG
>>410
変数宣言・定義の","モナー
0416デフォルトの名無しさんNGNG
>>415
つーことは、int a = 0, b = a; とやっても b は 0になることは
保証されない訳だよね?
0417デフォルトの名無しさんNGNG
>>416
どっちにしろtpりっきーすぎ
0418デフォルトの名無しさんNGNG
int a = 0, b = a;
と
int a = 0;
int b = a;
は等価じゃなかったでしたっけ。
0419Dennis M.RitchieNGNG
>>418
私はあなたより日本語が上手い。
0420デフォルトの名無しさんNGNG
418
変な日本語すまそ。
0421名無しさん@カラアゲうまうまNGNG
>>411は日本語読めないようだから、教えてやったところでどうせ無駄だろう。
0422415NGNG
糞K&Rにそう書いてあったと思う。
0423Dennis M.RitchieNGNG
>>422
なんで糞だと思うんですか?
0424デフォルトの名無しさんNGNG
>>423
ステレオタイプなアフォなので無視するアル。
0425Dennis M.RitchieNGNG
あなたは無視するとき、「無視するよ。」と宣言してから無視するんですか。(笑
0426415NGNG
>>424
日本語話してください、お馬鹿さん。
0427C初心者の名無しさんNGNG
ttp://www.basicmagazine.net/bmnet/0207/toukou/kyudo.lzh
↑このソフトがベーマガの投稿であってよくわからない部分がいくつかあったので教えてください

・printf("\x1b[2J") このようなprintfの使い方をしているのですが
  具体的にどういうことをしているのですか?
・unionは共用体を指定するやつでそのメンバは同じアドレスを参照するってのは知っているのですが
  union REGS reg;このような宣言(?)の仕方はあるのですか?
  それともプログラム中では宣言されていなくてヘッダファイルとかで
  REGSっていう共用体が定義されているのですか?
0428デフォルトの名無しさんNGNG
unionは使用しているのですか?
0429名無しさん@カラアゲうまうまNGNG
>>427
> ・printf("\x1b[2J") このようなprintfの使い方をしているのですが
>   具体的にどういうことをしているのですか?

(テキスト)画面のクリア。ただし、ANSI互換のターミナルじゃないとだめ。

>   それともプログラム中では宣言されていなくてヘッダファイルとかで
>   REGSっていう共用体が定義されているのですか?
DOS用の処理系だと定義されてるものが多い。
0430デフォルトの名無しさんNGNG
>427
・エスケープシーケンスじゃないの?
・ヘッダファイルもプログラム
04311NGNG
C言語をマスターしたいのですが半年ぐらいでかなり上達しますか?
0432玉三郎NGNG
そろそろワシの出番か・・・(´┏┓`)
0433デフォルトの名無しさんNGNG

一つ目:DOSのエスケープシーケンス
二つ目:そういうのがある
0434デフォルトの名無しさんNGNG
>>431
腕のいい師匠について、10年も修行すればモノになるかな。
でも、だめな奴は30年やってもダメだから、自分に向かないと
思ったら、早めに見切りをつけなよ。
0435デフォルトの名無しさんNGNG
while{
while{

while{

}
}
}
}
ってなってるやつをある特定の条件になったら
初期のwhileの状態に戻したいのだが、どうやったらいいですかね?

分かりやすくいうと、ゲームオーバーしたらファミコンで言うリセット
した状態にしたいのですが。。
0436デフォルトの名無しさんNGNG
>435
意味が。
0437C初心者の名無しさんNGNG
レスありがとうございます エスケープシーケンス…聞いたことがあるけど
ちょっと難しい… いろいろ調べてみようと思います ありがとうございました
0438C初心者の名無しさんNGNG
ttp://www.capricorn.cse.kyutech.ac.jp/~tate/tako/esc.html
これっぽいですね \x1bってのはエスケープシーケンスを使いますよって
定義みたいなものですか?
0439デフォルトの名無しさんNGNG
>>436
ゲームオーバーしたらファミコンをリセットするには
どうやったらいいですかね?
0440manko_chinkoNGNG
>>439
リセットボタンを押せばいいのでは?
0441名無しさん@カラアゲうまうまNGNG
\x1bってのはエスケープコード。
エスケープコードで始まるからエスケープシーケンスと呼ぶ。
0442デフォルトの名無しさんNGNG
>>440
じゃあ通じてるじゃないですか。。
0443デフォルトの名無しさんNGNG
>435
つくりかけでいいから、ソースの一部分を見せてや。
0444manko_chinkoNGNG
goto使えばいいじゃないですか。(プ
0445名無しさん@カラアゲうまうまNGNG
たぶん、変数の初期化のところまでgotoするってことなんでわ。
0446445NGNG
>>444
ケコーンしてくれ。chinkoのほうはいらんから。
0447デフォルトの名無しさんNGNG
bool foo()
{
  while () {
    while() {
      if (特定の条件を満たした) return true;
    }
  }
  return false;
}

main()
{
  while (foo());
}
0448デフォルトの名無しさんNGNG
>>445
あってます。変数を初期化して最初のオープニングの状態に戻したいってことです
0449デフォルトの名無しさんNGNG
gotoは却下とか言うなよ
0450デフォルトの名無しさんNGNG
>>447
ほぉーこういう手もあったか。
0451デフォルトの名無しさんNGNG
gotoなんて使えばいいんですかね?
0452デフォルトの名無しさんNGNG
>>451
label: goto label;
0453デフォルトの名無しさんNGNG
>>447
これは何パターンなんですか?
0454デフォルトの名無しさんNGNG
パターンじゃねーよ
多重ループ脱出のために、ループ内を関数に追い出すのは昔からある手段
0455デフォルトの名無しさんNGNG
最近、プログラミングがしたくなって、本を買ってなんとなくC言語を覚えてるんですが、

役に立つかな?仕事以外で役に立ったことありますか?

今18でプ〜な俺・・・
0456デフォルトの名無しさんNGNG
いい湯加減ですね。
0457デフォルトの名無しさんNGNG
>>455
趣味が何かの役に立つと考えてはいけないかと。
俺は結果的に役に立ってるけど。
0458デフォルトの名無しさんNGNG
>>457
言われてみれば・・・

独学じゃきついだろうが、頑張ります。

・・・どうでもいいな・・・
0459デフォルトの名無しさんNGNG
おい、おまえ、どうでもよくないぞ。
役に立つとか立たないとかじゃなくて、
自分が楽しいと思えることが何よりじゃないのか。
役に立つ・立たないを基準にするようなやつは、
所詮、底が見えてると思わないか。



とマジレスしてみる。
0460デフォルトの名無しさんNGNG
a=1^4+2^4…n^4の出力プログラムは

#include <stdio.h>
main()
{
int a,n;
for(i=1; i<=n; i++){
n[i]=i*i;
}

printf("a= %d\n",n[i]);
scanf("%d",&n[i]);
}

これでイイのでしょうか?
ドキュソな質問でゴメンなさい
0461デフォルトの名無しさんNGNG
なんだよそれ
0462デフォルトの名無しさんNGNG
>>460
int i, j = 0;
for (i = 1; i <= n; i++) j += i * i * i * i;
0463デフォルトの名無しさんNGNG
やっぱ、めちゃくちゃ蚊…
0464ドキュ460NGNG
>>462
アリガト
0465デフォルトの名無しさんNGNG
>>459
好きこそモノの上手なれ。
だがしかしセクースは上手くならないのはナゼか。
0466デフォルトの名無しさんNGNG
>465
本当は嫌いだから
0467デフォルトの名無しさんNGNG
WIn32APIスレでスレ違いと言われたので・・・。

マウスの座標(x,y)=(100,200)みたいなデータがchar型の変数に
char grid[128]="100,200"
のように入っているときxとyの値を個別に取り出して別の変数に入れたい時は
どんな感じでプログラミングすればよいですか?できればint型やPOINT型で入れたいんですが。

>148 名前:デフォルトの名無しさん 投稿日:02/06/16 01:56
>>>146
>どうせstdio.hをincludeするなら、
>int x,y;
>sscanf(grid,"%d,%d",&x,&y);
>がスマートかも。
>すれ違いなのでSEGA。

stdio.hはincludeしてませんが、sscanfを使うためだけにincludeするのは
なんかアレですが仕方ないですかね?
0468デフォルトの名無しさんNGNG
>>467
なんで文字列として格納するの?
0469名無しさん@カラアゲうまうまNGNG
アレっつーか正しい姿だが、別にincludeしなくても使えるよ。
0470デフォルトの名無しさんNGNG
パス先のファイルの
有無ってどうやって確認したらよいデスか?
0471デフォルトの名無しさんNGNG
>470
試しにッ!開くッ!
0472名無しさん@カラアゲうまうまNGNG
Cの規格ではないがaccess()とか。
0473467NGNG
>>468
文字列として格納してるのは通信で受け取ったデータをバッファに
入れてるので。

>>469
stdio.hをincludeしないとエラーが出たんですよね。
おかしいな、もう一回確認してみます。
0474デフォルトの名無しさんNGNG
>>473 stdio.hをincludeしないとエラーが出たんですよね。
おまえC++でコンパイルしてるだろ
0475467NGNG
>>474
全くその通りです(汗。
拡張子をcppでやってるのでC++でコンパイルされてると思います。
ってことはC++スレ行きでしょうか・・・。
0476デフォルトの名無しさんNGNG
>>475
いや、そうでなく。
言語仕様を把握してないだろってことで。

それから、どうしてもstdio.hをincludeしたくないなら、
自前でパースしろ。
0477470NGNG
>>472

if(_access(ファイルパス, 00) != -1){
処理;
}

でうまくいきました。ありがとー!!( ゚ー゚)
0478デフォルトの名無しさんNGNG
>>476
それ以前に、なぜ stdio.h を include したくないのかと小一時間問いつめたく
ないか? ワケあって標準 C ランタイムライブラリをリンクしたくない、とかなら
話は分かるが sscanf() は使うんだよな…(謎すぎ)
0479え ◆CvWntcsM NGNG
>467
あれだ。カンマでcharを区切って別々のバッファに保存してatoiを使え。
0480476NGNG
タシカニ
0481デフォルトの名無しさんNGNG
B言語って今でもあるの?
0482デフォルトの名無しさんNGNG
組み込み用にsscanfを自作したが
スタックオーバーフローとかされても困るし
第一使わねぇよなぁ と思ってcvsの肥やしになった。

7行ネタになるかと思ったけど大して難しくないしな。
7行コンバータにかけたら何もせずに10行になったし・・・
0483デフォルトの名無しさんNGNG
>>482
一行の文字数に制限を付けなければ、いくらでも行数は減る(w
0484デフォルトの名無しさんNGNG
>>483
余所のスレでも展開するなよ。
改行込み80*7の560文字だ。
0485デフォルトの名無しさんNGNG
>483
一応7行規定では79x7文字だよ
0486デフォルトの名無しさんNGNG
つーことは書くときに既に圧縮をかけないといけない訳だ罠(w
0487デフォルトの名無しさんNGNG
>486
その罠の使い方にはやや違和感があるんだが、
最近でははやっているのか?
0488デフォルトの名無しさんNGNG
書くときに圧縮って何だ?
普通に(勿論最小の記述で)コードを書いて、
後から行連結等をして短くするのが普通だと思うが。

1スレ目の頃の勇者でも、79*xの状態で編集はしないだろ
0489デフォルトの名無しさんNGNG
>>487
俺はこういう書き方だと今まで思っていた罠(w

>>488
いや、物の例えですよ。いかに短くするか頭をひねるんだ
ろうなって。
0490名無しさん@カラアゲうまうまNGNG
変数名を短くとかマクロで縮めるとか、そういうことだろ。
0491デフォルトの名無しさんNGNG
それだけで済んだら苦労しない
0492デフォルトの名無しさんNGNG
>486
はただたんに”〜だわな”を変換してしまっただけでは?
0493デフォルトの名無しさんNGNG
>>492
正しい罠の使い方って?
0494デフォルトの名無しさんNGNG
>>493
誰も知らない罠
0495スパイスガール図NGNG
罠ビー
0496罠師はマ板へ逝けNGNG
                              §〆(゚д゚;)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  @

 492 :デフォルトの名無しさん :02/06/18 03:27
 >486
 はただたんに”〜だわな”を変換してしまっただけでは?

 493 :デフォルトの名無しさん :02/06/18 03:45
 >>492
 正しい罠の使い方って?

 494 :デフォルトの名無しさん :02/06/18 03:52
 >>493
 誰も知らない罠

 495 :スパイスガール図 :02/06/18 04:10
 罠ビー
0497デフォルトの名無しさんNGNG
>>496
がんがれ
0498デフォルトの名無しさんNGNG
↓このスレでいいのかよくわからないと言う罠。
http://ton.2ch.net/test/read.cgi/gline/1021935708/
0499デフォルトの名無しさんNGNG
gccで
char s[] = "abc";
char *p;
とすると、p=sは通るのですが、p=&sとすると
warning: assignment from incompatible pointer type
となります。別に困ることは無いのですが、理由が分からないのは
気持悪いです。誰か理由の分かる方はいませんか?
0500デフォルトの名無しさんNGNG
&sは配列へのポインタ。
0501愛子NGNG
独学でC言語をものにするポイントってありますか?
やっぱり、数学が出来ないと駄目なんでしょうか?

0502デフォルトの名無しさんNGNG
>>501
金
0503愛子NGNG
お金もないんですが、絶望的でしょうか。
0504デフォルトの名無しさんNGNG
>>503
やる気があれば誰でもそこそこは身に付く技術。
0505デフォルトの名無しさんNGNG
まともな読解力さえあればK&R熟読すれば身につくよ。
0506デフォルトの名無しさんNGNG
>>505
書かなきゃ覚えないと思うが.....
評論家になったらおしめぇょ!
まぁ、(評論家 == 優秀) が真という会社もあるが、クソ。
0507デフォルトの名無しさんNGNG
>>501
はじめてのC 最強.
0508デフォルトの名無しさんNGNG
>>499
&s は char へのポインタでなく char[3] へのポインタだから。
ポインタとしての値は同じだけど型が違う。
0509デフォルトの名無しさんNGNG
プログラムを始めて2ヶ月の初心者の質問です。よろしくお願いします。
C++Builder6 で、

typedef struct {
WORD a;
WORD b;
WORD c;
DWORD d;
DWORD e;
}TEST;

と構造体を定義して

sizeof(TEST);

とすると、サイズが16byteになってしまいます。
メンバ変数の合計値は14byteなのに、何故なんでしょうか?
色々と試してみたんですが、4byte境界に強引に合わせられてしまっているようです。
正しく(?)14byteにするには、どの様にしたら良いのでしょうか?
お教え下さい。

0510デフォルトの名無しさんNGNG
>509
typedef struct {
DWORD d;
DWORD e;
WORD a;
WORD b;
WORD c;
}TEST;
0511デフォルトの名無しさんNGNG
>>509
コンパイラオプションである場合がある
0512509NGNG
>>510 それでもダメでした。
>>511 ただ今、格闘中です。ありがとうございます。
0513デフォルトの名無しさんNGNG
>509
2byteくらいよいのでは?
0514デフォルトの名無しさんNGNG
FAQだな
0515デフォルトの名無しさんNGNG
>>507
育児教育系の書棚の近くでそれ見つけて思わず買っちゃったよ。ナイスな店長さん。
0516デフォルトの名無しさんNGNG
>>509
C++Builder6のデフォルトのパディング数は8だからこういうことに
なります。

プロジェクト→オプション→コンパイラ(詳細)で、データの配置境界
が8になっていると思います。

これを1や2に変えれば、14バイトになると思いますが、そうすると
VCLとの互換性が取れなくなりますので、そのままにしておいて
下さい。
0517デフォルトの名無しさんNGNG
>>509
#pragma pack(1)

元に戻すなら
#pragma pack(push, 1)
typedef struct {
 :
}TEST;
#pragma pack(pop)
0518shigeNGNG
自分でPythonのstrut_pack()/struct_unpack()みたいなのを作ったほうがいいよ。
0519名無しさん@カラアゲうまうまNGNG
>>509
つーか、なぜ14バイトであることに拘ってる?
0520509NGNG
>>510-511 & 513 & 516-518
うおっ!色々ありがとうございます。すごい沢山のアドバイスを頂くことができ、ビクーリしました。
大変恐縮です。。。

>>519
グレースケールとかモザイクとか合成ができる、ちょっとしたグラフィックソフトを
本を見ながら作っているんですが、最初はとにかくエフェクトの効果を楽しみたいと思い、
手抜きして、Graphics::TBitmapを使って書き、ひと通り楽しんだ後に
ファイルの読み書き→fopen、描画→StretchDIBitsにしたんですが

fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);

switch(bmih.biSize)
{
    case sizeof(BITMAPINFOHEADER);
      break;

    case sizeof(BITMAPCOREHEADER);
      break;

    default:
      goto err;
}

のswitch文でdefaultを通過してるので、何故?

fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
ftell(fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);

とファイルポインタの位置を確認したところ、16でした。
でもBITMAPFILEHEADERのメンバの合計は14byteじゃ…と>>509の様に自分で定義しても、
やはり16byteだったので、不思議に思いカキコさせて頂きました。
お邪魔して申し訳ありませんでした。m(_ _)m











0521デフォルトの名無しさんNGNG
2進数→10進数、10進数→2進数、10進数→16進数、16進数→10進数、2進数→16進数、16進数→2進数
の変換をするプログラムを教えていただきたいのですが。
当方ゲリゲリの初心者なので、できるだけ簡単な関数でおながいします。もちろん「printfの変換文字」というのは無しで...
0522デフォルトの名無しさんNGNG
2進数の何を10進数にするんだ?
文字列?
0523デフォルトの名無しさんNGNG
>>521
intは10進数しか保持しない とか思ってるんじゃない?
どっちにせよこのくらい小学生だって自分で解決するけどね。
0524デフォルトの名無しさんNGNG
>>523
むしろ普通2進数でしか保持しないよね(笑)
0525デフォルトの名無しさんNGNG
n進数の文字列からCPU内部表現には、strtol使う。
CPU内部表現から10,16進数文字列は、sprintfが便利。
2進数文字列へは、自分
0526デフォルトの名無しさんNGNG
>>521
Windows付属の電卓
0527デフォルトの名無しさんNGNG
で出力関数を書くべし。
0528デフォルトの名無しさんNGNG
>>521
まず読み込み。(^はべき)
納i=0,n-1]a_ib^iを上位の桁から解析するなら
上位の桁から数値が入っている配列をs[i]とすれば
sum *= b ; sum += s[i] ;をiについて繰り返せばよいだろう。
書き出しは下位からが簡単だが上位から行うなら桁数の
最大をnとすれば順にs[i] = sum / b^(n-i+1) ; sum -= s[i] * b^(n-i+1) ;
をiについて繰り返せばよい。
0529デフォルトの名無しさんNGNG
>>521
8進数も仲間に入れてやれよ
0530デフォルトの名無しさんNGNG
ついでにBASE64も仲間に入れてやれよ……
0531デフォルトの名無しさんNGNG
>208に、
double **d;

d = (double **)malloc(sizeof(double *) * 100);
for (i = 0; i < 100; i++)
d[i] = (double *)malloc(sizeof(double) * 100);

の書き込みがありますが、このメモリを全て解放するときは
free(d);で良いのですか?
0532デフォルトの名無しさんNGNG
>>531
だめ。iそれぞれにfree(d[i])のあとfree(d)
0533デフォルトの名無しさんNGNG
>>531
それをやりたいならこうする

/* x[n][m]を確保 */
int i ;
double **x ;
int n=100,m=100 ;

x = (double**)malloc(n*sizeof(double*)+n*m*sizeof(double)) ;
x[0] = (double*)x+n ;
for(i=1;i<m;i++) x[i] = x[i-1]+m ;
0534533NGNG
間違えた
x = (double**)malloc(n*sizeof(double*)+n*m*sizeof(double)) ;
x[0] = (double*)(x+n) ;
for(i=1;i<m;i++) x[i] = x[i-1]+m ;
0535デフォルトの名無しさんNGNG
>>533
これだと開放はfree(x); だけでいいんですか?
0536533NGNG
そういうこと。また間違えてた。止めたほうがいいかも
x = (double**)malloc(n*sizeof(double*)+n*m*sizeof(double)) ;
x[0] = (double*)(x+n) ;
for(i=1;i<n;i++) x[i] = x[i-1]+m ;
0537デフォルトの名無しさんNGNG
>>536
やろうとされている事はわかります。double *[]とdouble[]を同時に確保
して、アドレス計算によりdouble *[]を作成するのですね。
0538デフォルトの名無しさんNGNG
構造体の中のメンバとして配列を動的に確保するときは
先に構造体の中にポインタ変数を用意して
mallocで確保したメモリのアドレスをそのポインタに割り当てる
みたいな方法でできます?
0539デフォルトの名無しさんNGNG
>>538
struct ss {
double *d;
};

で、

ss.d = (double *)malloc(sizeof(double) * 100);

みたい奴か?普通にできるよ。
0540538NGNG
>>539
そうですか、良かったです^^;。
この方法で良いのかあまり自信が無かったので聞いてみました。
0541デフォルトの名無しさんNGNG
>>540
ss.d = malloc(sizeof *ss.d * 100);
とやるのも一法。
0542デフォルトの名無しさんNGNG
struct ss{
double d[1];
};
pss = (ss*)malloc(sizeof(ss) + sizeof( double ) * (100-1) );
0543デフォルトの名無しさんNGNG
>>541
sizeof ss.d * 100でしょ。
0544543NGNG
と思ったが、*ss.dは間接参照か。
0545デフォルトの名無しさんNGNG
ハノイの塔を、再起呼び出しでやるんですけどわかりません。
プログラムはあるので細かく解説お願いします。

void hanoi(int , char, char, char);
と関数を定義して
int n; scanf("%d %d",&a,&b);
hanoi(n,'a','b','c');

void hanoi(int n, char a, char b, char c)
{
if(n>0){ このif文の中身がどう動くのか教えてください
hanoi(n-1,a,c,b);
printf("%d番の円盤を %c から %cに移動\n",n,a,b);
hanoi(n-1,c,b,a);
}
}
0546デフォルトの名無しさんNGNG
明日の昼までに提出しないといけない課題が分かりません。
どなたか助けてください。
課題は
10次元のベクトルa,bを配列に作成してa,bの内積を求めなさい。

配列を使わなくていいなら出来そうなんですけど、
配列を使うとなるといまいち分かりません。
0547gNGNG

-------風俗の総合商社・MTTどこでも-------

〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
------------------------------------------------
0548デフォルトの名無しさんNGNG
>>545
デバッガでステップ実行してみれや。
0549デフォルトの名無しさんNGNG
>>546

まず内積の計算の仕方を教えなさい。
0550デフォルトの名無しさんNGNG
>>546
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/l50
0551U-名無しさんNGNG
>>546
たぶん、やっぱり、
「10次元」「ベクトル」「内積」っていうタームの定義が
わからんちんなのだろう。

てか、めちゃめちゃ簡単なんですけど。

(´-`).。oO( 入力がリストだから配列は不要なんでぇ )
とか、そういう状況でもなさそう。
0552マジでNGNG
>>546
俺の辞書に内積と言う言葉はない(IMEにも
0553デフォルトの名無しさんNGNG
便乗

|a|[b]cosθとかほざいたら叩かれますよね?俺。
0554デフォルトの名無しさんNGNG
>>553
当然
0555デフォルトの名無しさんNGNG
>>553
それでも良いが、ふつーは

a = (a1, a2, ..., an)
b = (b1, b2, ..., bn)

として
        ___
a・b = Σai * bi

で定義するだろう。(そもそも空間が Kn じゃないと話が別だが)
0556デフォルトの名無しさんNGNG
>>555
そうそう、この式がなぜか出てこなかった・・・。
0557デフォルトの名無しさんNGNG
error C2146: 構文エラー : ';' が、識別子 'Abc' の前に必要です。
fatal error C1004: 予期せぬ EOF が検出されました。
VC6.0++です。
extern 構造体 Abc;
付近でエラーが出ます。
ちゃんと型をインクルードしてるんですが
0558デフォルトの名無しさんNGNG
>>557
#include <stdafx.h>
0559デフォルトの名無しさんNGNG
struct ABC { }; <-セミコロン
0560デフォルトの名無しさんNGNG
CNNが伊×韓戦の審判判定についてアンケート。
で、チョソの掲示板による組織投票でえらいことに!

「レフェリーを非難しますか?」(右下の方)YESに投票を!!
今のところ95:5ぐらいで負けてます

[緊急]CNNで韓国:イタリア審判判定投票!!

http://asia.cnn.com/2002/WORLD/europe/06/18/italy.korea.reaction/index.html

コピペ推奨!

2ちゃんねらーの力を見せてやれ!!!

0561デフォルトの名無しさんNGNG
> 2ちゃんねらーの力を見せてやれ!!!

最低・・・
0562デフォルトの名無しさんNGNG
群れていきがる珍走団と変わらんな。
0563 NGNG
#include <stdafx.h>
インクルードファイルを開けません・・・
昨日まではうまくいっていたんだけどなぁ
0564デフォルトの名無しさんNGNG
さむいな
0565デフォルトの名無しさんNGNG
インクルードファイルの優先順位?どうやってかえるの?
ttp://www.netsphere.jp/osaru/lv2/error.htm
0566デフォルトの名無しさんNGNG
>>565
そのページは間違ってる。忘れろ・・・忘れるんだ・・・
0567デフォルトの名無しさんNGNG
構造体の宣言をヘッダーファイルで宣言しないで,
ファイルないで宣言したらうまくいった・・・。
0568デフォルトの名無しさんNGNG
>>561-562
この辺りにまともな2ちゃんねらが・・。
0569デフォルトの名無しさんNGNG
http://www.netsphere.jp/osaru/lv2/error.htm
0570デフォルトの名無しさんNGNG
関数ポインタの決定的証拠をお見せします。
http://corn.2ch.net/test/read.cgi/news/1024502993/
           
0571デフォルトの名無しさんNGNG
char *(*ret_dummy())[3]
{
static char *x_men[3] = {"氏ねよ(≧▽≦)","(´-`)bナイス","<丶`∀´>ニダ"};
return &x_men;
}

char *(*(*ret())())[3] {return &::ret_dummy;}

int main(int ,char **)
{
char *(*(*addr)())[3] = ::ret();
cout<<(*(*addr)())[rand()%3]<<endl;
return 0;
}
0572デフォルトの名無しさんNGNG
glColor3f(1.0,0.0,0.0);
glVertex3f(-1.5,-1.5,0.0);

glColor3f(0.0,1.0,0.0);
glVertex3f(1.5,-1.5,0.0);

glColor3f(0.0,0.0,1.0);
glVertex3f(0.75,0.75,0.0);

こうやって三角形を頂点で与えてるんだけどこれを
三角錐にするにはどうしたらいいんですか?
0573デフォルトの名無しさんNGNG
こー、ぐるーっとまわせば、
0574デフォルトの名無しさんNGNG
グーグルさっきからしてるんだけど、サパーリなものなんで
聞いてみたんですが。。
0575デフォルトの名無しさんNGNG
>>573-574
ワラタ
0576デフォルトの名無しさんNGNG
正直本気でグーグルと思いますた。。
逝ってきます(´・ω・`)
0577572NGNG
投影変換を行わないとダメぽ?
Z軸に頂点をもう一個足して、あとは投影処理で△にしたら良いのですか?
サパーリわからん
0578デフォルトの名無しさんNGNG
>>572
ちゃんと3次元で処理しろよ、先ずはワイヤフレームからだな(藁
OpenGLのサンプル(MSDN付属)にあったと思うが...
0579デフォルトの名無しさんNGNG
配列で得たランダム値(100個と仮定)の中に、ある数字が含まれるか
どうかを判別するにはどう書いたらいいですか?
0580デフォルトの名無しさんNGNG
>>579
ループで配列を舐めて、ifで判定すればいいじゃん。
そうじゃなくて?
0581デフォルトの名無しさんNGNG
DOS/V + PentiumでDOSベースのゲームを作り
たいのですが、キーボード割込みハンドラの登録
はどのシステムコールを使えばいいのでしょうか?
VC++のWin32 Console Applicationでプロジェクト
つくってコンパイルしてます。
0582名無しさん@カラアゲうまうまNGNG
Win32 Console ApplicationってDOS/Vで動くん?
0583デフォルトの名無しさんNGNG
キーボードインタラプトをフックしたい?
0584デフォルトの名無しさんNGNG
フックって殴ることですよね?
0585デフォルトの名無しさんNGNG
引っ掛けるじゃない?
0586デフォルトの名無しさんNGNG
引っ掛けて殴るんですか?
0587デフォルトの名無しさんNGNG
>>583
矢印キーが押されたことを割込みハンドラで
処理したい。
kbhit()で拾っていたのではレスポンスが
悪すぎたので。
0588デフォルトの名無しさんNGNG
>>586
ワラタ
0589デフォルトの名無しさんNGNG
>>587
割り込みじゃなくてイベントハンドラじゃないの?
0590デフォルトの名無しさんNGNG
よろしくお願いいたします。
0591デフォルトの名無しさんNGNG
DirectInputじゃ駄目?
0592デフォルトの名無しさんNGNG
>>587
割り込みベクタを書き換えるんだろうけど
手もとにAT互換機の資料が無い
0593デフォルトの名無しさんNGNG
98とはやっぱ違うんかな
0594デフォルトの名無しさんNGNG
お返事ありがとうございます
0595デフォルトの名無しさんNGNG
なにが。
0596初心者NGNG
得点を次々入力して、もし70以上なら合格、70未満なら不合格とし、
合格人数、不合格人数、受験者合計、最高得点、最低得点、平均点を出力する
プログラムを設計・開発せよ。なお、999が入力されたらループを抜け、
999はカウントしない。

これの最高・最低得点ができません。
お願いします。
0597みんみ ◆Hk7UCbL. NGNG
UNIXはCで作られているそうですが、
WindowsもCなんですか?
0598デフォルトの名無しさんNGNG
>>596
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/l50
0599初心者NGNG
はい、宿題です。
よろしくお願いします。
0600デフォルトの名無しさんNGNG
600
0601という噂があるんだけどねNGNG
>>597
WindowsはPascalです。
0602デフォルトの名無しさんNGNG
(´・∀・`)へー
0603みんみ ◆Hk7UCbL. NGNG
>>601
噂ですか。ゲイツさんなら知ってるんですかね。

0604デフォルトの名無しさんNGNG
>>587 (>>592)
本家(本当の本家はIBMか?)に仕様書がある。要レジストだが無料。
http://www.oadg.or.jp/
0605デフォルトの名無しさんNGNG
577が作ってるのはDOSのアプリケーションと違うやん・・
0606名無しさん@カラアゲうまうまNGNG
577が作ってるのは三角錐だからな。
0607デフォルトの名無しさんNGNG
>>597
WindowsはC++です。
0608デフォルトの名無しさんNGNG
>>607
NTに限ってはな。
0609デフォルトの名無しさんNGNG
return で何を返すのですか?
0610デフォルトの名無しさんNGNG
思い出
0611デフォルトの名無しさんNGNG
重いではどうやって返すの?
0612デフォルトの名無しさんNGNG
>>610
ワラタヨ
0613デフォルトの名無しさんNGNG
笑えねぇよ
0614あんNGNG
IPから住所を調べられるサイトを教えてください(ホスト検索)
0615デフォルトの名無しさんNGNG
>>614
http://www.google.co.jp/search?q=%8E%81%82%CB&hl=ja&lr=
0616デフォルトの名無しさんNGNG
>>614
http://kan-chan.stbbs.net/goods/shine.html
0617デフォルトの名無しさんNGNG
>>597
Windowsはベーシックとちごたんか?
0618Pennis M.RitchieNGNG
I C.
0619デフォルトの名無しさんNGNG
Windowsを動かすにはVBのランタイムが必要らしいぞ
0620デフォルトの名無しさんNGNG
漏れはFORTRANって聞いたんだが。
0621デフォルトの名無しさんNGNG
DOSXNTでWin32コンソールアプリうごかなかったっけ?
0622デフォルトの名無しさんNGNG
C入門用の良い本はありませんか?
教えてください。
0623デフォルトの名無しさんNGNG
K&R
0624デフォルトの名無しさんNGNG
C++ sard edition
0625デフォルトの名無しさんNGNG
はじC
0626デフォルトの名無しさんNGNG
>622
君なら河西本だな。
0627デフォルトの名無しさんNGNG
アヒル本がいいよ
0628デフォルトの名無しさんNGNG
void main(){
int i;
int num[5]={10,3,7,18,5};

for(int i=0;i<5;i++){
 printf("num[%d]=%d\n",i,num[i]);
}

for(int i=0;i<5;i++){
 printf("num[%d]=%d\n",i,num[i]);
}
}
なぜエラー?
int iは,別々じゃないの?
for文抜けたら,なくなるんじゃないの?
0629デフォルトの名無しさんNGNG
#define for if(0); else for
0630デフォルトの名無しさんNGNG

 お勉強レベルな私ですが。
 WAVE関係を勉強しようとサンプル組もうとしたのですが、
まずは読み込み関係を省略しようとターゲットを直接
埋め込もうとしました。

unsigned char test[] = {
#include "test.wav"
};

 ・・・なーんて事したら、
test.wav:1: stray '\' in program
scream.wav:1: syntax error before `{'

みたいなエラーが、沢山出てくれました。
バイナリなんだから、当然ですが。

 で質問ですが、バイナリのソース埋め込みってどうやるんですか?
 アセンブラなら、.include で十分だったはずなのに。

 環境は関係ないと思いますが、MinGWです。
0631デフォルトの名無しさんNGNG
>>628
VC++6だろ。古いC++の文法なので、エラーになります。
VC++.NETを買いなせえ。
0632デフォルトの名無しさんNGNG
VC++6では、だめでVC++.NETではOK?
0633デフォルトの名無しさんNGNG
そうでもない
0634デフォルトの名無しさんNGNG
>630
WAVE関係とやらを勉強する前に(以下略)
0635632NGNG
ビルGに問い合わせてみます
0636デフォルトの名無しさんNGNG
>>630
・・・・・・
0637jNGNG
>630
うまい!
0638デフォルトの名無しさんNGNG
すいません。教えてください。
コンソール上に出力するときに
三桁毎にカンマなりドットなりを入れたいんですが、
標準でそういう、書式で出力できますか?
やっぱり、関数作らないとダメですか?
0639デフォルトの名無しさんNGNG
ちんぷんかんぷん
0640デフォルトの名無しさんNGNG
ちんちんかもかも
0641デフォルトの名無しさんNGNG
100.100.100ってことか
関数作ったほうがいいかも
0642デフォルトの名無しさんNGNG
>>638
標準にはないから、sprintfでchar[]化してから","を入れなされ。
0643デフォルトの名無しさんNGNG
y = a ? b ? c ? A : B : C : D; を

if の形で書き直すとどうなるんですか?
0644デフォルトの名無しさんNGNG
>>643
if (!a) y = D;
else if (!b) y = C;
else if (!c) y = B;
else y = A;
0645デフォルトの名無しさんNGNG
>>644
分かりましたサンクス
0646638NGNG
あ〜
やっぱ標準ないですよね〜
お世話になってる先輩から
標準であるよ〜って言われたんで
新たに関数領域を作っていたんですが
注意されてから必死こいて探したんですけど
なくて(笑
とりあえず、何もなかったことにします(笑
ありがとうございました。。。
0647デフォルトの名無しさんNGNG
>>630
(゚д゚)ぽかーん
0648デフォルトの名無しさんNGNG
>>646
あんなんロケール依存だから標準で入れるのは難しいだろう。
0649デフォルトの名無しさんNGNG
>>648

locale で、

char *decimal_point
 金額以外の数量の小数点文字。
char *thousands_sep
 金額以外の数量の、小数点の左にある数字のグループを分離するのに
使う文字。
char *grouping
 金額以外の数量の各グループの桁数。
char *mon_decimal_point
 金額書式の小数点文字。
char *mon_thousands_sep
 金額書式の、小数部の左にある数字のグループの分離記号。
char *mon_grouping
 金額書式の各グループの桁数。

とか定義されてるから、難しくはないと思う。需要が少ないだけと思う。
0650デフォルトの名無しさんNGNG
おお、locale.h なんてあったのか。
使ったことなかった…
0651デフォルトの名無しさんNGNG
(´・∀・`)へー
さすがローカル。
0652あ、釣られちゃったNGNG
>>651
誰も釣られていないようだね。かわいそうに。
0653デフォルトの名無しさんNGNG
>>630は神ですか?
0654shigeNGNG
XBMまんせー
0655デフォルトの名無しさんNGNG
すみなせん、今まで整数から文字に変換するときはitoaを使っていたのですが、sprintfのほうがいいのかお前ら。
0656デフォルトの名無しさんNGNG
>>655
好きにしろゴミ人間。
0657デフォルトの名無しさんNGNG
ゴミだと尾おおおおおおおおおおおおおおおおおおおおおお奥羽うううううううううううううううううううううう嗚呼あああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああおああああああrrrっらロおおおおおおおおおおおおkじゃ尾krじゃお子rじゃぎじゃえrがぇrgjrsじjrs
0658デフォルトの名無しさんNGNG
おしい!もう少しでじゃい子!
0659デフォルトの名無しさんNGNG
>>655
itoa()は標準の関数じゃないから移植性がないぞな。便利なんだけどね。
0660デフォルトの名無しさんNGNG
>>630
僕が使ったことのあるアセンブラは、バイナリファイルをincludeなんてできなかった気がするんですが、
Cコンパイラ付属のリンカで扱える形式ではき出せるなら、名前の付け方に注意すればアセンブラとCのリンクはできるはずです。

実は僕も同じような状況になったことがあるんですが、そのときは、
バイナリファイルをCの形式にコンバートするツールを作りました。

ファイル1バイトずつを読んで、fprintfで
char testwav[]="\x00x\00\x00\x00\x00\x00

と書き出すだけという簡単なものです。
makefileにも書いておけばそんなに面倒ではありません。

>>655
sprintfはあまり安全じゃない面があります。
僕はitoaは使ったことないけど、snprintfを使います。
0661デフォルトの名無しさんNGNG
>659
なるほど〜。
0662デフォルトの名無しさんNGNG
すみなせん。makefileってなんですか?
0663デフォルトの名無しさんNGNG
>>662
人生の敗北者が使うファイルです
0664デフォルトの名無しさんNGNG
それを触れたら絶対時間で生きなければいけないと言う罠。
0665デフォルトの名無しさんNGNG
make・・・・説明しだしたら小一時間ではとても足りそうにない。汗
0666デフォルトの名無しさんNGNG
automake/autoconfのいい解説サイトを教えてください
0667デフォルトの名無しさんNGNG
http://shimaki.hoops.ne.jp/autoconf/book1.html
0668デフォルトの名無しさんNGNG
>>396
UNIXプログラミング質問すれ
http://pc.2ch.net/test/read.cgi/tech/992057422/l50
0669630NGNG
 なにやら、ネタだか真性馬鹿と思われちゃったみたいですね。
 愚か者なのは認めますが(^^;

>>660
 なるほど、テキスト化ですか。
 しかし手間を考えると、素直に自分で開いて確保して読み込んだ方が早いかなあ・・・。
 でも、テクニックとして面白い事を覚えた気がします。
 道を示された気がします、ありがとうございました!

 新たな環境で目的を急ぎすぎました。 あはは。
0670デフォルトの名無しさんNGNG
>>669
この文章読んでも、「ネタだか真性馬鹿」としか思えない。
0671デフォルトの名無しさんNGNG
unsigned char test[] = {
#include "test.wav"
};

凄い発想だ。
>>669で言い訳しているようだが、何の弁解にもなっとらん
0672デフォルトの名無しさんNGNG
>>671
でもこれくらい柔軟な発想が出来た方が(略

>>669
面倒かなあ・・・・ファイルサイズ分freadするだけだろ?
0673デフォルトの名無しさんNGNG
>>630
エラー出なくなる方法ハケーンしたよ!

unsigned char test[]={
// #include "test.wav"
}
0674デフォルトの名無しさんNGNG
>>673
つまらんこといちいち書くな。だいいちエラーなくならないし。
0675デフォルトの名無しさんNGNG
ワラタ。
0676デフォルトの名無しさんNGNG
>>669
test.wav
01 02 03
なバイナリファイルを
test_wav.c
unsigned char test_wav[] = {
0x01, 0x02, 0x03
}
に変換するツールの作成なんて入門レベルだぞ。
5分で書け。

それからこの方法はそれほど特殊というわけではないよ。
もちろんメリット・デメリットをよく理解しておく必要はあるけど。
0677デフォルトの名無しさんNGNG
いい加減、行末にセミコロンを付けろって。
0678_NGNG
struct Stack{
int a;
char b;
int c;
};

void func(){
int a;
char b;
int c;

other_func((Stack*)&a);
}

void other_func(Stack* stack) {
printf("%d %d %d\n", stack->a, stack->b, stack->c);
}

ローカル変数を別の関数に渡したいです。
これで家では一応動いたのですがマシンによっては
int a; char b; int c;のアドレス配置って変わってしまいますか?
0679デフォルトの名無しさんNGNG
>678
危険なかほりがぷんぷんする
0680デフォルトの名無しさんNGNG
つぅかそれのどこがスタックだと小一時間・・・
0681デフォルトの名無しさんNGNG
おとなしくローカル変数でstruct Stack作ればいいじゃん。
それを渡せば吉
0682デフォルトの名無しさんNGNG
>>678
Cで10年プログラムをしてますが、そういう組み方を
発想したことがありませんでした。
0683デフォルトの名無しさんNGNG
>680
あるいみスタック。
0684デフォルトの名無しさんNGNG
>>681
禿同
0685デフォルトの名無しさんNGNG
>>678
論外

っつか、なんで素直に

struct foo {
  int a;
  char b;
  int b;
};

void func () {
 struct foo foo;
  other_func(&foo);
}

としないのかと小一時間…。
0686デフォルトの名無しさんNGNG
けど、こいつは大物になると思うぞ。
この人並み外れた発想力と工夫。
こいつに論理とアーキテクチャをたたき込んだら驚異になる存在だ。

バカにするのではなく認める方向で行こう。
0687デフォルトの名無しさんNGNG
>>685
さらに禿同
0688デフォルトの名無しさんNGNG
>>686
う〜ん。なんとか禿同。
変に思わないでね。ホントに禿同なんだよなぁ。
0689デフォルトの名無しさんNGNG
俺だったらこう定義するね。
struct foo {
  int a;
  int b;
  char c;
};

つーか>>685はコンパイルエラー出るね。
ごめんね、つついて。
0690_NGNG
>>685
void func()内では普通にa,b,cとアクセスしたいんです。
foo.a, foo.b, foo.cってするより。
これが一番速そうなので。。。
0691デフォルトの名無しさんNGNG
速さは変わらんでしょ?
0692デフォルトの名無しさんNGNG
>>678
> int a; char b; int c;のアドレス配置って変わってしまいますか?
それどころか、最適化によっては b とか c がレジスタ変数になるかも知れん
ぞ。

>>686
> けど、こいつは大物になると思うぞ。
んなわけねーだろ。
0693デフォルトの名無しさんNGNG
>>690
絶対止めろ。死んでもやめろ。
0694デフォルトの名無しさんNGNG
ホームラン級のバカだな
0695デフォルトの名無しさんNGNG
自チームのゴールにドライブシュート級のバカだな
0696デフォルトの名無しさんNGNG
>>690
まずは、普通に組め。どうしても速くしたい所があったら、ここで聞け。
そうすれば、みんなハッピーになれる。
あまりにも、バカバカしい書き込みはスレが荒れるから止めてくれ。
0697デフォルトの名無しさんNGNG
685の作戦>>>>>>>>>>>>>>>>>>>>>>>>>>>グローバル変数>>>∽>>>678の作戦
0698_NGNG
>>692
なるほど。。。最適化されないようにvolatile?とか付けても駄目ですか?
0699デフォルトの名無しさんNGNG
>698
速度を求めてるのに、最適化を防いでどうするのよ?
0700デフォルトの名無しさんNGNG
汲んでみたところで、コンパイルスイッチでアセンブラコード
に落として、ステート数などを自分で計算するのもよろし。
0701デフォルトの名無しさんNGNG
>>698
最適化されないようにしたら遅くなるじゃん。
つーか、「速くなりそう」とか勘でやるんじゃない。ちゃんと計測しろ。
0702デフォルトの名無しさんNGNG
>>698
無駄な抵抗な罠。
0703デフォルトの名無しさんNGNG
inline
0704_NGNG
>>699, 701, 702
ほんとだw;。。。やっぱり駄目か。。。
素直にstruct Stack{ int* a; char* b; int* c };としてother_func()
前に代入して見ます。
(他の関数にもローカル変数を渡す可能性があるので)
さすがム版煽りが激しいですね>_< 逝ってきます。。。
0705デフォルトの名無しさんNGNG
>>704
全然素直じゃない罠。
0706700NGNG
>>703
それで行こう!
ま、プログラム容量は増えるけど。
0707デフォルトの名無しさんNGNG
>704
まだ何か考え違いをしている
0708700NGNG
あれ?ここってsage進行?
0709デフォルトの名無しさんNGNG
>>704
素直に>>685にしとけって。その方法は遅くなるだけだぞ。
0710696NGNG
>>704
煽り ? どこがよ ? >>696 にも書いたけど、お前の書き込みの方が有害だぞ。

>>708
じゃないけど、くだらん話題には sage が当然でしょ。
0711デフォルトの名無しさんNGNG
>>710
わかった。お前の性格が常に煽りモードなのか。
人間関係築け。こんなところで遊んでないで。
0712696NGNG
>>709
つーか、こいつなら実体の確保を忘れて、「プログラムがあぼーん
されますぅ...」とか言ってきそう。
0713700NGNG
もうやめようYO!
どうせ>>704はいないんだしさ。
0714デフォルトの名無しさんNGNG
配列を昇順に並べ替え、並べ替えた結果を画面に出力するプログラムを作成せよ。
a[0]='~';
a[1]='M';
a[2]='g';
a[3]='!';
a[4]='-';
a[5]='p';
a[6]='v';
a[7]='4';
a[8]='l';
a[9]='R';
a[10]='@';
a[11]='}';
a[12]='-';
a[13]='\';
a[14]='/';
a[15]='X';
a[16]='h';
a[17]=':';
a[18]='r';
a[19]='?';
a[20]='c';
a[21]='<';
a[22]=']';
0715デフォルトの名無しさんNGNG
> 配列を昇順に並べ替え、並べ替えた結果を画面に出力するプログラムを作成せよ。

なに命令してんだよ。
土下座して教えを乞う立場だろうが。
バカ学生は死んでろ。
0716デフォルトの名無しさんNGNG
つーか、縦にずらずら書かんでほしいよ。
0717デフォルトの名無しさんNGNG
system("cat >>714 | sort > result.txt");
0718696NGNG
>>711
オマエモナー
0719デフォルトの名無しさんNGNG
>>714
配列を昇順に並び替える ? できないよ、そんなこと。配列の中身じゃ
ねーのか ? とりあえず、qsort() あたりを調べたらどうよ。
0720700NGNG
宿題ならライブラリとか使わないで、自力関数作りなさい。
forとifで!
0721デフォルトの名無しさんNGNG
もしもー
0722デフォルトの名無しさんNGNG
ピアノがー
0723デフォルトの名無しさんNGNG
弾けたならー
0724デフォルトの名無しさんNGNG
>>714
つーか、「昇順」って何を基準に「昇順」なんだ?
誰だ、そんな超下流でタコな問題を出した禿げは?
0725デフォルトの名無しさんNGNG
>>717
厨房は大概ゲイツな罠。
0726デフォルトの名無しさんNGNG
どうせjis順だろ
0727デフォルトの名無しさんNGNG
なんだか荒れてきたな。
荒れるのも分かる気がするけど。
0728デフォルトの名無しさんNGNG
int** a[10][10][10][10][10];

何バイト確保されるか答えなさい。
0729デフォルトの名無しさんNGNG
sizeof(a)バイト
0730デフォルトの名無しさんNGNG
あほくさ
0731デフォルトの名無しさんNGNG
どこの専門学校だよ。
ダメな問題ばっかり。
0732デフォルトの名無しさんNGNG
qsortより早いソートを考えなさい。
0733デフォルトの名無しさんNGNG
>>732
O(n/2)のソート知ってるよ。
0734デフォルトの名無しさんNGNG
presort
0735732NGNG
ぷ。ひっかかったな。qsortより速いじゃなくて早いんだから、qsortより前に開発されたソート手法ならなんでもいいんだよ。ぷぷ・・・
0736デフォルトの名無しさんNGNG
はあ。カロリーメイト食お。
0737デフォルトの名無しさんNGNG
>>735
おまえqsortとクイックソートを混同してないか?
0738デフォルトの名無しさんNGNG
>>714

せんせーできましたあ

#include <stdio.h>

int main(void)
{
int i, j;
int count[256];
char a[] = "~Mg!-pv4lR@}-\\/Xh:r?c<]";
for(i = 0; i < 256; i++) count[i] = 0;
for(i = 0; a[i] != '\0'; i++) ++count[a[i]];
for(i = j = 0; i < 256; i++)
while(count[i]--)
a[j++] = i;
printf("%s\n", a);
return 0;
}
0739デフォルトの名無しさんNGNG
>>737
qsortはクイックソートじゃないのか?
0740デフォルトの名無しさんNGNG
>>739
実はバブルソートでもばれない罠。
0741デフォルトの名無しさんNGNG
>>739
実は、正確にはクイックソートじゃない。
0742デフォルトの名無しさんNGNG
クイックソートじゃない実装の qsort があるという意味?
一般的にっていうこと?
0743デフォルトの名無しさんNGNG
quick sortが最速だった時代はもう終わったのさ。
0744デフォルトの名無しさんNGNG
>>742
区間が短くなったら挿入ソートとか選択ソートに切り替える方式の
多段ソートって事だろ
0745デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int try_sort(unsigned int challange, char* array, size_t size)
{
 int i;
 srand(time(0));
 for (i = 0; i < challange; i++) {
  int a1 = rand() % size, a2 = rand() % size;
  if (a1 > a2) {
   int tmp = a2;
   a2 = a1;
   a1 = tmp;
  }
  if (array[a1] > array[a2]) {
   char tmp = array[a2];
   array[a2] = array[a1];
   array[a1] = tmp;
  }
 }
 for (i = 0; i < size - 1; i++) {
  if (array[i] > array[i + 1])
   return -1;
 }
 return 0;
}

int main()
{
 char a[23];
 a[0]='~'; a[1]='M'; a[2]='g'; a[3]='!'; a[4]='-'; a[5]='p'; a[6]='v'; a[7]='4'; a[8]='l';
 a[9]='R'; a[10]='@'; a[11]='}'; a[12]='-'; a[13]='\\'; a[14]='/'; a[15]='X'; a[16]='h';
 a[17]=':'; a[18]='r'; a[19]='?'; a[20]='c'; a[21]='<'; a[22]=']';
 
 if (try_sort(1000, a, sizeof(a)) == 0)
  printf("成功しました\n");
 else
  printf("失敗しました\n");
}
0746742NGNG
なるほど、そういうことでしたか。
0747デフォルトの名無しさんNGNG
>>745
ソートーあほですべ。
0748名無しさん@カラアゲうまうまNGNG
つーかqsort()がクイックソートを使うことなんてどこにも規定されてない。
0749名無しさん@カラアゲうまうまNGNG
>>676
xxd -i
0750738NGNG
せっかく書いたのに誰も何もいってくれない。
ここは悪いインターネットですね。
0751デフォルトの名無しさんNGNG
>>748
どこにも ? VC++ とかなら書いてあるぞ。
0752742NGNG
規格で決められてないということじゃない?
実装は実装者依存だったはず。
0753ANSlNGNG
漏れに何か用でも?
0754デフォルトの名無しさんNGNG
>>750
750ゲトオメ。
ここは凄いインターネットですな。
0755デフォルトの名無しさんNGNG
>>753 漏れ漏れ野郎氏ね。
0756デフォルトの名無しさんNGNG
#include <stdio.h>
#include <conio.h>
void main()       

int su1,su2,kekka1;
float kekka2;
char enzansi;

printf("2つの整数と演算子を入力してください\n");
printf("1つ目の値を入力 =");
scanf("%d\n",&su1);
printf("2つ目の値を入力 =");
scanf("%d\n",&su2);
printf("演算子を入力   =");
scanf("%c\n",&enzansi);


if(enzansi == '+'){
kekka1=su1+su2;
printf("%d+%d=%d",su1,su2,kekka1);
}
else if(enzansi == '-'){
kekka1=su1-su2;
printf("%d-%d=%d",su1,su2,kekka1);
}
else if(enzansi == '*'){
kekka1=su1*su2;
printf("%d*%d=%d",su1,su2,kekka1);
}
else if(enzansi == '/'){
if(su2 == 0){
printf("kekka1=0");
}
else{
kekka2=su1/su2;
printf("%d/%d=4.1%f",su1,su2,kekka2);
}
}
else if(enzansi == '%'){
if(su2 == 0){
printf("計算できません");
}
else{
kekka1=su1%su2;
printf("%d%%d=%d",su1,su2,kekka1);

}
}

else{
printf("演算子がおかしいです");

getch();
}
}
0757デフォルトの名無しさんNGNG
>>750
少なくとも、char は unsigned char にしとけ。
後は、悪いけど見る気にもならない。
0758756NGNG
main(){
以外でおかしいところあったら教えてください
0759デフォルトの名無しさんNGNG
#include <stdio.h>
#include <conio.h>
void main()       

int su1,su2,kekka1;
float kekka2;
char enzansi;

printf("2つの整数と演算子を入力してください\n");
printf("1つ目の値を入力 =");
scanf("%d\n",&su1);
printf("2つ目の値を入力 =");
scanf("%d\n",&su2);
printf("演算子を入力   =");
scanf("%c\n",&enzansi);


if(enzansi == '+'){
kekka1=su1+su2;
printf("%d+%d=%d",su1,su2,kekka1);
}
else if(enzansi == '-'){
kekka1=su1-su2;
printf("%d-%d=%d",su1,su2,kekka1);
}
else if(enzansi == '*'){
kekka1=su1*su2;
printf("%d*%d=%d",su1,su2,kekka1);
}
else if(enzansi == '/'){
if(su2 == 0){
printf("kekka1=0");
}
else{
kekka2=su1/su2;
printf("%d/%d=4.1%f",su1,su2,kekka2);
}
}
else if(enzansi == '%'){
if(su2 == 0){
printf("計算できません");
}
else{
kekka1=su1%su2;
printf("%d%%d=%d",su1,su2,kekka1);

}
}

else{
printf("演算子がおかしいです");

getch();
}
}
0760デフォルトの名無しさんNGNG
#include <stdio.h>
#include <conio.h>
void main()       

int su1,su2,kekka1;
float kekka2;
char enzansi;

printf("2つの整数と演算子を入力してください\n");
printf("1つ目の値を入力 =");
scanf("%d\n",&su1);
printf("2つ目の値を入力 =");
scanf("%d\n",&su2);
printf("演算子を入力   =");
scanf("%c\n",&enzansi);


if(enzansi == '+'){
kekka1=su1+su2;
printf("%d+%d=%d",su1,su2,kekka1);
}
else if(enzansi == '-'){
kekka1=su1-su2;
printf("%d-%d=%d",su1,su2,kekka1);
}
else if(enzansi == '*'){
kekka1=su1*su2;
printf("%d*%d=%d",su1,su2,kekka1);
}
else if(enzansi == '/'){
if(su2 == 0){
printf("kekka1=0");
}
else{
kekka2=su1/su2;
printf("%d/%d=4.1%f",su1,su2,kekka2);
}
}
else if(enzansi == '%'){
if(su2 == 0){
printf("計算できません");
}
else{
kekka1=su1%su2;
printf("%d%%d=%d",su1,su2,kekka1);

}
}

else{
printf("演算子がおかしいです");

getch();
}  
}
0761デフォルトの名無しさんNGNG
人間として根っこの部分が決定的に間違ってる。
0762デフォルトの名無しさんNGNG
>>756
何故に 10 % 0 なら "計算できません" と表示するのに 10 / 0 なら
kekka1 = 0 と表示するのか小1時間...

それはさておき、悪いことは言わんから...

1. switch() 文を覚えろ。
2. scanf() は使うな。
0763735NGNG
クイックソートを略せばqsortと言うだろ。
0764デフォルトの名無しさんNGNG
>>763
qualityless sort
0765デフォルトの名無しさんNGNG
宿題みせるバカ学生は、プログラム以前のことを覚えてこいや。
0766デフォルトの名無しさんNGNG
iwanai
0767デフォルトの名無しさんNGNG
C言語って何があれば遊べますか?
0768735NGNG
なんだそりゃあ。詐欺じゃねーか。
0769742NGNG
最初にqsortなんて名付けてしまったのが悪い。
0770756NGNG
>>765
何で宿題ってわかった?来週までに出さないとやばいんです
0771デフォルトの名無しさんNGNG
>>770
あなたにこんなもん作れるわけがない。
0772デフォルトの名無しさんNGNG
>>770
http://pc.2ch.net/test/read.cgi/tech/1024592344/
0773762NGNG
>>770
俺の忠告 (特に 2. の方) がきけねぇやつは、落第でも赤点でも取りやがれ。
0774デフォルトの名無しさんNGNG
int main(){
int a, b, c;
char d;

printf("式 > ");
scanf("%d %c %d", &a, &d, &c);

if((c=='/' || c=='%') && b==0) d=0;

switch(d){
case '+': c=a+b; break;
case '-': c=a-b; break;
case '*': c=a*b; break;
case '/': c=a/b; break;
case '%': c=a%b; break;
default': d=0; break;
}

if(d){
printf("%d %c %d = %d\n", a, d, b, c);
} else {
printf("計算できん\n");
}

return 0;
}
0775デフォルトの名無しさんNGNG
if((c=='/' || c=='%') && b==0) d=0;
↓
if((d=='/' || d=='%') && b==0) d=0;
0776デフォルトの名無しさんNGNG
便乗ですが int が 4バイトの場合でも %d でいいの?
0777デフォルトの名無しさんNGNG
>>776
%ld
0778デフォルトの名無しさんNGNG
776>>777 さんきゅです。
0779デフォルトの名無しさんNGNG
>>776
int なら "%d" でいいよ。たとえそれが long int と同じでも。
0780デフォルトの名無しさんNGNG
>>777
あほ!
0781デフォルトの名無しさんNGNG
bsearchも別にバイナリサーチを使って実装しなくてもいいんだよね。
他の方法を使う奴は馬鹿だと思うけど。
0782デフォルトの名無しさんNGNG
可変長引数の関数の...部分に渡す引数は渡す前に
signed char, short, long, etc. → signed long
unsigned char, short, long, etc. → unsigned long
float → double
に自動的にキャストされる。
これが理由でprintf系はintだろうとcharだろうと%dでOK。
scanf系は%ldとか使い分けなきゃならない。

・・・で、OK?
0783デフォルトの名無しさんNGNG
>>782
intのサイズと%d,%ldの違いに何か関係あるの?
0784デフォルトの名無しさんNGNG
読込むときは格納先の大きさがハキーリしてないといけないから
使い分ける必要があるんだよね。
0785デフォルトの名無しさんNGNG
>>783
だって4バイトの変数を2バイトしか読まず評価したらだめっしょ。
0786デフォルトの名無しさんNGNG
intは%d,longは%ld
これはいいんだが、size_tのようにどんな型にtypedefされているのか分からない型はどうすればいいんだろ・・
0787デフォルトの名無しさんNGNG
>>785
intが4バイトの環境なら%dも4バイト読みそうなもんだけど、違うの?
0788デフォルトの名無しさんNGNG
>>785
評価先でもintの大きさは同じだぞ(笑)
0789デフォルトの名無しさんNGNG
>>786
longで読んどいて後で代入・・・とかになるかな?
0790デフォルトの名無しさんNGNG
>>786
何にtypedefされてるか調べれ。

char型に%dで読み込んだらその変数以下が壊れたことはあった。
0791デフォルトの名無しさんNGNG
>>790
ヘッダーファイルを見るというのはあまりよくないような・・・
sizeofで調べるだけでは符号ありか符号なしか分からないし・・・
0792デフォルトの名無しさんNGNG
>>790
昔それやって帰り先のアドレス壊して、
関数の最後にfprintf突っ込んでも
呼出元で関数の次にfprintf突っ込んでも
何も表示されなくて悶絶したことがある(藁)
0793デフォルトの名無しさんNGNG
型もわからん変数使うなってこと。
0794デフォルトの名無しさんNGNG
>>793
ハァ?
0795デフォルトの名無しさんNGNG
793 → >>791
0796デフォルトの名無しさんNGNG
32bit版のランタイムってどうなんだろう。たとえばscanfが%dを
4バイト入力とは解釈しないのかな。
0797デフォルトの名無しさんNGNG
>>791
size_tは符号無しと決まってると思う。
intかlongかはき待ってなかったと思う。
0798デフォルトの名無しさんNGNG
int a に対し、
  a = (条件式)?(-30):(30) +5;
とやると、条件式がfalse のときは a=35 になるんですが、trueのときは a=-30 になってしまいます。
VCでしか試していませんが、条件演算子(?:)のこういう使い方って NGなんでしょうか?
0799デフォルトの名無しさんNGNG
>>793
標準関数が戻り値に使っちゃっていたりするし。strlenとか。
まあscanf系で使うことはないから問題ないけど。
0800デフォルトの名無しさんNGNG
>>796
sizeof(long) == sizeof(int) ならそうなる「可能性はある」。
でも保証されていない。
0801デフォルトの名無しさんNGNG
>>798
なんで?(笑)
0802デフォルトの名無しさんNGNG
やっぱりわからない
rule(int l,int r,int h){      rule(0,8,3)から初めて 
int m=(l+r)/2;           rule(0,4,2) 
if(h>0){ rule(0,2,1)
rule(l,m,h-1); rule(0,1,0)
mark(m,h); mark(1,1)
rule(m,r,h=1);} rule(1,2,0)
}という定規の目盛をつける問題なのですが・・mark(2,2)
rule(2,4,1)
というような感じで動くんですが、mark(2,2)のあたりから分かり
  ません。   お・た・す・け〜〜〜
0803デフォルトの名無しさんNGNG
>>798
優先順位の問題なんじゃねーの?
0804デフォルトの名無しさんNGNG
>>798
優先順位覚えれ。
0805デフォルトの名無しさんNGNG
>>798
?:演算子は+演算子よりも優先順位が低いから、

 a = ((条件式)?-30:30) + 5;

とやりなせえ。
0806デフォルトの名無しさんNGNG
>>798
a=-30になってしまいますって、当たり前だと思うけど。
0807デフォルトの名無しさんNGNG
>>803-805
ケコーンしようよ
0808806NGNG
>>805
そういうことしたかったのか
0809デフォルトの名無しさんNGNG
FAQぽ
0810798NGNG
勉強になりますた。
0811デフォルトの名無しさんNGNG
scanf系で%dが確実に読み込めるサイズは2バイトまでということなのか。
それ以上は処理系依存ということなのかな。
0812デフォルトの名無しさんNGNG
>>802は
どこがコードでどこがコメントで何をする関数で何がおかしいのかわからないので
誰もわからないと思われ。
0813デフォルトの名無しさんNGNG
>>811
intのサイズが処理系依存なだけで、sizeof(int)バイト分まで確実に読み込める。
0814デフォルトの名無しさんNGNG
>>811
%dはintを読み込む。
0815デフォルトの名無しさんNGNG
>>802
まず少なくとも;がないからエラーになるな。
0816デフォルトの名無しさんNGNG
ああそっか。
ということは sizeof(int) == 4 でも、%d で OKということか。
0817デフォルトの名無しさんNGNG
ハァァ?
0818デフォルトの名無しさんNGNG
>>816
sizeof(int)==256でもな。
0819デフォルトの名無しさんNGNG
了解>>818
0820デフォルトの名無しさんNGNG
intで機種依存してどーする(藁
0821デフォルトの名無しさんNGNG
C言語ってsex言語という意味ですか?
0822デフォルトの名無しさんNGNG
は
0823デフォルトの名無しさんNGNG
ゲラゲラ
0824デフォルトの名無しさんNGNG
そう言えば、「はじめてのC」という本があったな(藁
0825デフォルトの名無しさんNGNG
じゃぁCマガはセックスマガジンだ(鬱
0826デフォルトの名無しさんNGNG
6809といういにしえのCPUにはSEX命令というのがあった。
(だから何だよ)
0827デフォルトの名無しさんNGNG
いかにSEXを織り込むかを考える、と。
0828デフォルトの名無しさんNGNG
変数の前には絶対sex、関数にはfuckをつけるってのはどうか?
0829デフォルトの名無しさんNGNG
関数 kiss_my_ass_hole(female_ejaculation *fe)

実行すると大変なことに(((( ;゚Д゚))))ガクガクブルブル
0830デフォルトの名無しさんNGNG
void kiss_my_ass_hole(female_ejaculation *fe)
{
printf("hello world.\n");
}

実行すると大変なことに(((( ;゚Д゚))))ガクガクブルブル

0831デフォルトの名無しさんNGNG
>>820
だいじょぶ? 熱あるみたいだし、今日はもう寝なさい。
0832デフォルトの名無しさんNGNG
>>830
warning: unused parameter `fe'
英語よくわからんけど警告してくれますた。
0833デフォルトの名無しさんNGNG
これはass holeからhelloってことなのかな。
違うかもしれないけど。
0834デフォルトの名無しさんNGNG
>>832
日本語に訳すと、「潮吹くほどケツ穴は使い込まれてません」てこと。
0835デフォルトの名無しさんNGNG
使い込むと潮吹きますか…
うちはまだまだです。
0836デフォルトの名無しさんNGNG
C言語で音のファイル(waveとか)を扱うことって出来ますか?
0837Cは無敵です。NGNG
>>836
どう扱うんだ?
多分出来ると思うけど。
0838デフォルトの名無しさんNGNG
>>836
unlink("hoge.wav");
とか。
0839デフォルトの名無しさんNGNG
>>837
日本語の「あ」「い」「う」「え」「お」「か」・・・と一つずつ
音の入ったファイルがあって、打った文字の音が出るようにしたいんですけど・・・。

たとえば、キーボードから「いってよし」と打ったら
その文字に合う音のファイルを探して、つないで出力するっていう感じです。
音のファイル扱えるならできますよね?
0840デフォルトの名無しさんNGNG
>>838
remove()にしろよ。
0841デフォルトの名無しさんNGNG
>>839
できる。
0842デフォルトの名無しさんNGNG
>>841
できるのですね。
ありがとうございます。
0843デフォルトの名無しさんNGNG
>>842
できることだけ知ってどうするのだろう...。誰も「お前には」と言って
ないんだけど...。
0844デフォルトの名無しさんNGNG
>>843
音に関するC言語のプログラムってやったことなかったんで、
出来るかどうか知りたかっただけです。
私が出来るのかっていうことを聞きたかったわけではないです。
0845デフォルトの名無しさんNGNG
>>844
これができるかどうかも自分で調べられないようなやつにはできない。
0846デフォルトの名無しさんNGNG
int DisplayMenu(void){
int choice;
char *select;
select = (char *)malloc(10);

printf("1.氏名と電話番号と住所の入力\n");
printf("2.電話番号から検索\n");
printf("3.氏名から検索\n");
printf("4.電話帳をディスクに保存する\n");
printf("5.ディスクから電話帳を読み込む\n");
printf("6.終了\n");
while( choice < 1 || choice > 6){
printf("選択してください: ");
fgets( select, 1, stdin);/*ここのfgetsが効かない。
choice = atoi(select);
printf("\n");
}
free(select);
return choice;
}

電話帳のプログラムくんでたんですが、実行してみると選択してくださいの無限ループになってしまい、DEBUGしたらfgetsが実行されていないんです。そこをgetsにするとできるんですが。。
なんでだめなのか教えてください
0847デフォルトの名無しさんNGNG
>>846
char *fgets( char *string, int n, FILE *stream );
...
あるいは読み込んだ文字数が n - 1 になるかのいずれかに最初に遭遇する
まで続きます。

これでわからなきゃ、あきらめろ。

あと、while() で参照する前に choice を初期化しとかないとそのうち
はまるぞ。あと、malloc() なんてなんで使う ? 普通の配列で良いと思
うが。
0848デフォルトの名無しさんNGNG
下ののような
引数と返り値の型だけが違って、中で行う数値計算は同じ関数
を、ひとつにまとめることはできるのでしょうか?

double kakezan1(double a, double b)
{
  return a*b;
}

int kakezan2(int a, int b)
{
  return a*b;
}
0849デフォルトの名無しさんNGNG
>>846
リファレンスマニュアル読めよ。
数字読み込むだけなら、
scanf("%d", &choice);
とかのほうが素直と思われ。
0850デフォルトの名無しさんNGNG
>>848
マクロにするとかはだめ?
#define kakezan(a, b) (a * b)
0851デフォルトの名無しさんNGNG
>>848
template
0852デフォルトの名無しさんNGNG
>>849
scanf() は止めた方が良いと思う。
0853デフォルトの名無しさんNGNG
>>852
なんで?遅いから?メモリ食うから?
0854デフォルトの名無しさんNGNG
>>853
挙動が理解しにくいから。
>>864 の fgets() + atoi() を >>849 のように scanf() に変えてから
プログラム実行して、入力に "A" + 改行 を入力したら、無限ループに
なるよ。
最低 fgets() + sscanf() にしとくべき。
0855デフォルトの名無しさんNGNG
>>853
FAQ読めや
0856デフォルトの名無しさん NGNG
クラスの定義の仕方って下のようでいいんでしょうか?
コンパイルできないんですけど・・・

class Customer{
int id;
char name[20];
};

0857デフォルトの名無しさんNGNG
>>856
頼むから、「コンパイルできないんですけど・・・」じゃなくて、
エラーメッセージとか書いてくれ。
0858デフォルトの名無しさんNGNG
>>856
クラス使いたいならCじゃなくてC++でしょ。
0859デフォルトの名無しさんNGNG
>>854
なる殻。そいや最近fscanfしかつこてなかったからscanfの動き忘れとった。
余談だけどprintfとかscanfとかって内部でヒープからメモリ確保しよるよな?
前これしらんくてエライ目にあった。

>>855
よんどくよ。
0860デフォルトの名無しさんNGNG
定義(というか宣言)は間違ってない。>>856
0861デフォルトの名無しさんNGNG
>>856
外部からクラスメンバにアクセスするときはpublicメンバにしないとだめ。
0862デフォルトの名無しさんNGNG
>>859
> 前これしらんくてエライ目にあった。
具体的には ?
0863デフォルトの名無しさんNGNG
>>862
とあるマシンで自作のメモリマネージャ動かす為に、
プログラム起動直後にめいっぱいのメモリをmallocしたら、
意味不明のハングが起き始めた。
結局printfがヒープからの確保ヘコッてたみたい。
0864デフォルトの名無しさんNGNG
>>863
なるほど、そう言うこともあるんだね。了解。
0865デフォルトの名無しさんNGNG
おまえらいい加減にscanf系の仕様を理解しろゴルァ
0866デフォルトの名無しさんNGNG
数とかを入力させるときにscanf使う方がいいですか、それともgetsとatoi使う方がいいですか。
0867デフォルトの名無しさんNGNG
>>866
fgets+strtol
0868デフォルトの名無しさんNGNG
cinがいいと思います。
0869デフォルトの名無しさんNGNG
>>866
時と場合による。
0870デフォルトの名無しさんNGNG
>>866
gets() は論外として、エラー処理をマジメにやるなら入力と解析は別にするのが
無難。

>>869
そうだね。場合によっては lex + atoi とか言い出すかもしれん。
0871デフォルトの名無しさんNGNG
>>865
scanf() 系なんていらねーよ。どうせ使いもんにならないし。
0872デフォルトの名無しさんNGNG
>>871
使い方による。
いらねーなら使わなければよい。
0873デフォルトの名無しさんNGNG
scanfを使うのが最適な場合ってどんなときですか?
0874デフォルトの名無しさんNGNG
>>873
決まった書式のデータファイルとかを読み込むときで、
読み込みルーチン作るのが面倒なとき?
0875デフォルトの名無しさんNGNG
>>873
バッファオーバーフローが絶対におきないとき。
0876デフォルトの名無しさんNGNG
>>873
ロボットがキーボードを叩く時。
0877デフォルトの名無しさんNGNG
>>846

パッと見ただけだけど。

誤 char *select;
正 char select[1024];

配列のサイズは適当に変えて。
0878877NGNG
本当にパッと見ただけだった。(鬱
877 はなかったことに。
0879デフォルトの名無しさんNGNG
>>878
かわいそうなくらい痛い
0880877NGNG
だって、その下で malloc 使ってるとは思わなかったんだもん。。。
0881中学生NGNG
彼女とはまだCすんの早いかな〜
Aまでで押さえといた方がいい?
0882デフォルトの名無しさんNGNG
>>880
そゆことじゃなくて、その下のレスたちは見てないのかよ
0883877NGNG
>>846

名誉挽回。

入力文字列を読みこむのに十分な大きさの領域が確保されている場合、
fgets で読みこまれるのは、改行文字まで。その後にヌル文字を付加する。

$ abc[return]

とした場合、用意した領域には

'a', 'b', 'c', '\n', '\0'

と格納される。
の場合だと、

$ 1[return]

とした場合は、

'1', '\n', '\0'

と格納されるはず。

が、 >>846 のコードでは 1 文字分しか取られていない( fgets の第2引数 )。従って、

誤: fgets(select, 1, stdin);
正: fgets(select, 10, stdin);

とすれば良い。

一般的には fgets の第2引数は確保した領域の大きさを使う。

後は >>847 も参考に。
0884manko_chinko ◆c2rpKRNM NGNG
>>881
俺中学生だけどCやってるよ。
AってAPL?それにしても彼女と一緒にやるって事は本気なんだね。
がんばって。
0885デフォルトの名無しさんNGNG
>>884
ALGOLだと思われ。
0886中学生NGNG
>>884
でもDが恐いよ〜
0887デフォルトの名無しさんNGNG
>>886
Delphiなめんな。クソ人間。
0888manko_chinko ◆c2rpKRNM NGNG
>>886
ごめん俺寡聞だからDってのしらない。(言語はAからZまであると誰か言っていた。)
もしかしてDelphiのことかな。Delphiってこわいかな?Vbとかわらんじゃん
0889デフォルトの名無しさんNGNG
>>888
あんなクソ言語と一緒にしないで・・・おねがい。
0890manko_chinko ◆c2rpKRNM NGNG
K&R C ってカーニハンとリッチーのセックス暴露本らしいね。
0891manko_chinko ◆c2rpKRNM NGNG
>>889
RADという点で変わらないと言っただけ
0892デフォルトの名無しさんNGNG
>>891
C#とかもっとましなたとえがあるだろう・・・。
VBが簡単!ってじだいは終わったし。
0893デフォルトの名無しさんNGNG
A B C D E は〜♪ E気持っち
0894fNGNG
精子の運動をプログラミングしたいのですが、どうすればよいのでしょうか。
0895デフォルトの名無しさんNGNG
まずは分析だ。放出して顕微鏡で観察しる。
0896fNGNG
どうせなら3Dで卵子に到達するまでをプログラミングしたいのですが。
卒業研究にしたいぐらいです。
0897デフォルトの名無しさんNGNG
俺の精子は元気ないからだめだ。
やめてくれ
0898デフォルトの名無しさんNGNG
ttp://www.hansen.co.jp/Marchandise/syouhin/Hamilton/hamilton.html

これ買え。
0899デフォルトの名無しさんNGNG
「,」で区切った文字列"100,100,1000,2000,10,10"を順番に
取り出したいんですけど良い方法はありますか?
0900899NGNG
配列なんかに入れれば良いです。
100
100
1000
2000
10
10
の順番に。
0901デフォルトの名無しさんNGNG
>>899
ふつーにループ回して、チェックすれば?
0902名無しさん@カラアゲうまうまNGNG
>>899
strchr()かstrcspn()
0903デフォルトの名無しさんNGNG
最速の素数判定(Nが素数であるか田舎を判定しる)プログラム教えれ
0904デフォルトの名無しさんNGNG
>903
Nの範囲は?
0905デフォルトの名無しさんNGNG
http://www5d.biglobe.ne.jp/~yakamome/formation/formation_giko.html
やっぱこれが一番良かった。
0906fNGNG
>905
すれ違いだけどワラタ
俺持ってるよフォーメーションゼット。
0907846NGNG
>>847
fgetsの仕様みたら理解した。
n-1をnだと勘違いしてました。逝ってきます
アドバイスthxです。
0908847NGNG
>>907
つーか、一文字だけ入力したいからと言って fgets(..., 2, ...) なんて普通
書かないぞ。改行コードが入力バッファに残ってしまうからな。
>>883 も書いてるけど、入力バッファーを越えないための制限値と思うべきだよ。
0909デフォルトの名無しさんNGNG
100*100=1KBの配列をグローバルでひとつ
400*400=16KBの配列をグローバルでひとつ
確保していますが,まだまだ大丈夫でしょうか?
業務用アプリとかプロのゲームとかでは,こんなの序の口でもっと確保してるよゴラァって感じなんでしょうか?
0910デフォルトの名無しさんNGNG
17K程度で心配になるって、どんな環境だろう…
組み込みかな?
にしても、業務用とかプロのゲームだとなんで(略
あと、100*100は1Kじゃねーぞ。
0911ミスったNGNG
100*100=10KBの配列をグローバルでひとつ
400*400=160KBの配列をグローバルでひとつ
確保していますが,まだまだ大丈夫でしょうか?
業務用アプリとかプロのゲームとかでは,こんなの序の口でもっと確保してるよゴラァって感じなんでしょうか?
0912デフォルトの名無しさんNGNG
>>910
組込みやってる奴ならこんなバカな質問しないだろう。

>>909
そのマシンにメモリーはいくつ積んでんだよ。
0913デフォルトの名無しさんNGNG
8bitパソコンでプログラム組んでるのかい?兄さん。
今のWindowsだったら1MBや10MBくらいまで確保しても別にOKだ。

さらにいうなら確保しても使わなければOSが無視してくれる。
0914デフォルトの名無しさんNGNG
>911
夕飯はまだ早すぎじゃないか?
0915デフォルトの名無しさんNGNG
そろそろいいんじゃないか
0916デフォルトの名無しさんNGNG
>>899
strtok()とかでいいんじゃない?
0917初C者NGNG
#include <stdio.h>
#include <conio.h>
void main(){
int b,c,d;
char a;


printf("機種名を入力してね\n");
scanf("%s",&a);
printf("支出を入力しろや\n");
scanf("%d",&b);
printf("収入は?\n");
scanf("%d",&c);
d=c-b;
printf("収支は%d円だよ!",d);

if (d > b) {
printf("今日は勝ちですね。良かった良かった\n");
}
else if(d == b){
printf("トントンだね。負けよりはマシだな。\n");
}
else{
printf("負けちゃったね。%sなんかやるから・・・\n",a);
}
getch();
}











実行すると、if文実行する手前で、強制終了されます。
なんでですか?
0918デフォルトの名無しさんNGNG
>917
aに機種名は入れられん
0919初C者NGNG
>>918
半角英数字でも?
0920デフォルトの名無しさんNGNG
>917
ためしにchar a[80]にしてみなされ
0921920NGNG
あ、char a[80];にしたら、scanf("%s",a);ね。
0922デフォルトの名無しさんNGNG
すんません、VCつかってるんですが、基本っぽいもんはおぼえたんですが、MFCをつかわないで、Cのウィンドウズプログラムや、ゲーム作成、できればDXを超初心者からわかりやすく解説されてあるサイトはないでしょうか?お願いします。
0923デフォルトの名無しさんNGNG
>>917
いいかげん、scanf() 使うのヤメレ。
0924デフォルトの名無しさんNGNG
>>922
ウィンドウズなプログラムは猫でもとかは?
(http://www.kumei.ne.jp/c_lang/)
DirectXはSDKのサンプルを見たらどうでしょう?
0925デフォルトの名無しさんNGNG
924>>どうもありがとうございます。しかし、猫のところはVCのVERが古いみたいで、こちらは6.0をつかっていまして、
かいてあるとおりにやっても動作しないのです。微妙になにかがちがうんでしょうけど。
SDKってのはMSにおかれてるんでしょうか?
0926デフォルトの名無しさんNGNG
>>923
scanfを馬鹿にするな

Scanf擁護委員会一同より。
0927初C者NGNG
>>920
できました!ありがとうございます。
[80]って、80文字入れれるって事ですか?
0928デフォルトの名無しさんNGNG
最後の要素には'\0'が入るから79文字入る。
0929初C者NGNG
>>928
なぜ、 char a; ではだめなんでしょうか?
文字列の場合は [ ]を使って文字数を指定しないとだめなんですか?
0930デフォルトの名無しさんNGNG
Cでは文字列を文字の配列として表現するためです
0931manko_chinko ◆c2rpKRNM NGNG
>>929
あなたBASICやってたでしょ?
0932初C者NGNG
>>931
すごいコテハンすね。
BASICやってないですよ。プログラム言語はCが初めてです。
もうそろそろ学校でVB習うと思いますが。
なんでそう思われました?
0933manko_chinko ◆c2rpKRNM NGNG
>>932
べつに。俺もBASICやってて、C始めたとき最初文字列配列のところで??だったから
0934デフォルトの名無しさんNGNG
>>932
文字は数値を読み替えてるだけだってことをきちんと理解しろよ
0935デフォルトの名無しさんNGNG
char text[256];
fprintf(fp,text);
でEUCが混じった文字列を書き込もうとすると落ちるのですが
どうすればいいのでしょうか?
0936デフォルトの名無しさんNGNG
せめてfprintf(fp, "%s", text);
0937935NGNG
>>936
ありがとうございます。一発で動きました。
しかし、printf()系の関数で、別に表示したい変数が存在しない場合
fprintf(str);と書くのは文法違反なのですか?
今までのコードにたくさん存在するのですが・・・。
0938デフォルトの名無しさんNGNG
>935
表示する文字列に%とかが入っていると死ぬ
0939デフォルトの名無しさんNGNG
>>937
stdio.hを(以下略
0940935NGNG
>>938
なるほろ・・・。
それで引数を探しに行って死んでたわけですね。
htmlを適当に読んで吐き出す仕様なのでそういう文字列が入ると
やばいのですね。
今からやばいところ書き直します・・・。
0941名無しさん@カラアゲうまうまNGNG
"%s"で出すなら素直にfputs()使えよ。
0942デフォルトの名無しさんNGNG
人のソースを参考にしながらプログラムの勉強をしているのですが,その中でπの値を
「tan2(1,1)*4」で書いてあるのがありました(というか,「atan2(1,1)*4*2」というのがあって
最初なにをやっているか分からなかった).
これっってマクロのM_PIを使わないで,「tan2(1,1)*4」でπの値を求めるのは,なんか
メリットってあるのでしょうか?
googleで"tan2(1,1)*4"で検索したら約177件もひっかかったことから,なんか意味が
あるような気がするのですが,なんでしょう?
0943デフォルトの名無しさんNGNG
>942
俺は数学を知ってるぞ、と見せ付けることが出来ます。
0944デフォルトの名無しさんNGNG
>>942
tan2→atan2
遅いだけ。しかし標準ではPIの値はdefineされてないから便利な
こともある。
0945デフォルトの名無しさんNGNG
「 tan (π/4) = 1 」 高校数学の教科書を読もう。

ところで、tan2( ) とか atan2( ) って初めて見るんだけど
これって標準ライブラリに入ってるの?
0946942NGNG
>>942 の「tan2(1,1)*4」は「atan2(1,1)*4」の間違いです.すまむ.
>>944
M_PIのマクロって標準じゃなかったのですね.
たしかにdefineされてなかったら,atan2(1,1)*4でπの値を出すという
のは便利ですね.
>>945
tan2()はtypoです.atan2()はmath.hに入ってますよ.
0947デフォルトの名無しさんNGNG
#ifndef M_PI
#define M_PI (atan2(1,1)*4)
#endif
とやろうと思ったが、M_PIってmath.hにあるし。
0948名無しさん@カラアゲうまうまNGNG
M_PIはANSI Cなら持ってるはず。
古い処理系でもコンパイルできるようにするためだろう。
0949945NGNG
>>946
あ、ほんとだ atan2( ) あるね
/* 負け惜しみ : それなら atan(1)*4 の方がいいと思うが */

ひとつ賢くなりやした。さんくす
0950デフォルトの名無しさんNGNG
defineよりconst double M_PI = atan2(1,1)*4;のほうが
速くならないですか?
0951デフォルトの名無しさんNGNG
次スレ〜
0952デフォルトの名無しさんNGNG
>>903
Nの平方根以下の素数で割り切れなければNは素数
多分これが一番計算少ない
0953デフォルトの名無しさんNGNG
>>948
それなら
#include <math.h>
#ifndef M_PI
#define M_PI 3.14〜
#endif
とすればいいだけなので、単にM_PIを知らなかっただけではないかと
0954846NGNG
>>883
すみません、見逃してました(;´Д`)
第2引数を10にするのは、\nと\0を入れるためと解釈していいですか?
>>908
入力バッファに残ると後のfgetsとかscanfとかに影響してしまうためですか?
0955デフォルトの名無しさんNGNG
新スレ、立てました

C言語なら、俺に聞け! <25>
http://pc.2ch.net/test/read.cgi/tech/1024918442/
0956883NGNG

>>954

http://pc.2ch.net/test/read.cgi/tech/1024918442/13
0957デフォルトの名無しさんNGNG
う
0958デフォルトの名無しさんNGNG
え
0959デフォルトの名無しさんNGNG
の
0960デフォルトの名無しさんNGNG
ど
0961デフォルトの名無しさんNGNG
ら
0962デフォルトの名無しさんNGNG
く
0963デフォルトの名無しさんNGNG
を
0964デフォルトの名無しさんNGNG
き
0965デフォルトの名無しさんNGNG
ち
0966デフォルトの名無しさんNGNG
さ
0967デフォルトの名無しさんNGNG
み
0968デフォルトの名無しさんNGNG
ろ
0969デフォルトの名無しさんNGNG
む
0970デフォルトの名無しさんNGNG
く
0971デフォルトの名無しさんNGNG
し
0972デフォルトの名無しさんNGNG
っ
0973デフォルトの名無しさんNGNG
きゅ
0974デフォルトの名無しさんNGNG
す
0975デフォルトの名無しさんNGNG
ひ
0976デフォルトの名無しさんNGNG
ま゛
0977デフォルトの名無しさんNGNG
と
0978デフォルトの名無しさんNGNG
わ゜
0979デフォルトの名無しさんNGNG
い
0980デフォルトの名無しさんNGNG
げ
0981デフォルトの名無しさんNGNG
く
0982デフォルトの名無しさんNGNG
う
0983デフォルトの名無しさんNGNG
っ
0984デフォルトの名無しさんNGNG
ふ
0985デフォルトの名無しさんNGNG
ん
0986デフォルトの名無しさんNGNG
だ
0987デフォルトの名無しさんNGNG
ご
0988デフォルトの名無しさんNGNG
い
0989デフォルトの名無しさんNGNG
う゛
0990デフォルトの名無しさんNGNG
っ
0991デフォルトの名無しさんNGNG
ゎ
0992デフォルトの名無しさんNGNG
ぇ
0993デフォルトの名無しさんNGNG
ぁ
0994デフォルトの名無しさんNGNG
ち
0995デフォルトの名無しさんNGNG
ん
0996デフォルトの名無しさんNGNG
こ
0997デフォルトの名無しさんNGNG
ま
0998デフォルトの名無しさんNGNG
さ
0999デフォルトの名無しさんNGNG
に
1000デフォルトの名無しさんNGNG
□□□■■■■■□■□□□■□■■■■□□■■■■□■□□□■□■■■■□□□□
□□□□□■□□□■□□□■□■□□□□□■□□□□■■□□■□■□□□■□□□
□□□□□■□□□■■■■■□■■■■□□■■■■□■□■□■□■□□□■□□□
□□□□□■□□□■□□□■□■□□□□□■□□□□■□□■■□■□□□■□□□
□□□□□■□□□■□□□■□■■■■□□■■■■□■□□□■□■■■■□□□□
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。