FTP、CGI、SSI、telnetが自由に使える超高速レンタルサーバ。
工夫しだいで、楽しさ100倍。 www.binboserver.com
月額千円サーバ | サブドメインコース | BIGなサーバ

サブドメインコース:CGIやFTPが使いたい・お金を掛けたくない人のために。
 *****.syo-ten.com *****.gasuki.com *****.zansu.com
 お好きな名前を無料で使えます。早い者勝ち。

人気サイト 月額千円サーバ:.com .net .org で取得できます。.JPドメイン大歓迎!
 超高速・高機買Tーバを1000円で!使ってみれば、分かります。

BIGなサーバ:Big なBig なサーバー。充実したサポートをお求めの方へ。
 インターネットでご活躍の皆様へ、そしてご活躍予定の皆様へ。
2ちゃんねるは、このサーバを使っているです。

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■

C言語なら、俺に聞け! <24>
1 名前: デフォルトの名無しさん 投稿日: 02/06/14 14:43
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


2 名前: デフォルトの名無しさん 投稿日: 02/06/14 14:43
【コンパイラ】
gcc
http://gcc.gnu.org/
タダで使えるBorland C++!
http://pc.2ch.net/test/read.cgi/tech/1002377328/l50

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

【製品版。有料】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html

【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html


3 名前: デフォルトの名無しさん 投稿日: 02/06/14 14:43
(・∀・)オツカレー


4 名前: デフォルトの名無しさん 投稿日: 02/06/14 14:45
:::::::::::::::::::/ ,r:::::::::::.:::::::::.:: :
:::::::::::::::/ /::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
:::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
:::::/ /::::::::::::::`(::::::: ,ヘ:::::::::::::::::::::: ヽ
::::::し ::::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
:::::::::::::::::::::::::::::::::::::: `' ::::::::::::-‐ ´
      ハァ…ハァ…


5 名前: デフォルトの名無しさん 投稿日: 02/06/14 15:26
クックック


6 名前:   投稿日: 02/06/14 21:51
a[Cnt++]=1;
短いコード書きたい時に,上のようにして使いますか?
a[Cnt]=1;
Cnt++;
を略したい時とかに


7 名前: デフォルトの名無しさん 投稿日: 02/06/14 21:56
またポケコンスレかよ


8 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:04
>>6
そんな書き方はせんでよろしい。


9 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:05
今回の 1 は誰ですか?
カーニハンかな?


10 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:26
ていうか++とか+=とかいらないと思うの俺だけ?


11 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:29
>>10
地獄の苦しみ。
そんなあなたはVBとかObjectPascalとかを使って悔い改めて下さい。


12 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:32
普通人間は「Aに1を加える」と考え、
「Aの値に1を加えたものをAに代入する」とは考えない。
++や+=は、人間の思考に沿った良い記述方法なのだ。


13 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:35
一部のプロセッサに沿った記述法だろ


14 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:35
>>12
純粋にタイプ量が増えるというのも上げてみたい。


15 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:39
>>12
自分は数学系の人間だけど、=とか配列の使い方とか、最初はかなり戸惑った。
コンパイルのたびに何度もエラーメッセージを出して、繰り返すうちに慣れた。


16 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:40
誰もINCにコンパイルされるとは書かんのか。


17 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:41
凄い初心者な質問で恥ずかしいのですが、

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);
}

以上、よろしくおねがいします。



18 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:43
void test_strdup(char *string)




19 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:48
test_strdup(char** string) か char* test_strdup(void) にしれ。
つか、test_ って…


20 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:50
>>19
呼び出し元にfreeを強要するのってあり?


21 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:52
>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);
}


22 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:53
#define 日下部陽一死ね void


23 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:54
しまったぁ↓
fprintf(stderr, "%s\n", string);

適当に直しといて>17


24 名前: デフォルトの名無しさん 投稿日: 02/06/14 22:57
>>20
strdupが呼び出し元にfreeを要求してますが、なにか?


25 名前: デフォルトの名無しさん 投稿日: 02/06/14 23:02
>>17
上の方もできてないという罠。
mainの中の1行目の宣言は char *string[1]; の間違いか?

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

test_strdupの中の string[0] を *string に直すとなおよろし。


26 名前: 17 投稿日: 02/06/14 23:21
>>21さん
>>25さん

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

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

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

こういうのって、どこで学んだらいいんでしょう?



27 名前: デフォルトの名無しさん 投稿日: 02/06/14 23:31



28 名前: 17 投稿日: 02/06/14 23:37
>>27
そうですね。とりあえず学校に行くわけじゃないから本読みます。
どんな本がいいですか?



29 名前: デフォルトの名無しさん 投稿日: 02/06/14 23:41
>>28
K&R以外ならどれでも


30 名前: 名無し募集中。。。 投稿日: 02/06/15 00:00
>>29
K&Rで独学してちゃ駄目ですか?


31 名前: デフォルトの名無しさん 投稿日: 02/06/15 00:11
>>30
最終的に理解できてプログラムが書ければ良し。。


32 名前: デフォルトの名無しさん 投稿日: 02/06/15 00:11
>>30
できるんならいいよ


33 名前: 30 投稿日: 02/06/15 00:27
>>31-32 レスどうも。
一通り読んで、演習問題やったりしているんだが
このスレのかき込みもあんまり理解できていない


34 名前: デフォルトの名無しさん 投稿日: 02/06/15 00:29
>>33
実戦から学べば良し。
オリジナルで数本何か書いてみればいい。


35 名前: デフォルトの名無しさん 投稿日: 02/06/15 10:51
cでDllつかうのってどうすればいいんですか?
解凍ソフト作りたいんですが・・・


36 名前: デフォルトの名無しさん 投稿日: 02/06/15 12:05
>>35
LoadLibrary
GetProcAddress


37 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:02
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のないようまで変更してしまうので。


38 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:16
*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のおすぎ


39 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:19
*p=(char *)calloc(2,sizeof(char));
*temp=(char *)calloc(10,sizeof(char));
 ↓
p=(char *)calloc(2,sizeof(char));
temp=(char *)calloc(10,sizeof(char));


40 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:19
>>37
3行目と4行目で警告。char型にchar *型を入れるな。


41 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:20
























ともっち!大好き!


42 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:22
関数に型を送りたいのですが,可能ですか?
それをもとに,配列を確保したいのですが


43 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:33
>>42
void (void *a)
{

}


44 名前: デフォルトの名無しさん 投稿日: 02/06/15 13:35
>>42
そろそろC++の初めどきです。


45 名前: 42 投稿日: 02/06/15 13:37
できないのですか?


46 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:05
>>45
> 関数に型を送りたいのですが,可能ですか?
そもそも、この「関数に型を送る」の意味が分からんよ。やりたいことを明記せい。


47 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:12
十分分かるぞ。

>>42
自分で型を(名前などで)管理すれば可能だが
面倒だね。C言語自体にその機能は無い


48 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:13
template <typename T> T* makeArray( size_t count )
{
 return new T[count];
}


49 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:15
>>45 だからC++をやれというとるでしょうが
template<typename Type, int n>void f(){Type ta[n];} //当然動的確保じゃなくてもOK
f<int, 256>(); //int型256個の配列ができた


50 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:18
>>47
どう理解したの?

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

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

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

単にメモリブロックを確保したいだけなら、それこそ malloc() に sizeof(配列要素) *
要素数で終わりだしねぇ。


51 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:19
>>49
C++ 的には配列捨て捨てで vector<T> で良いかと。


52 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:20
>>50
だよねぇ
型を渡してってのが意味不明、
Cじゃメモリ確保に型なんか必要ないし


53 名前: デフォルトの名無しさん 投稿日: 02/06/15 14:56
ポインタについて教えてください


54 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:04
本買え。


55 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:05
俺の体の中ほどにあるとんがってピクピク動いている硬い竿がポインタ(指し示す者)で
ついでにこの亀のような形のものがセグメントアドレスです


56 名前: 53 投稿日: 02/06/15 15:06
>>54
持ってるけど分からない・・・


57 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:08
C99に対応したコンパイラって出回ってますか?


58 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:11
分かるまで買い続けろ。
まさかたかだか1〜2冊というわけではあるまいな。


59 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:44
そこまで市内とポインタが分からんのか?
歳はいくつぐらい?


60 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:46
>>59
わからん人にはわからんみたい。
って言うか実戦で使ってみないことには完全には理解できないでしょ。
メリットとかそもそもの使い方とか。

本だけ読んで自己満足してその知識だけでここでなれ合っているというなら問題だけどな。


61 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:48
>>55
じゃあ、ミルクみたいな奴はなんというのでしょうか?


62 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:48
教訓
 習うより慣れろ


63 名前: デフォルトの名無しさん 投稿日: 02/06/15 15:51
>>62
故Dr.パソコンに合掌


64 名前: 42 投稿日: 02/06/15 16:08
わかりずらくてすみません。
callocを使って関数で任意の型を作りたいのですが,
(char *)の部分は,型を送らないと任意の型を作れないので,型を送りたいんです。


65 名前: デフォルトの名無しさん 投稿日: 02/06/15 16:09
>>64
まださっぱりわからん
型を作るって何?
型を送れないと・・・って何?


66 名前: デフォルトの名無しさん 投稿日: 02/06/15 16:12
>>64
typedefと構造体か素直にC++か。


67 名前: デフォルトの名無しさん 投稿日: 02/06/15 16:16
>>64
演算をしないならCのキャストは無敵だから何の心配もいらない。
サイズだけ分かればよい。でもやっぱり多態とRTTIが最強


68 名前: 日本語を勉強したいです。 投稿日: 02/06/15 16:22
>>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);
}
とか。


69 名前: デフォルトの名無しさん 投稿日: 02/06/15 16:47
やっぱり無理なんですかね?
void ( void * a,size_t count,size_t size,?? kata )
{
 a=(kata *)malloc(count * size);
}

のようにしたいのですが,kataの部分がどうやって送っていいのかわかりません。
void *ではないですしね。


70 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/15 16:51
>>64
> わかりずらくてすみません。
すげーわかりずらい。

#define allocate(n, type) (type *)calloc((n), sizeof(type))



71 名前: デフォルトの名無しさん 投稿日: 02/06/15 16:52
>>69
その微塵も意味のない
(kata *)へのキャストはなんですか?
何か根本的に間違ってませんか?


72 名前: デフォルトの名無しさん 投稿日: 02/06/15 16:58
>>70

ありがとうございます
それをつかえば,できますね。
defineがあったのか。


73 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:10
char *moji="aあaあ";

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

全角文字も半角文字も一つの配列に入るのですか?


74 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:13
>>73
SJISと仮定して全角文字は2Byteです。
プログラムも良いけどコンピュータアーキテクチャとかも学ぶと吉。



75 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:20
comってなんですか?


76 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:21
>>75
俺が知ってる限りで3個以上意味がある。


77 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:21
どのcomよ?


78 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:21
>>75
むむむ・・・。


79 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:23
computer-output microfilm


80 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:35
>>75
奇怪語ONLYの最大64KBの実行可能ファイルよ


81 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:35
漏れは関東出身なんだが、最近からあげは塩コショーで食うのがいいと思うようになってきたage


82 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:35
どうでもいいが>>69はメモリリークする。


83 名前: デフォルトの名無しさん 投稿日: 02/06/15 17:36
>>82
どうでもいいな・・・。


84 名前: デフォルトの名無しさん 投稿日: 02/06/15 21:08
あー、Cって参照使えなかったのかー。

>>80
Turbo C/C++だとタイニーモデルで作れたよ。


85 名前: デフォルトの名無しさん 投稿日: 02/06/15 21:14
>>81
唐揚げはわさびがあうぞ


86 名前: デフォルトの名無しさん 投稿日: 02/06/15 22:41
>>70
だめでした
allocate(10, char);
と使いましたが


87 名前: デフォルトの名無しさん 投稿日: 02/06/15 22:54
何がどう駄目だったのか書かないところを見ると、
かなりのハクチのようですな、、、


88 名前: デフォルトの名無しさん 投稿日: 02/06/15 22:59
signedな数に最大値より大きい数を代入した時は
オーバーフローして未定義だけど、
unsignedな数に同じことをした時にはどうなるの?
オーバーフローしないとか書いあったんだけど、
それは、勝手に最大値に丸められるということ?


89 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:01
>>88
いや、単にオーバーフローしたビットが省かれる。


90 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:01
unsignedだってオーバーフローするんでないかや?


91 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:02
数値計算やってるものですが
C言語、わかってたつもりなのに全然わかってなかったです
関数に二次元配列を渡す方法がわかりません
大きさ不定の二次元配列を渡す方法がわかりません
それからポインタのこともわかってなかったです

配列のポインタのことをよく書いてあるHP教えて下さい
それからポインタのことを語って下さい 語りつくして下さい
お願いします!!!


92 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:02
>>88
unsigned int a=-1;
a+=2;
printf("%d",a);


93 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:03
ポインタはメモリのアドレスをポイントするで終わりでないの?


94 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:03
>>91

void hoge(DATA **dat)
{
}


95 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:03
>>87
そろそろ「型を送る」人は放置で良いかと……。自分の置かれている状況と解決
すべき問題を明確に示せない人には、掲示板でアドバイスするのは無理だよ。


96 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:05
1次元な配列を作って先頭アドレス渡して、受けとった関数で
自前に2次元的にアクセスするとか?


97 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:05
>>87
もう諦めてvector<T>を使いなさい。



98 名前: 91 投稿日: 02/06/15 23:05
>94
ポインタのポインタと二次元配列は違うのでは???


99 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:06
>>89
そうなんか…Thx!

>>92
printf("%d");
つうのは、signedじゃなかったけ?


100 名前: 97 投稿日: 02/06/15 23:06
ごめん >>86 の間違い。


101 名前: 91 投稿日: 02/06/15 23:07
ようするにどんな大きさの二次元配列でも引数にとれる関数を書きたいのです


102 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:07
vectorクラスはどういうことですか?
vector<T>?


103 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:08
>>98
ポインタに配列の先頭アドレスを代入してるってことだよ。


104 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:10
配列の先頭要素はポインタではなかったですか?


105 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:12
>104
ではない


106 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:14
>>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=



107 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:15
>>105
配列の先頭要素はメモリのアドレスではなかったですか?
違いましたでしょうか?


108 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:16
char **argv

はもう推奨されないんですか?



109 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:17
>>108
それはchar* argv[]の別表記じゃん、2次元配列じゃないっしょ


110 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:18
ttp://www.kumei.ne.jp/c_lang/intro/no_23.htm

二次元配列というのはつまり、
その中の一次元配列の先頭アドレスを格納したポインタの、配列ってことだよ。


111 名前: 110 投稿日: 02/06/15 23:21
その二次元配列の先頭アドレスを格納したポインタを引数として
関数に渡せば言いわけ。
ただ、out of rangeになるという危険性をはらむが。


112 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:21
int a[3][4];

00 01 02 03
10 11 12 13
20 21 22 23


113 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:21
>>109
char argv[][]

って書き方も出来ますよね。


114 名前: 110 投稿日: 02/06/15 23:22
>>112
それは二次元配列の宣言だろ。

関数に渡すこととは関係ない。


115 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:23
>>113
できないんじゃねぇの?


116 名前: 112 投稿日: 02/06/15 23:23
関数に渡すこと言っていたんだ。
勘違い、スマソ


117 名前: 110 投稿日: 02/06/15 23:27
char a[];
char *a;

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




118 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:27
>>115
DOSのQuick Cでは出来たよ。


119 名前: 110 投稿日: 02/06/15 23:31
>>113
無理。
コマンドラインの各引数はプログラム外で確保されるために、
ポインタが渡される。よって、プログラムは各引数のサイズを
知ることができないので、無理。


120 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:33
配列よりポインタ使ったほうが融通が利くと独習Cに書いてあった気がしました。
ポインタでアドレス指定して操作すればいいのではないの?
ポインタ、ポインタというと帰って分からなくなりそうです。


121 名前: 110 投稿日: 02/06/15 23:33
>>118
そりゃ、Quick CがCの仕様に沿ってないんだろ。


…自信がなくなってきた。間違ってたらスマソ


122 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:33
2次元以降はサイズが確定してないと駄目れすね。


123 名前: 110 投稿日: 02/06/15 23:34
>>120

>>117を読んでくれ


124 名前: 110 投稿日: 02/06/15 23:35
>>91が何にも言わないので悲しい。

逝ってくるか…。


125 名前: 120 投稿日: 02/06/15 23:39
>>117
そうですよね。
自分のは間違ってない、と、勝手に思ってます。

おかしくなったときに考えましょう、と思ってますし。


126 名前: 俺に日本語を教えれ! 投稿日: 02/06/15 23:39
>>37
意味不明だが、
とくに
>*pのないようまで変更してしまうので。
memcpyを使ってからもう一度。

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

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


127 名前: 110 投稿日: 02/06/15 23:44
何言ってるんだ俺!!!!

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

鬱だ。逝ってきます。


128 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:47
果たしてそうかな...


129 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:50
何が正しいのか分からん。
K&R見る。


130 名前: ANSI工作員 投稿日: 02/06/15 23:51
そうそう
アソシから今すぐ規格書を買って詳細を調べれ


131 名前: デフォルトの名無しさん 投稿日: 02/06/15 23:52
>>127
とりあえず
> 先頭アドレスを格納したポインタ、の配列だから、
は間違ってると思われ


132 名前: 110 投稿日: 02/06/15 23:57
つまり、二次元配列を関数に与えるときは、
配列の先頭アドレスとともに、配列のサイズを渡さなければならないわけ。
そうしないと配列のサイズが見えないから範囲外にアクセスして、
悪けりゃ、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);
}


133 名前: 110 投稿日: 02/06/15 23:59
つぶれちまた…。

>>131

???


134 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:00
>>132
だめ。2次元配列はポインタのポインタではなく長さの情報をもった型
省けるのは一つだけだからエラー


135 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:01
間違った知識ひけらかすのはそろそろやめてホスィ・・・


136 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:02
はい
int v[][7]



137 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:03
エキスパートCプログラミングよめ。


138 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:05
で、結局何が知りたくて、何が理解できたのよ。



139 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:09
ポインタ関係の説明は馬鹿ばっかだった。
以上。 


140 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:12
>>139
同意(鬱)


141 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:15
おとなしく一次元配列にして、
matrix[ y*y_len + x ] とかアクセスすれば〜


142 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:17
全員Cコンパイラを作ればよろし。


143 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:19
>>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);
}




144 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:19
やっぱ、vector使うのがよろし。


145 名前: 110 投稿日: 02/06/16 00:23
     ||
   Λ||Λ
  ( / ⌒ヽ
   | |   |
   ∪ 亅|
    | | |
    ∪∪


146 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:25
あ〜あ・・


147 名前: 134 投稿日: 02/06/16 00:25
     ||
   Λ||Λ
  ( / ⌒ヽ
   | |   |
   ∪ 亅|
    | | |
    ∪∪


148 名前: 91 投稿日: 02/06/16 00:28
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;
}


149 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:28
vector< vector<int> > foo(9, vector<int>(7,0)) ;


150 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:29
>>149
タイトル読もうな。


151 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:29
そして、91は何事もなかったように去った。
後には、110と134の死体が揺れていた…。


FIN


152 名前: 91 投稿日: 02/06/16 00:30
普通に

double **x;
x = (double **)malloc(sizeof(double) * n * n);
だとダメらしいのですがなんでダメなのかわからない


153 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:32
mallocが返すのはふつうのポインタ。
xは2重ポインタ。



154 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:32
ケツの穴多いな


155 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:33
>>152
double *の正体がないから。
double ** -> double * -> double って具合に2段にわたって参照するので、
途中通過する double * も必要。


156 名前: 91 投稿日: 02/06/16 00:33
なんかみんなポインタの間違って理解してる気がする
上のレス見たらよけいわからんなった

ちなみに自分は連立方程式の数値解を求める関数を書きたかったのです
fortran90ならこんなのちょろいのになー C言語むづすぎ


157 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:33
>>152
これこそ、>>110の言ってたポインタのポインタの話じゃないか?


158 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:34
>>156
2chはいきなり初心者モード無視して答えを書いてくるヤシが多い
ので、かえって混乱するかも。でもいつか理解できる。


159 名前: 91 投稿日: 02/06/16 00:36
誰かC言語のコンパイラ作った人いないの?
そういうのを専門でやってる人いませんかねえ
いたらポインタと配列についてコンパイラ実装者の立場から説明して欲しい


160 名前: 91 投稿日: 02/06/16 00:40
mallocで動的にメモリを確保せずにポインタを使わずに
関数に二次元配列を渡せないのでしょうかね?


161 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:40
ネタにしては偉そうだ。


162 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:41
>>160
int a[4][5]ならint (*b)[5]


163 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:41
>>159
アセンブラを覚えれば分かるよ。


164 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:42
必要より大き目なサイズ固定の二次元配列をつかう。


165 名前: 91 投稿日: 02/06/16 00:42
引数で大きさ指定してどんな大きさの二次元配列でも扱えるような
関数を書けないですかね?
ポインタつかわんでmalloc使わんで


166 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:43
>>165
Perlでも使えよ・・・


167 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:43
>>165
C++使え


168 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:43
>>160
ポインタを使わないって時点で無理。


169 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:43
無理ぽいに一票


170 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:44
つーか規格書買って読めつうの。アフォか


171 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:44
>>168
こーぞーたいのメンバーにすれば渡せないこともない。


172 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:44
>>165
支離滅裂


173 名前: 91 投稿日: 02/06/16 00:45
アセンブラの立場から説明してみてや、自分はアセンブラわかりませんが > 163
それは無駄にメモリ使う上に柔軟性がないでしょ > 164


174 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:45
91はここの住人を試しているようにしか見えないな・・


175 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:45
>>173
UNIX板からの刺客?


176 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:45
91を一休さんのキャラに例えると誰ですか?


177 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:46
>>91
だから最初の要素以外の大きさはコンパイル時に
決定していなければならないわけで、>>152はよくて
#define N 100
double (*hoge(int n))[N]
{
double (*x)[N] ;
x = (double(*)[N])malloc(sizeof(double)*n*N) ;
return x ;
}
のようにしかできない


178 名前: 91 投稿日: 02/06/16 00:46
上のやりかた以外に方法ないんですかねえ


179 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:47
>>178
なんでCにこだわるの?


180 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:47
あそこの板嫌いだな
こういうのばっかりだから


181 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:47
一回ポインタとmallocを使わないでプログラムを実行中に
好きな大きさのメモリを確保してほしい。


182 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:47
つまらん。


183 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:47
ポインタを使うのがCの醍醐味ではないけ?


184 名前: 177 投稿日: 02/06/16 00:48
間違えた。すべて決まってなければならない
最初がいらないのは受け渡しのときだけだ


185 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:48
別にCだけではないだろ。


186 名前: 91 投稿日: 02/06/16 00:49
やっぱfortranかなあ
Cむづかしすぎ
みんなもよくわかってないっぽいし


187 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:50
>>186
わかってないのはおまえと110だけだと思われ


188 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:50
>>186
分かっているから無理だと言っているんだろ(ワラ


189 名前: 91 投稿日: 02/06/16 00:51
a[n][n]でaはポインタのポインタではないんですよね?
でわaはなんですか?


190 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:51
Lisp Schemeでも使え。
考えがスマートに書ける。


191 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:51
あなたにはそれが一番似合ってます、おめでとう。


192 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:51
fortranは処理系が中でポインタとmallocを使ってるだけだろ


193 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:51
>>189
配列名だよ!


194 名前: 91 投稿日: 02/06/16 00:52
煽り多くなってきたな
むづかしすぎたかな


195 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:53
(´-`).。oO(どういう勉強のしかたすると>>91みたいのが出来あがるんだろう…)


196 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:53
>>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);
  }


197 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:53
だから答えは出てるっつーの


198 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:53
>>189
int a[n]はint型をn個持つ配列。
int a[n][m]はint型をm個持つ配列をn個持つ配列。


199 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:53
91が一番煽ってる


200 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:53
>>189
識別子です。
そろそろやめたら(ボソ


201 名前: 91 投稿日: 02/06/16 00:53
ポインタむづかしすぎ!C言語挫折しそうですわ


202 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:54
91は暇なやつだな。
そして日本語すらよく分かっていないな。

>むづかしすぎたかな


203 名前: 198 投稿日: 02/06/16 00:54
メモリー上では一直線にならんでいるがな。


204 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:54
yacc?


205 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:54
典型的な逆切れパターンか・・・
91にはCは無理だ、あきらめな


206 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:55
>>203
それだ!それを91は理解しないと


207 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:56
ラーメンうまかったなぁ。


208 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:56
>>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;
};

のように構造体にした方が柔軟性が増す。


209 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:56
パイの実(いちご)うまかったなぁ。


210 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:57
>>208
それを91は嫌がっているんだよ(笑)


211 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:57
>>201
>ポインタむづかしすぎ!C言語挫折しそうですわ
     .,/ ̄ ̄\.
    .,/  ____ \.
   / /川〃ノ\. ヽ.
   ( (ミ/⌒ヽ三) )  / ̄ ̄ ̄ ̄ ̄
    ヽ. ヽ| ´∀` |ノ .ノ < オマエダケー
      ̄|   .::| ̄    \_____
      |____|


212 名前: デフォルトの名無しさん 投稿日: 02/06/16 00:58
>>210
ふーん。何でこんなにもめているのか理解できたっすよ。(藁


213 名前: 110 投稿日: 02/06/16 00:59
俺のせいか(藁


214 名前: 91 投稿日: 02/06/16 01:00
>208
上に貼ったソース まさにそのやりかたです。
いちいちそんなめんどくさいことしないとできないのかあ
ポインタのこと考えないで配列の受渡ししたい


215 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:01
C++などを使おう。


216 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:02
>>215
もうほっときなって。


217 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:02
>>214
Perlを薦めるよ。


218 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:02
>>214
頭固すぎ
他言語使えって


219 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:02
どうでもいいが91は渡す配列をどうやって持ってくる気だ?


220 名前: 91 投稿日: 02/06/16 01:03
Javaだと配列のサイズ決めないで関数に渡せますね


221 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:03
>>220
Java使えるならJava使えよ!!(;_;)


222 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:03
>>220
あれはポインタのポインタと同じ


223 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:04
>>91
それをしたかったら、もっと高級な言語を使え。
メモリアドレスが1次元である以上、どこかで行と列の計算をする必要があるだろ。
そんなことまでCは面倒見てくれない。


224 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:04
わかってるヤツは、とっくに飽きてる話題だからな。


225 名前: 91 投稿日: 02/06/16 01:05
これ以上話広がらないかなあ


226 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:06
>>225
そりゃおまえがネタだと見抜かれてるからね


227 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:06
無能が煽っても大して大きくならないのは定説。


228 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:06
>>220
Cは配列の扱いについて、極端に単純化して、一次元配列しか
基本的には使えなくなっていると思われ。


229 名前: 91 投稿日: 02/06/16 01:07
void f(double[][] a)
↑Javaだとこんな感じで配列の大きさ指定しないで関数に渡せて便利ですな



230 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:07
>>229
配列もオブジェクトの一種ですからな。


231 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:07
やっぱり煽りは日下部タンじゃないと・・・・


232 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:07
C言語まったく知らないんだけど、
ポインタ変数の宣言ってどうやるの?



233 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:08
余計なことを何もしないのが、Cのいいところじゃん。


234 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:08
>>232
*


235 名前: 91 投稿日: 02/06/16 01:08
>232
double *p;


236 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:09
>>234
親切度が半端


237 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:09
>>234
今日はしたい気分なんだ、いいだろ。


238 名前: 91 投稿日: 02/06/16 01:11
C糞かも


239 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:12
>>238
はげどー
91みたいなどうしようもないやつを生んでしまうもんな。


240 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:12
>>239
禿同


241 名前: 91にとっては 投稿日: 02/06/16 01:12
Cは糞です。


242 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:13
>>238
うん、糞だ。
しかし、その糞さえもろくに(略


243 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:13
>>229
それを「便利」と思うか「余計なお世話」と思うかは、微妙なところだ。少なくとも
処理系を実装する立場から言えば C は、適度に小さく強力で、良い言語だろう。

ところで 91 は >>196 へのコメントはないの?


244 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:13
>>238
ちょっと同感ついでに>>91も糞


245 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:14
Cは落ちこぼれ発生率がかなり高いし、糞だな


246 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:14
91はCがアセンブラに近いことがだんだんと分かってきて、嫌気が
さしてきた様子。迷わずFORTRANやjavaに逝ってよし。


247 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:15
>>243
理解できるわけないじゃん


248 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:15
おまえら進行早すぎ。
もっと落ち着け


249 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:16
もう>>91の時点でネタだってわかってるのに、
付き合ってあげるこのム板住人のやさしさ。


250 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:16
いい暇つぶしができたよー


251 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:17
>>249
ROMっている人のため。


252 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:17
>>249
語りつくしてくださいというから語っているのさ(w



253 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:17
1スレに2回くらい発生するネタだけどな。


254 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:18
16進数(HEXコード)について知ってる人教えて!
いまいちF1だとかがよくわかんない。
お馬鹿でスマソ


255 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:18
>>254
すれ違いだぞー
とりあえずCでは0xを先頭につけろ。


256 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:19
>>254
F1=241


257 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:20
F1 = F x 16 + 1 = 15 x 16 + 1じゃん


258 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:20
F1 = 1111-0001


259 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:21
>>258
ハァ?と思ったが、-は区切りか。


260 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:21
今質問すれば誰かがものすごい勢いで答えてくれそうだな(w


261 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:21
F1 == Formula One


262 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:21
F1=ヘルプ


263 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:21
F1 = Winアプリだとヘルプが出てくる


264 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:22
なぜFに16をかける?


265 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:22
C2=虫歯


266 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:22
ケコーン


267 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:22
>>263
間違って押してしまって糞重いヘルプが・・・


268 名前: 91 投稿日: 02/06/16 01:22
>243
196って何言語なのかもわからん


269 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:23
寂しい漏れを抱いて↓


270 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:23
>>264
2桁目は16の1乗を表すから。


271 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:25
こういうのに寄ってたかってレスするから、
このスレの消費速度が速いんだよな、、


272 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:26
>>267
F2の隣にF1置いたの誰だよ!


273 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:26
数値計算なら自分でプログラム組むよりマスマティカあたりを使えば・・・


274 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:27
ていうかHEXコードってなに?


275 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:27
>>272
ごめんなさい。



276 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:27
F1が出てきてからおもしろくない。


277 名前: 91 投稿日: 02/06/16 01:28
>273
今回はC言語のお勉強だったのです
普段はmatlab使ってます


278 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:43
Mathematica高い!!!!


279 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:49
関数のオーバーロードの方法を教えてください。

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

でも、実例を示してくださるとありがたいです。


280 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:53
なんで関数のオーバーロードにそんなたいそうな(ようわからんけど)
ことをする必要があるの?
オーバーロードでしょ?


281 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:57
Cでもオーバーロードって出来たのか。


282 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:57
モビルスーツがオーバーロードしてます


283 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:58
>>281
できねえって



284 名前: デフォルトの名無しさん 投稿日: 02/06/16 01:59
「乗っ取る」とオーバーロードが結びつかない


285 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:00
オーバーライドと勘違いしてるんじゃないの。


286 名前: 279 投稿日: 02/06/16 02:01
要するに
ライブラリにある関数と同じ名前の関数を作ったから
ライブラリの方じゃなくて自分の作った関数の方を
リンクしてくれ、と ldに指示を出したいわけです。


287 名前: 279 投稿日: 02/06/16 02:02
オーバーロードじゃなくてオーバーライドでした


288 名前: 91 投稿日: 02/06/16 02:03
>279
お前レベル低すぎるよ
死んでくれよ


289 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:03
オーバーレイのまちがい?


290 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:04
ENTRYはエントリーポイント関係じゃないの?


291 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:04
頭がオーバーヒートしてんじゃないの?


292 名前: 279 投稿日: 02/06/16 02:04
>>288
おまえだけには言われたくないよ。


293 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:05
>>279
C++スレへ来なさい

パパが誠意を持って体中で教えてあげるから


294 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:05
>>279
自分の関数の名前をちょっと変えて#defineで見た目をごまかすとかは
どう?


295 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:07
>>279
ライブラリをリンクしない。


296 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:08
279が希望することって実現可能なの?


297 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:10
$ man ld
しれ


298 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:12
.obj にしてリンクするだけじゃないのか?


299 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:16
>279
あるライブラリをリンクしたいが、それに含まれるいくつかの
関数だけは自分バージョンを同じ名前で使いたいってこと?


300 名前: 279 投稿日: 02/06/16 02:18
ひょっとしてここの奴らって程度低いの?


301 名前: 279 ◆bislCqN. 投稿日: 02/06/16 02:21
>299
はい、そういうことです。

>>300
騙らないで


302 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:23
たしか、glibcの日本語localeがぐちゃぐちゃだったときに、
プリロード、って言葉を聞いたことがあるけどな……


303 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:24
騙りという名のスケープゴート


304 名前: 299 投稿日: 02/06/16 02:25
>>279
いま急いで調べたから違っているかもしれないけど、ldの--entryオプションは
プログラムのエントリーポイントを設定するだけで、関数の乗っ取りは
少なくともこのオプションではできないと思うよ。


305 名前: 279 ◆bislCqN. 投稿日: 02/06/16 02:33
>304
わざわざありがとうございます。
そうですね、関係なかったみたいですみません。

プリロードうんぬんって、動的リンクさせるときに読み込むライブラリを
順番指定するとかして自分の思い通りにライブラリをリンクさせる手法
でしたっけね。
静的リンクでも同様のことがこれで出来るのかな?
調べてみます。


306 名前: デフォルトの名無しさん 投稿日: 02/06/16 02:44
>>299
>>294のいうとおり
#if use_custom_printf
#define getchar printf__
#include <stdio.h>
#undef printf__
#endif
とかじゃだめ?ヘッダファイルの内容次第では死ぬけど。


307 名前: デフォルトの名無しさん 投稿日: 02/06/16 03:11
半径N(ピクセル)の円の中に含まれる点(x,y)をランダムに算出する方法がわかりません。
講義で習ったんですが忘れてしまいますた。
別に宿題というわけではありませんが、教えてください。おねがいします。


308 名前: デフォルトの名無しさん 投稿日: 02/06/16 03:15
dx = rand() % N;
dy = rand() % N;

if(dx * dx + dy * dy < N * N)
{
  出力(x, y, dx, dy);
}
の繰り返しじゃだめなの?


309 名前: デフォルトの名無しさん 投稿日: 02/06/16 03:16
>>307
x と y を -N〜Nまで乱数で求め、x^2+y^2<=N^2となる(x,y)を出力しなされ。


310 名前: 308 投稿日: 02/06/16 03:22
わしのちょっとおかしい。
>309さんのがいいね。


311 名前: デフォルトの名無しさん 投稿日: 02/06/16 03:32
>>310
設問にxとyが負でもいいのか条件が欲しいところだね。


312 名前: デフォルトの名無しさん 投稿日: 02/06/16 03:47
できました。こんなかんじです。

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);

}

どうもありがとうございました。


313 名前: デフォルトの名無しさん 投稿日: 02/06/16 03:47
角度と長さをランダムで求めて、適当に出力するのが良いんじゃないの?
無駄撃ちが無くなるし。


314 名前: デフォルトの名無しさん 投稿日: 02/06/16 03:48
shige?



315 名前: デフォルトの名無しさん 投稿日: 02/06/16 04:05
>>313
分布が一様じゃなくなるんじゃない?


316 名前: デフォルトの名無しさん 投稿日: 02/06/16 06:59
>>301
298 で答え出てる気が。もし実行ファイルで、実行時リンカが解決するシンボルを
上書きしたいなら、共有ライブラリを作って LDPRELOAD 環境変数で指定、かね。
(man ld.so)

ただ、よーく理解して使わんと死ぬぞ。詳しい話を知りたければ、書籍「Linkers &
Loaders」でも買って読むべし。


317 名前: デフォルトの名無しさん 投稿日: 02/06/16 07:58
質問というかアンケート。
関数書く時、最大何行超えると駄目ってのありますか?



318 名前: デフォルトの名無しさん 投稿日: 02/06/16 08:08
>>317
行数とは無関係だと思う


319 名前: 279 ◆bislCqN. 投稿日: 02/06/16 08:11
>316
どうも。その本買いに行ってきます。


320 名前: デフォルトの名無しさん 投稿日: 02/06/16 08:15
一関数で変数が4000万とかになったりすると、
コンパイラに、いろいろヤヴァイ部分が出てくるとおもう。
角度とか。


321 名前: デフォルトの名無しさん 投稿日: 02/06/16 08:30
>>318
いやでも1関数で何千行とかあったら引きませんか?


322 名前: デフォルトの名無しさん 投稿日: 02/06/16 09:19
>>321
引くけど、
でも50行でもその中に複数の処理が混ぜ混ぜに詰め込まれてたらダメでしょ
逆に何千行でも分割不可能な最小の処理(ありえるか?)なら仕方がないし
(何千行の関数がコンパイルできるかどうかは知らんけど)


323 名前: デフォルトの名無しさん 投稿日: 02/06/16 09:41
>>322
現実派そんなことあるのですか?


324 名前:   投稿日: 02/06/16 10:07
個人的には一関数200行かな


325 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:15
ソースを読んでたらこんな記述がありました。
w->sp0->x_pos = 0;
なんですか -> って。見たこともない表記に混乱しています。助けてください。


326 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:17
>>325
a->b == (*a).b


327 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:18
>>325
構造体Aが構造体bへのポインタ型のメンバを持っている。

で、構造体Aのポインタから構造体bのメンバを参照している。



328 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:19
こんな質問をするあたり、構造体自体知らないかも・・・・


329 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:21
>>322
1000を越えることはないだろうけど、出力するものが多いプログラム(CGIとか)の場合は一つの関数の行数が多くなりそう。


330 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:22
>>329
そうならないようにデザインとコードはわけろとあれほど・・・。
と言うアンチ最近の風潮な俺は逝ってきます。


331 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:36
>>326-328
あー、思い出しました。完全に忘れてた。なんで忘れてたんだろう。
ありがとうございました。


332 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:40
おおお、、、25000行以上の関数がコンパイル通った(VC++6.0)・・・
ファイルサイズが260KBにもなったが・・・


333 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:46
質問よろしいでしょうか
目盛り関数のmalloc()は型の指定がないようなのですが
自分でサイズを確保しておけばどの型のデータも格納できるのでしょうか


334 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:47
>>333
???????
戻り値のvoid *のこと?適切な型にキャストすれば?
もっとも、mallocのプロトタイプが有れば必要ないけど。


335 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:49
>>333

まぁ、そう言うことやね。
変数も所詮は数バイトのメモリ領域。

でも、ちゃんと然るべき型のポインタに入れてやるように。


336 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:50
説明がヘタですいません、
例えば戻り値void*が返ってきて
その番地に何か値を代入するとしたら
charとかintとか関係無くどの種類の値も代入できるのかと思いまして


337 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:51
>>336
できる。
mallocはメモリを確保するだけ。
それをどう扱うかは変数次第。


338 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:52
>>333

問題ない。
このスレの少し上のほうにそれを知らなかったのか意味不明な質問があったが。


339 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:52
こんな初心者に親切に答えて頂いて有り難うございます
一応代入は出来たのですが、型の指定とかしなくていいのかな?と
疑問に思いまして・・
みなさん有り難うございます



340 名前: デフォルトの名無しさん 投稿日: 02/06/16 15:53
>>336
大きささえ合えばね。
余る分にはいいが少ない場合は危険。

共用体とかC自体結構そう言うことを想定してる。


341 名前: デフォルトの名無しさん 投稿日: 02/06/16 16:35
va_argのmanpageの
>ap が va_arg(ap,type) の形で関数に渡されると、 ap の値は関数から返って来た後は不定となる。
という記述の意味が分かりません。

va_list型のapを「va_arg(ap,type)の形で関数(何の?)に渡す」とは具体的どういうことでしょうか?
user_func(va_arg(ap, char *));
のように渡す場合のことかと思ったのですが...。
(これでapが不定になる筈が無いとも思いますけど...)



342 名前: shige 投稿日: 02/06/16 16:39
>>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.
つーか、酷い訳だな。それ。



343 名前: デフォルトの名無しさん 投稿日: 02/06/16 16:45
>>342
酷いつーか誤訳?


344 名前: shige 投稿日: 02/06/16 16:57
誤訳でふね。どこをどう読めばそんな訳になるのかわからんけど。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さいこー



345 名前: デフォルトの名無しさん 投稿日: 02/06/16 17:00
>>344
warata


346 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:16
配列(構造体配列、多次元配列も)の要素数を
動的に確保したいのですが、どうすればいいのでしょうか?


347 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:23
>>346
燃料投入だな。
それは無理。代わりにポインタと[]演算子を使う


348 名前: 346 投稿日: 02/06/16 21:34
>>347
□演算子?これは初めて聞きました
どのようなものでしょうか?


349 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:37
malloc を使え


350 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:41
>>348
ダランベリアンじゃなくてだな
[と]。ポインタをint *pとしてmallocで確保した後
p[3]とかやってアクセス


351 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:45
んで、気が向いたら free


352 名前: 346 投稿日: 02/06/16 21:46
>>349
大変お恥ずかしい話ですが
mallocを使ったことがありません
失礼ですが、どうのように使えばよいのか
教えていただけませんでしょうか?


353 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:47
マトモな本買えよ、、、


354 名前: 346 投稿日: 02/06/16 21:53
>>353
本を買ったら使えるようになるのでしょうか?
やっぱり使い方を知らないと使えないと思うのですが。


355 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:53
>>352
何度もでてるが、例えば一次元なら
int *p ;
p = (int*)malloc(sizeof(int)*n) ;/* nは確保したい個数 */
使い終わったら
free(p) ;


356 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:58
>>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 まで使って無駄に豪華だ。


357 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:59
>>354
本買ったら使い方くらい書いてあると思うのですが。


358 名前: デフォルトの名無しさん 投稿日: 02/06/16 21:59
まあまあ、慣れないうちはキーワードすら思いつかないものだ


359 名前: 346 投稿日: 02/06/16 22:00
あれ?
346は自分です
>>354は誰ですか?

>>355
ご親切にありがとうございます
多次元などは自分で頑張ります
本当にありがとうございました


360 名前: 346 投稿日: 02/06/16 22:02
>>356
確かに・・・
失礼しました
これからは自分で調べてから質問します
お手数かけてすいませんでした


361 名前: デフォルトの名無しさん 投稿日: 02/06/16 22:02
>354
┐(´ー`)┌


362 名前: デフォルトの名無しさん 投稿日: 02/06/16 22:13
NULL は ナル と読むんですか?


363 名前: デフォルトの名無しさん 投稿日: 02/06/16 22:15
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/


364 名前: デフォルトの名無しさん 投稿日: 02/06/16 22:24
null /nΛ'l/


365 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:10
よくゲームプログラミングで聞かれるスクリプトってどういうふうな機能を指すんですか?



366 名前: Dennis M.Ritchie 投稿日: 02/06/16 23:13
Cの王子光臨。


367 名前: Dennis M.Ritchie 投稿日: 02/06/16 23:13
何でもきいてくれ。・


368 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:15
光臨ならIP晒せ。(藁


369 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:18
>>365
プログラミング言語の一種。

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

より広い範囲では、コンパイルなどの煩雑な作業が必要ない
手軽に使える簡易言語といったところ。


370 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:28
ビット演算で質問なのですが、
特定のビットが0なのか1なのかは論理積を使って読めるようになりました。
書き込むのも論理和なり排他等を使えば可能なのですが、
ビットイメージ(2進数)で書き込みたいのですが、
手持ちの書籍、インターネットでの検索で見つけることができませんでした。
現在はWindowsの関数電卓を使って2進数を10進数に変換して
それをコピーアンドペーストしているのですが、
面倒で仕方がありません。何とかならないものでしょうか?
ちなみに、Borland-C++ エディターはC言語をはじめよう を使っております。


371 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:30
>>370
int x = /* ここに2進数表記で整数を書く */;
ってことがやりたいってことか?
それならCだと無理。16進か8進で我慢じゃ。


372 名前: Dennis M.Ritchie 投稿日: 02/06/16 23:32
>>370
むり
Cの開発者がいってるんだからムリ


373 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:36
2進で編集したデータを10進に変換。
読み込むときに、10進を2進に変換して
2進からデータを読み込むってのはダメ?


374 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:39
荒業で伽羅型で書く、変換は?
めんどいけど、どうしてもやりたいなら(w


375 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:41
>>370
モニタの横に、0からFまでの16進⇔2進変換表でも貼っとけ。
そのうち覚える。


376 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:41
>>370
int i ;
asm mov i, 10101010101B


377 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:43
int x = strtol("01000110101", NULL, 2);


378 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:45
>>370
簡単なプリプロセッサ自作すればいいんでは?
プリプロセッサといっても、実際にコンパイラ
に組み込まなくて、単に標準入力の2進数入り
ソースを、10進数なり16進数に置き換えるだけ
でいいと思う。mypp < foo.cbb > foo.cpp みたい
な感じで。2進は 0b ではじめる、とか決めとけ
ばいいんでないの?

漏れは大昔、漢字変数名や漢字関数名が使える
ようなのを作って遊んでたよ。コンパイルエラー
表示を戻すことは考えていなくて、エラーが出る
と意味不明な英数字が表示されることになった
けどな(w。


379 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:47
つうか、先頭ビットが0立っても
unsignedなら表現できるのか?


380 名前: デフォルトの名無しさん 投稿日: 02/06/16 23:53
#define B0000000000000001 1
#define B0000000000000010 2
以下略


381 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:03
gccを改造して2進表記を可能にしてた人がいたね。
パッチをざっと眺めた限り、思ったよりは複雑なことしてなかった。
コロンブスのエッグって感じだったな。


382 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:13
>>381
そんな対応は
#define START {
#define END }
とするぐらい、無意味でやっちゃならん事だと思うが。


383 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:15
まーそれもそうだねぇ
printfで %b を追加した方がまだマシかな


384 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:27
VC++にはstdint.hがあ遘サ讀肴ァ遘讀



385 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:32
>>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
それはちょっと・・・


386 名前: 378 投稿日: 02/06/17 00:39
>>385
>拡張子cppと言うことはC++ですね?
>ちょっと無理なようです。
こういうResになるということは、確かに無理だろうな(w
拡張子は何だって構わないんだが。因みに漏れが昔書いた
ヤシは、C++でなくCで書いてある。当時はC++なんて、存在
すら知らなかったんだよ(w


387 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:43
>cpp
暗にスレ違いってことでは。


388 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:47
カンマ打つのめんどくさいが。

#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はマクロで隠蔽すれば(実行効率以外は)けっこういいかも。


389 名前: 378 投稿日: 02/06/17 00:53
>>387
ああそうか、スマソ。例がマズすぎたんだな。


390 名前: デフォルトの名無しさん 投稿日: 02/06/17 00:56
>>375 これ常識。
たった16種類の一対一対応。簡単に覚えられる。


391 名前: デフォルトの名無しさん 投稿日: 02/06/17 01:17
九九を覚えるよりも早く15x15を覚えました
一度身に付けるとスゲー楽だよ


392 名前: デフォルトの名無しさん 投稿日: 02/06/17 01:37
>現在は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進法に変換してくれる。




393 名前: デフォルトの名無しさん 投稿日: 02/06/17 01:53
>>392
そこで10進法に変換してるのはコンパイラではなくprintfだったりする(笑)


394 名前: デフォルトの名無しさん 投稿日: 02/06/17 02:21
>>393
gcc (x86) あたりだと、コンパイラが 10 進数に変換してアセンブリコードを
出力してたり。もっともアセンブラがバイナリに変換するから、そこはどうでも
良いんだが。


395 名前: デフォルトの名無しさん 投稿日: 02/06/17 02:59
printfに二進のイメージで書き込む機能をつけてほしかった。PHPにはあるようだけど。


396 名前: デフォルトの名無しさん 投稿日: 02/06/17 03:21
C言語,UNIX-XWindowシステムでグラフィックを描くプログラムを勉強したい
んですが、どこかわかりやすいHPありませんか?
教えてください。



397 名前: デフォルトの名無しさん 投稿日: 02/06/17 03:25
>>396
あまり環境に依存することはここでは聞かないでね。


398 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/17 03:53
>>396
Unix板で聞いたほうがよろし。
ただし、「XWindowシステム」という妙な表記は避けたほうが無難。



399 名前: デフォルトの名無しさん 投稿日: 02/06/17 04:37
2進出力関数ぐらい自分で作れ矢


400 名前: shige 投稿日: 02/06/17 05:04
400got


401 名前: デフォルトの名無しさん 投稿日: 02/06/17 06:21
a,b,c;という構文があったとしたら、必ずしもa -> b -> cの順で評価されるとは限らないんですよね?


402 名前: デフォルトの名無しさん 投稿日: 02/06/17 06:25
限るよ。


403 名前: デフォルトの名無しさん 投稿日: 02/06/17 07:58
f( a, b, c ); だったら限らんが a, b, c; なら限る。


404 名前: デフォルトの名無しさん 投稿日: 02/06/17 08:00
>401
402の言うように
a, b, c;
なら評価順はa => b => cになることが保証されている。&&や||でも同様。
func(a, b, c)
はどこから評価されるかわからない。


405 名前: デフォルトの名無しさん 投稿日: 02/06/17 13:39
質問です。
SJISからEUCへ変換させるプログラムを作りたいのですが,
まったく分かりません。どなたか教えていただけないでしょうか。
お願いします。


406 名前: デフォルトの名無しさん 投稿日: 02/06/17 13:41
>>405
google 逝け。探せば文字コードの解説、ソース公開しているサンプルプログラムとも
山のように見つかる。

(文字コードの解説は、ここで書くには長すぎるし)


407 名前: デフォルトの名無しさん 投稿日: 02/06/17 13:46
>>395
vsprintfにパッチ当てようぜ。


408 名前: デフォルトの名無しさん 投稿日: 02/06/17 14:38
>>405
system関数でnkfを呼び出す。


409 名前: 401 投稿日: 02/06/17 14:40
>>403-403
そうなんですか。
じゃあv=(a,b,c);という構文があったとしたら、必ずa -> b -> cの順に評価され、vにはcの結果が入ると見てよいのですね?


410 名前: デフォルトの名無しさん 投稿日: 02/06/17 14:51
>>409
v = (a, b, c); の , はカンマ演算子だけど、v = func(a, b, c); の , は
カンマ演算子でなくてただのセパレータ。


411 名前: デフォルトの名無しさん 投稿日: 02/06/17 14:55
エクセル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(デスクトップ)にしても同じでした。


412 名前: デフォルトの名無しさん 投稿日: 02/06/17 14:55
>>411
>エクセルVBAなんですけど
良い根性してるな。


413 名前: デフォルトの名無しさん 投稿日: 02/06/17 14:58
>>411
もしかして絨毯爆撃ですか?


414 名前: デフォルトの名無しさん 投稿日: 02/06/17 16:13
>>409 正解!


415 名前: デフォルトの名無しさん 投稿日: 02/06/17 16:17
>>410
変数宣言・定義の","モナー


416 名前: デフォルトの名無しさん 投稿日: 02/06/17 16:29
>>415
つーことは、int a = 0, b = a; とやっても b は 0になることは
保証されない訳だよね?


417 名前: デフォルトの名無しさん 投稿日: 02/06/17 16:45
>>416
どっちにしろtpりっきーすぎ


418 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:10
int a = 0, b = a;

int a = 0;
int b = a;
は等価じゃなかったでしたっけ。



419 名前: Dennis M.Ritchie 投稿日: 02/06/17 18:13
>>418
私はあなたより日本語が上手い。


420 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:16
418
変な日本語すまそ。


421 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/17 18:19
>>411は日本語読めないようだから、教えてやったところでどうせ無駄だろう。


422 名前: 415 投稿日: 02/06/17 18:22
糞K&Rにそう書いてあったと思う。


423 名前: Dennis M.Ritchie 投稿日: 02/06/17 18:22
>>422
なんで糞だと思うんですか?


424 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:23
>>423
ステレオタイプなアフォなので無視するアル。


425 名前: Dennis M.Ritchie 投稿日: 02/06/17 18:24
あなたは無視するとき、「無視するよ。」と宣言してから無視するんですか。(笑


426 名前: 415 投稿日: 02/06/17 18:28
>>424
日本語話してください、お馬鹿さん。


427 名前: C初心者の名無しさん 投稿日: 02/06/17 18:28
ttp://www.basicmagazine.net/bmnet/0207/toukou/kyudo.lzh
↑このソフトがベーマガの投稿であってよくわからない部分がいくつかあったので教えてください

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



428 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:31
unionは使用しているのですか?


429 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/17 18:32
>>427
> ・printf("\x1b[2J") このようなprintfの使い方をしているのですが
>   具体的にどういうことをしているのですか?

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

>   それともプログラム中では宣言されていなくてヘッダファイルとかで
>   REGSっていう共用体が定義されているのですか?
DOS用の処理系だと定義されてるものが多い。


430 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:34
>427
・エスケープシーケンスじゃないの?
・ヘッダファイルもプログラム


431 名前: 1 投稿日: 02/06/17 18:34
C言語をマスターしたいのですが半年ぐらいでかなり上達しますか?


432 名前: 玉三郎 投稿日: 02/06/17 18:35
そろそろワシの出番か・・・(´┏┓`)


433 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:35

一つ目:DOSのエスケープシーケンス
二つ目:そういうのがある


434 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:40
>>431
腕のいい師匠について、10年も修行すればモノになるかな。
でも、だめな奴は30年やってもダメだから、自分に向かないと
思ったら、早めに見切りをつけなよ。


435 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:44
while{
while{

while{

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

分かりやすくいうと、ゲームオーバーしたらファミコンで言うリセット
した状態にしたいのですが。。


436 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:45
>435
意味が。


437 名前: C初心者の名無しさん 投稿日: 02/06/17 18:45
レスありがとうございます エスケープシーケンス…聞いたことがあるけど
ちょっと難しい… いろいろ調べてみようと思います ありがとうございました


438 名前: C初心者の名無しさん 投稿日: 02/06/17 18:50
ttp://www.capricorn.cse.kyutech.ac.jp/~tate/tako/esc.html
これっぽいですね \x1bってのはエスケープシーケンスを使いますよって
定義みたいなものですか?


439 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:50
>>436
ゲームオーバーしたらファミコンをリセットするには
どうやったらいいですかね?


440 名前: manko_chinko 投稿日: 02/06/17 18:51
>>439
リセットボタンを押せばいいのでは?


441 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/17 18:51
\x1bってのはエスケープコード。
エスケープコードで始まるからエスケープシーケンスと呼ぶ。


442 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:52
>>440
じゃあ通じてるじゃないですか。。


443 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:53
>435
つくりかけでいいから、ソースの一部分を見せてや。


444 名前: manko_chinko 投稿日: 02/06/17 18:54
goto使えばいいじゃないですか。(プ


445 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/17 18:54
たぶん、変数の初期化のところまでgotoするってことなんでわ。


446 名前: 445 投稿日: 02/06/17 18:55
>>444
ケコーンしてくれ。chinkoのほうはいらんから。


447 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:56
bool foo()
{
  while () {
    while() {
      if (特定の条件を満たした) return true;
    }
  }
  return false;
}

main()
{
  while (foo());
}


448 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:56
>>445
あってます。変数を初期化して最初のオープニングの状態に戻したいってことです


449 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:56
gotoは却下とか言うなよ


450 名前: デフォルトの名無しさん 投稿日: 02/06/17 18:59
>>447
ほぉーこういう手もあったか。


451 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:00
gotoなんて使えばいいんですかね?


452 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:15
>>451
label: goto label;


453 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:24
>>447
これは何パターンなんですか?


454 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:25
パターンじゃねーよ
多重ループ脱出のために、ループ内を関数に追い出すのは昔からある手段


455 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:30
最近、プログラミングがしたくなって、本を買ってなんとなくC言語を覚えてるんですが、

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

今18でプ〜な俺・・・


456 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:30
いい湯加減ですね。


457 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:33
>>455
趣味が何かの役に立つと考えてはいけないかと。
俺は結果的に役に立ってるけど。


458 名前: デフォルトの名無しさん 投稿日: 02/06/17 19:36
>>457
言われてみれば・・・

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

・・・どうでもいいな・・・


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



とマジレスしてみる。



460 名前: デフォルトの名無しさん 投稿日: 02/06/17 23:29
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]);
}

これでイイのでしょうか?
ドキュソな質問でゴメンなさい



461 名前: デフォルトの名無しさん 投稿日: 02/06/17 23:31
なんだよそれ


462 名前: デフォルトの名無しさん 投稿日: 02/06/17 23:32
>>460
int i, j = 0;
for (i = 1; i <= n; i++) j += i * i * i * i;


463 名前: デフォルトの名無しさん 投稿日: 02/06/17 23:32
やっぱ、めちゃくちゃ蚊…


464 名前: ドキュ460 投稿日: 02/06/17 23:34
>>462
アリガト


465 名前: デフォルトの名無しさん 投稿日: 02/06/18 00:25
>>459
好きこそモノの上手なれ。
だがしかしセクースは上手くならないのはナゼか。


466 名前: デフォルトの名無しさん 投稿日: 02/06/18 00:30
>465
本当は嫌いだから


467 名前: デフォルトの名無しさん 投稿日: 02/06/18 00:47
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するのは
なんかアレですが仕方ないですかね?


468 名前: デフォルトの名無しさん 投稿日: 02/06/18 00:49
>>467
なんで文字列として格納するの?



469 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/18 00:50
アレっつーか正しい姿だが、別にincludeしなくても使えるよ。


470 名前: デフォルトの名無しさん 投稿日: 02/06/18 00:51
パス先のファイルの
有無ってどうやって確認したらよいデスか?


471 名前: デフォルトの名無しさん 投稿日: 02/06/18 00:53
>470
試しにッ!開くッ!


472 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/18 00:55
Cの規格ではないがaccess()とか。


473 名前: 467 投稿日: 02/06/18 01:02
>>468
文字列として格納してるのは通信で受け取ったデータをバッファに
入れてるので。

>>469
stdio.hをincludeしないとエラーが出たんですよね。
おかしいな、もう一回確認してみます。


474 名前: デフォルトの名無しさん 投稿日: 02/06/18 01:05
>>473 stdio.hをincludeしないとエラーが出たんですよね。
おまえC++でコンパイルしてるだろ


475 名前: 467 投稿日: 02/06/18 01:06
>>474
全くその通りです(汗。
拡張子をcppでやってるのでC++でコンパイルされてると思います。
ってことはC++スレ行きでしょうか・・・。


476 名前: デフォルトの名無しさん 投稿日: 02/06/18 01:14
>>475
いや、そうでなく。
言語仕様を把握してないだろってことで。

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


477 名前: 470 投稿日: 02/06/18 01:19
>>472

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

でうまくいきました。ありがとー!!( ゚ー゚)



478 名前: デフォルトの名無しさん 投稿日: 02/06/18 01:26
>>476
それ以前に、なぜ stdio.h を include したくないのかと小一時間問いつめたく
ないか? ワケあって標準 C ランタイムライブラリをリンクしたくない、とかなら
話は分かるが sscanf() は使うんだよな…(謎すぎ)


479 名前:◆CvWntcsM 投稿日: 02/06/18 01:27
>467
あれだ。カンマでcharを区切って別々のバッファに保存してatoiを使え。


480 名前: 476 投稿日: 02/06/18 01:28
タシカニ


481 名前: デフォルトの名無しさん 投稿日: 02/06/18 01:28
B言語って今でもあるの?


482 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:09
組み込み用にsscanfを自作したが
スタックオーバーフローとかされても困るし
第一使わねぇよなぁ と思ってcvsの肥やしになった。

7行ネタになるかと思ったけど大して難しくないしな。
7行コンバータにかけたら何もせずに10行になったし・・・


483 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:12
>>482
一行の文字数に制限を付けなければ、いくらでも行数は減る(w


484 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:16
>>483
余所のスレでも展開するなよ。
改行込み80*7の560文字だ。


485 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:17
>483
一応7行規定では79x7文字だよ


486 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:23
つーことは書くときに既に圧縮をかけないといけない訳だ罠(w


487 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:32
>486
その罠の使い方にはやや違和感があるんだが、
最近でははやっているのか?


488 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:39
書くときに圧縮って何だ?
普通に(勿論最小の記述で)コードを書いて、
後から行連結等をして短くするのが普通だと思うが。

1スレ目の頃の勇者でも、79*xの状態で編集はしないだろ


489 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:40
>>487
俺はこういう書き方だと今まで思っていた罠(w

>>488
いや、物の例えですよ。いかに短くするか頭をひねるんだ
ろうなって。


490 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/18 02:41
変数名を短くとかマクロで縮めるとか、そういうことだろ。


491 名前: デフォルトの名無しさん 投稿日: 02/06/18 02:48
それだけで済んだら苦労しない


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
罠ビー


496 名前: 罠師はマ板へ逝け 投稿日: 02/06/18 04:14
                              §〆(゚д゚;)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  @

 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
 罠ビー


497 名前: デフォルトの名無しさん 投稿日: 02/06/18 04:17
>>496
がんがれ


498 名前: デフォルトの名無しさん 投稿日: 02/06/18 04:28
↓このスレでいいのかよくわからないと言う罠。
http://ton.2ch.net/test/read.cgi/gline/1021935708/


499 名前: デフォルトの名無しさん 投稿日: 02/06/18 06:09
gccで
char s[] = "abc";
char *p;
とすると、p=sは通るのですが、p=&sとすると
warning: assignment from incompatible pointer type
となります。別に困ることは無いのですが、理由が分からないのは
気持悪いです。誰か理由の分かる方はいませんか?


500 名前: デフォルトの名無しさん 投稿日: 02/06/18 06:15
&sは配列へのポインタ。


501 名前: 愛子 投稿日: 02/06/18 06:20
独学でC言語をものにするポイントってありますか?
やっぱり、数学が出来ないと駄目なんでしょうか?




502 名前: デフォルトの名無しさん 投稿日: 02/06/18 06:21
>>501



503 名前: 愛子 投稿日: 02/06/18 06:51
お金もないんですが、絶望的でしょうか。


504 名前: デフォルトの名無しさん 投稿日: 02/06/18 06:53
>>503
やる気があれば誰でもそこそこは身に付く技術。


505 名前: デフォルトの名無しさん 投稿日: 02/06/18 07:00
まともな読解力さえあればK&R熟読すれば身につくよ。


506 名前: デフォルトの名無しさん 投稿日: 02/06/18 09:59
>>505
書かなきゃ覚えないと思うが.....
評論家になったらおしめぇょ!
まぁ、(評論家 == 優秀) が真という会社もあるが、クソ。



507 名前: デフォルトの名無しさん 投稿日: 02/06/18 10:45
>>501
はじめてのC 最強.


508 名前: デフォルトの名無しさん 投稿日: 02/06/18 11:35
>>499
&s は char へのポインタでなく char[3] へのポインタだから。
ポインタとしての値は同じだけど型が違う。



509 名前: デフォルトの名無しさん 投稿日: 02/06/18 12:18
プログラムを始めて2ヶ月の初心者の質問です。よろしくお願いします。
C++Builder6 で、

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

と構造体を定義して

sizeof(TEST);

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




510 名前: デフォルトの名無しさん 投稿日: 02/06/18 12:48
>509
typedef struct {
DWORD d;
DWORD e;
WORD a;
WORD b;
WORD c;
}TEST;



511 名前: デフォルトの名無しさん 投稿日: 02/06/18 12:51
>>509
コンパイラオプションである場合がある


512 名前: 509 投稿日: 02/06/18 13:05
>>510 それでもダメでした。
>>511 ただ今、格闘中です。ありがとうございます。


513 名前: デフォルトの名無しさん 投稿日: 02/06/18 13:32
>509
2byteくらいよいのでは?


514 名前: デフォルトの名無しさん 投稿日: 02/06/18 13:47
FAQだな


515 名前: デフォルトの名無しさん 投稿日: 02/06/18 14:10
>>507
育児教育系の書棚の近くでそれ見つけて思わず買っちゃったよ。ナイスな店長さん。


516 名前: デフォルトの名無しさん 投稿日: 02/06/18 15:06
>>509
C++Builder6のデフォルトのパディング数は8だからこういうことに
なります。

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

これを1や2に変えれば、14バイトになると思いますが、そうすると
VCLとの互換性が取れなくなりますので、そのままにしておいて
下さい。


517 名前: デフォルトの名無しさん 投稿日: 02/06/18 15:45
>>509
#pragma pack(1)

元に戻すなら
#pragma pack(push, 1)
typedef struct {
 :
}TEST;
#pragma pack(pop)


518 名前: shige 投稿日: 02/06/18 16:44
自分でPythonのstrut_pack()/struct_unpack()みたいなのを作ったほうがいいよ。



519 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/18 17:10
>>509
つーか、なぜ14バイトであることに拘ってる?


520 名前: 509 投稿日: 02/06/18 19:36
>>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














521 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:04
2進数→10進数、10進数→2進数、10進数→16進数、16進数→10進数、2進数→16進数、16進数→2進数
の変換をするプログラムを教えていただきたいのですが。
当方ゲリゲリの初心者なので、できるだけ簡単な関数でおながいします。もちろん「printfの変換文字」というのは無しで...



522 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:05
2進数の何を10進数にするんだ?
文字列?


523 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:15
>>521
intは10進数しか保持しない とか思ってるんじゃない?
どっちにせよこのくらい小学生だって自分で解決するけどね。


524 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:23
>>523
むしろ普通2進数でしか保持しないよね(笑)


525 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:33
n進数の文字列からCPU内部表現には、strtol使う。
CPU内部表現から10,16進数文字列は、sprintfが便利。
2進数文字列へは、自分


526 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:33
>>521
Windows付属の電卓


527 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:33
で出力関数を書くべし。


528 名前: デフォルトの名無しさん 投稿日: 02/06/18 20:47
>>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について繰り返せばよい。


529 名前: デフォルトの名無しさん 投稿日: 02/06/18 22:52
>>521
8進数も仲間に入れてやれよ


530 名前: デフォルトの名無しさん 投稿日: 02/06/18 23:00
ついでにBASE64も仲間に入れてやれよ……


531 名前: デフォルトの名無しさん 投稿日: 02/06/19 00:37
>208に、
double **d;

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

の書き込みがありますが、このメモリを全て解放するときは
free(d);で良いのですか?


532 名前: デフォルトの名無しさん 投稿日: 02/06/19 00:46
>>531
だめ。iそれぞれにfree(d[i])のあとfree(d)


533 名前: デフォルトの名無しさん 投稿日: 02/06/19 03:36
>>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 ;


534 名前: 533 投稿日: 02/06/19 03:43
間違えた
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 ;



535 名前: デフォルトの名無しさん 投稿日: 02/06/19 03:44
>>533
これだと開放はfree(x); だけでいいんですか?


536 名前: 533 投稿日: 02/06/19 03:50
そういうこと。また間違えてた。止めたほうがいいかも
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 ;


537 名前: デフォルトの名無しさん 投稿日: 02/06/19 03:52
>>536
やろうとされている事はわかります。double *[]とdouble[]を同時に確保
して、アドレス計算によりdouble *[]を作成するのですね。


538 名前: デフォルトの名無しさん 投稿日: 02/06/19 04:50
構造体の中のメンバとして配列を動的に確保するときは
先に構造体の中にポインタ変数を用意して
mallocで確保したメモリのアドレスをそのポインタに割り当てる
みたいな方法でできます?


539 名前: デフォルトの名無しさん 投稿日: 02/06/19 05:03
>>538
struct ss {
double *d;
};

で、

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

みたい奴か?普通にできるよ。


540 名前: 538 投稿日: 02/06/19 05:12
>>539
そうですか、良かったです^^;。
この方法で良いのかあまり自信が無かったので聞いてみました。


541 名前: デフォルトの名無しさん 投稿日: 02/06/19 06:26
>>540
ss.d = malloc(sizeof *ss.d * 100);
とやるのも一法。


542 名前: デフォルトの名無しさん 投稿日: 02/06/19 06:55
struct ss{
double d[1];
};
pss = (ss*)malloc(sizeof(ss) + sizeof( double ) * (100-1) );


543 名前: デフォルトの名無しさん 投稿日: 02/06/19 07:04
>>541
sizeof ss.d * 100でしょ。


544 名前: 543 投稿日: 02/06/19 07:06
と思ったが、*ss.dは間接参照か。


545 名前: デフォルトの名無しさん 投稿日: 02/06/19 17:33
ハノイの塔を、再起呼び出しでやるんですけどわかりません。
プログラムはあるので細かく解説お願いします。

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);
}
}



546 名前: デフォルトの名無しさん 投稿日: 02/06/19 17:33
明日の昼までに提出しないといけない課題が分かりません。
どなたか助けてください。
課題は
10次元のベクトルa,bを配列に作成してa,bの内積を求めなさい。

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


547 名前: g 投稿日: 02/06/19 17:34

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

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



548 名前: デフォルトの名無しさん 投稿日: 02/06/19 17:34
>>545
デバッガでステップ実行してみれや。


549 名前: デフォルトの名無しさん 投稿日: 02/06/19 17:42
>>546

まず内積の計算の仕方を教えなさい。


550 名前: デフォルトの名無しさん 投稿日: 02/06/19 17:46
>>546
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/l50


551 名前: U-名無しさん 投稿日: 02/06/19 18:42
>>546
たぶん、やっぱり、
「10次元」「ベクトル」「内積」っていうタームの定義が
わからんちんなのだろう。

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

(´-`).。oO( 入力がリストだから配列は不要なんでぇ )
とか、そういう状況でもなさそう。


552 名前: マジで 投稿日: 02/06/19 18:52
>>546
俺の辞書に内積と言う言葉はない(IMEにも


553 名前: デフォルトの名無しさん 投稿日: 02/06/19 19:00
便乗

|a|[b]cosθとかほざいたら叩かれますよね?俺。


554 名前: デフォルトの名無しさん 投稿日: 02/06/19 19:13
>>553
当然


555 名前: デフォルトの名無しさん 投稿日: 02/06/19 20:14
>>553
それでも良いが、ふつーは

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

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

で定義するだろう。(そもそも空間が Kn じゃないと話が別だが)


556 名前: デフォルトの名無しさん 投稿日: 02/06/19 20:18
>>555
そうそう、この式がなぜか出てこなかった・・・。


557 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:38
error C2146: 構文エラー : ';' が、識別子 'Abc' の前に必要です。
fatal error C1004: 予期せぬ EOF が検出されました。
VC6.0++です。
extern 構造体 Abc;
付近でエラーが出ます。
ちゃんと型をインクルードしてるんですが


558 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:38
>>557
#include <stdafx.h>


559 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:40
struct ABC { }; <-セミコロン


560 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:42
CNNが伊×韓戦の審判判定についてアンケート。
で、チョソの掲示板による組織投票でえらいことに!

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

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

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

コピペ推奨!

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




561 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:44
> 2ちゃんねらーの力を見せてやれ!!!

最低・・・


562 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:45
群れていきがる珍走団と変わらんな。


563 名前:   投稿日: 02/06/19 21:49
#include <stdafx.h>
インクルードファイルを開けません・・・
昨日まではうまくいっていたんだけどなぁ


564 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:51
さむいな


565 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:57
インクルードファイルの優先順位?どうやってかえるの?
ttp://www.netsphere.jp/osaru/lv2/error.htm


566 名前: デフォルトの名無しさん 投稿日: 02/06/19 21:59
>>565
そのページは間違ってる。忘れろ・・・忘れるんだ・・・


567 名前: デフォルトの名無しさん 投稿日: 02/06/19 22:05
構造体の宣言をヘッダーファイルで宣言しないで,
ファイルないで宣言したらうまくいった・・・。


568 名前: デフォルトの名無しさん 投稿日: 02/06/19 23:35
>>561-562
この辺りにまともな2ちゃんねらが・・。


569 名前: デフォルトの名無しさん 投稿日: 02/06/20 00:09
http://www.netsphere.jp/osaru/lv2/error.htm


570 名前: デフォルトの名無しさん 投稿日: 02/06/20 01:48
関数ポインタの決定的証拠をお見せします。
http://corn.2ch.net/test/read.cgi/news/1024502993/
           


571 名前: デフォルトの名無しさん 投稿日: 02/06/20 02:07
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;
}


572 名前: デフォルトの名無しさん 投稿日: 02/06/20 02:40
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);

こうやって三角形を頂点で与えてるんだけどこれを
三角錐にするにはどうしたらいいんですか?


573 名前: デフォルトの名無しさん 投稿日: 02/06/20 02:43
こー、ぐるーっとまわせば、


574 名前: デフォルトの名無しさん 投稿日: 02/06/20 02:54
グーグルさっきからしてるんだけど、サパーリなものなんで
聞いてみたんですが。。


575 名前: デフォルトの名無しさん 投稿日: 02/06/20 03:00
>>573-574
ワラタ


576 名前: デフォルトの名無しさん 投稿日: 02/06/20 03:10
正直本気でグーグルと思いますた。。
逝ってきます(´・ω・`)


577 名前: 572 投稿日: 02/06/20 03:51
投影変換を行わないとダメぽ?
Z軸に頂点をもう一個足して、あとは投影処理で△にしたら良いのですか?
サパーリわからん



578 名前: デフォルトの名無しさん 投稿日: 02/06/20 04:04
>>572
ちゃんと3次元で処理しろよ、先ずはワイヤフレームからだな(藁
OpenGLのサンプル(MSDN付属)にあったと思うが...


579 名前: デフォルトの名無しさん 投稿日: 02/06/20 09:32
配列で得たランダム値(100個と仮定)の中に、ある数字が含まれるか
どうかを判別するにはどう書いたらいいですか?


580 名前: デフォルトの名無しさん 投稿日: 02/06/20 09:36
>>579
ループで配列を舐めて、ifで判定すればいいじゃん。
そうじゃなくて?


581 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:04
DOS/V + PentiumでDOSベースのゲームを作り
たいのですが、キーボード割込みハンドラの登録
はどのシステムコールを使えばいいのでしょうか?
VC++のWin32 Console Applicationでプロジェクト
つくってコンパイルしてます。


582 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/20 12:10
Win32 Console ApplicationってDOS/Vで動くん?


583 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:11
キーボードインタラプトをフックしたい?



584 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:13
フックって殴ることですよね?


585 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:13
引っ掛けるじゃない?


586 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:16
引っ掛けて殴るんですか?


587 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:24
>>583
矢印キーが押されたことを割込みハンドラで
処理したい。
kbhit()で拾っていたのではレスポンスが
悪すぎたので。


588 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:24
>>586
ワラタ


589 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:26
>>587
割り込みじゃなくてイベントハンドラじゃないの?



590 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:29
よろしくお願いいたします。


591 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:29
DirectInputじゃ駄目?


592 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:39
>>587
割り込みベクタを書き換えるんだろうけど
手もとにAT互換機の資料が無い


593 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:43
98とはやっぱ違うんかな


594 名前: デフォルトの名無しさん 投稿日: 02/06/20 12:48
お返事ありがとうございます


595 名前: デフォルトの名無しさん 投稿日: 02/06/20 13:07
なにが。


596 名前: 初心者 投稿日: 02/06/20 14:42
得点を次々入力して、もし70以上なら合格、70未満なら不合格とし、
合格人数、不合格人数、受験者合計、最高得点、最低得点、平均点を出力する
プログラムを設計・開発せよ。なお、999が入力されたらループを抜け、
999はカウントしない。

これの最高・最低得点ができません。
お願いします。


597 名前: みんみ ◆Hk7UCbL. 投稿日: 02/06/20 14:43
UNIXはCで作られているそうですが、
WindowsもCなんですか?


598 名前: デフォルトの名無しさん 投稿日: 02/06/20 14:53
>>596
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/l50


599 名前: 初心者 投稿日: 02/06/20 14:59
はい、宿題です。
よろしくお願いします。


600 名前: デフォルトの名無しさん 投稿日: 02/06/20 15:00
600



601 名前: という噂があるんだけどね 投稿日: 02/06/20 15:17
>>597
WindowsはPascalです。


602 名前: デフォルトの名無しさん 投稿日: 02/06/20 15:19
(´・∀・`)へー


603 名前: みんみ ◆Hk7UCbL. 投稿日: 02/06/20 15:49
>>601
噂ですか。ゲイツさんなら知ってるんですかね。




604 名前: デフォルトの名無しさん 投稿日: 02/06/20 16:23
>>587 (>>592)
本家(本当の本家はIBMか?)に仕様書がある。要レジストだが無料。
http://www.oadg.or.jp/



605 名前: デフォルトの名無しさん 投稿日: 02/06/20 16:44
577が作ってるのはDOSのアプリケーションと違うやん・・


606 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/20 16:54
577が作ってるのは三角錐だからな。


607 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:03
>>597
WindowsはC++です。


608 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:04
>>607
NTに限ってはな。


609 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:11
return で何を返すのですか?


610 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:13
思い出


611 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:17
重いではどうやって返すの?


612 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:29
>>610
ワラタヨ


613 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:33
笑えねぇよ


614 名前: あん 投稿日: 02/06/20 17:38
IPから住所を調べられるサイトを教えてください(ホスト検索)


615 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:41
>>614
http://www.google.co.jp/search?q=%8E%81%82%CB&hl=ja&lr=


616 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:43
>>614
http://kan-chan.stbbs.net/goods/shine.html


617 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:55
>>597
Windowsはベーシックとちごたんか?


618 名前: Pennis M.Ritchie 投稿日: 02/06/20 17:56
I C.


619 名前: デフォルトの名無しさん 投稿日: 02/06/20 18:03
Windowsを動かすにはVBのランタイムが必要らしいぞ


620 名前: デフォルトの名無しさん 投稿日: 02/06/20 18:14
漏れはFORTRANって聞いたんだが。


621 名前: デフォルトの名無しさん 投稿日: 02/06/20 18:45
DOSXNTでWin32コンソールアプリうごかなかったっけ?



622 名前: デフォルトの名無しさん 投稿日: 02/06/20 20:35
C入門用の良い本はありませんか?
教えてください。


623 名前: デフォルトの名無しさん 投稿日: 02/06/20 20:36
K&R


624 名前: デフォルトの名無しさん 投稿日: 02/06/20 20:42
C++ sard edition


625 名前: デフォルトの名無しさん 投稿日: 02/06/20 20:44
はじC


626 名前: デフォルトの名無しさん 投稿日: 02/06/20 20:50
>622
君なら河西本だな。


627 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:03
アヒル本がいいよ


628 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:14
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文抜けたら,なくなるんじゃないの?


629 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:14
#define for if(0); else for


630 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:20

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

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

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

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

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

 環境は関係ないと思いますが、MinGWです。



631 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:22
>>628
VC++6だろ。古いC++の文法なので、エラーになります。
VC++.NETを買いなせえ。


632 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:29
VC++6では、だめでVC++.NETではOK?


633 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:35
そうでもない


634 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:40
>630
WAVE関係とやらを勉強する前に(以下略)



635 名前: 632 投稿日: 02/06/20 21:40
ビルGに問い合わせてみます


636 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:42
>>630
・・・・・・


637 名前: j 投稿日: 02/06/20 21:45
>630
うまい!


638 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:51
すいません。教えてください。
コンソール上に出力するときに
三桁毎にカンマなりドットなりを入れたいんですが、
標準でそういう、書式で出力できますか?
やっぱり、関数作らないとダメですか?


639 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:56
ちんぷんかんぷん


640 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:57
ちんちんかもかも


641 名前: デフォルトの名無しさん 投稿日: 02/06/20 21:58
100.100.100ってことか
関数作ったほうがいいかも


642 名前: デフォルトの名無しさん 投稿日: 02/06/20 22:02
>>638
標準にはないから、sprintfでchar[]化してから","を入れなされ。


643 名前: デフォルトの名無しさん 投稿日: 02/06/20 22:38
y = a ? b ? c ? A : B : C : D; を

if の形で書き直すとどうなるんですか?


644 名前: デフォルトの名無しさん 投稿日: 02/06/20 22:44
>>643
if (!a) y = D;
else if (!b) y = C;
else if (!c) y = B;
else y = A;


645 名前: デフォルトの名無しさん 投稿日: 02/06/20 22:50
>>644
分かりましたサンクス


646 名前: 638 投稿日: 02/06/20 23:08
あ〜
やっぱ標準ないですよね〜
お世話になってる先輩から
標準であるよ〜って言われたんで
新たに関数領域を作っていたんですが
注意されてから必死こいて探したんですけど
なくて(笑
とりあえず、何もなかったことにします(笑
ありがとうございました。。。


647 名前: デフォルトの名無しさん 投稿日: 02/06/20 23:34
>>630
(゚д゚)ぽかーん


648 名前: デフォルトの名無しさん 投稿日: 02/06/20 23:53
>>646
あんなんロケール依存だから標準で入れるのは難しいだろう。


649 名前: デフォルトの名無しさん 投稿日: 02/06/21 00:16
>>648

locale で、

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

とか定義されてるから、難しくはないと思う。需要が少ないだけと思う。


650 名前: デフォルトの名無しさん 投稿日: 02/06/21 00:22
おお、locale.h なんてあったのか。
使ったことなかった…


651 名前: デフォルトの名無しさん 投稿日: 02/06/21 00:40
(´・∀・`)へー
さすがローカル。


652 名前: あ、釣られちゃった 投稿日: 02/06/21 00:54
>>651
誰も釣られていないようだね。かわいそうに。


653 名前: デフォルトの名無しさん 投稿日: 02/06/21 01:02
>>630は神ですか?


654 名前: shige 投稿日: 02/06/21 01:10
XBMまんせー


655 名前: デフォルトの名無しさん 投稿日: 02/06/21 01:57
すみなせん、今まで整数から文字に変換するときはitoaを使っていたのですが、sprintfのほうがいいのかお前ら。


656 名前: デフォルトの名無しさん 投稿日: 02/06/21 02:01
>>655
好きにしろゴミ人間。


657 名前: デフォルトの名無しさん 投稿日: 02/06/21 02:03
ゴミだと尾おおおおおおおおおおおおおおおおおおおおおお奥羽うううううううううううううううううううううう嗚呼あああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ああああああああおああああああrrrっらロおおおおおおおおおおおおkじゃ尾krじゃお子rじゃぎじゃえrがぇrgjrsじjrs


658 名前: デフォルトの名無しさん 投稿日: 02/06/21 02:05
おしい!もう少しでじゃい子!


659 名前: デフォルトの名無しさん 投稿日: 02/06/21 02:06
>>655
itoa()は標準の関数じゃないから移植性がないぞな。便利なんだけどね。


660 名前: デフォルトの名無しさん 投稿日: 02/06/21 02:10
>>630
僕が使ったことのあるアセンブラは、バイナリファイルをincludeなんてできなかった気がするんですが、
Cコンパイラ付属のリンカで扱える形式ではき出せるなら、名前の付け方に注意すればアセンブラとCのリンクはできるはずです。

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

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

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

>>655
sprintfはあまり安全じゃない面があります。
僕はitoaは使ったことないけど、snprintfを使います。


661 名前: デフォルトの名無しさん 投稿日: 02/06/21 02:21
>659
なるほど〜。


662 名前: デフォルトの名無しさん 投稿日: 02/06/21 02:24
すみなせん。makefileってなんですか?


663 名前: デフォルトの名無しさん 投稿日: 02/06/21 03:27
>>662
人生の敗北者が使うファイルです


664 名前: デフォルトの名無しさん 投稿日: 02/06/21 03:31
それを触れたら絶対時間で生きなければいけないと言う罠。


665 名前: デフォルトの名無しさん 投稿日: 02/06/21 03:33
make・・・・説明しだしたら小一時間ではとても足りそうにない。汗


666 名前: デフォルトの名無しさん 投稿日: 02/06/21 03:41
automake/autoconfのいい解説サイトを教えてください


667 名前: デフォルトの名無しさん 投稿日: 02/06/21 05:47
http://shimaki.hoops.ne.jp/autoconf/book1.html


668 名前: デフォルトの名無しさん 投稿日: 02/06/21 05:50
>>396
UNIXプログラミング質問すれ
http://pc.2ch.net/test/read.cgi/tech/992057422/l50


669 名前: 630 投稿日: 02/06/21 06:12
 なにやら、ネタだか真性馬鹿と思われちゃったみたいですね。
 愚か者なのは認めますが(^^;

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

 新たな環境で目的を急ぎすぎました。 あはは。



670 名前: デフォルトの名無しさん 投稿日: 02/06/21 06:27
>>669
この文章読んでも、「ネタだか真性馬鹿」としか思えない。


671 名前: デフォルトの名無しさん 投稿日: 02/06/21 07:48
unsigned char test[] = {
#include "test.wav"
};

凄い発想だ。
>>669で言い訳しているようだが、何の弁解にもなっとらん


672 名前: デフォルトの名無しさん 投稿日: 02/06/21 07:59
>>671
でもこれくらい柔軟な発想が出来た方が(略

>>669
面倒かなあ・・・・ファイルサイズ分freadするだけだろ?


673 名前: デフォルトの名無しさん 投稿日: 02/06/21 09:37
>>630
エラー出なくなる方法ハケーンしたよ!

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



674 名前: デフォルトの名無しさん 投稿日: 02/06/21 10:00
>>673
つまらんこといちいち書くな。だいいちエラーなくならないし。


675 名前: デフォルトの名無しさん 投稿日: 02/06/21 10:49
ワラタ。


676 名前: デフォルトの名無しさん 投稿日: 02/06/21 11:31
>>669
test.wav
01 02 03
なバイナリファイルを
test_wav.c
unsigned char test_wav[] = {
0x01, 0x02, 0x03
}
に変換するツールの作成なんて入門レベルだぞ。
5分で書け。

それからこの方法はそれほど特殊というわけではないよ。
もちろんメリット・デメリットをよく理解しておく必要はあるけど。


677 名前: デフォルトの名無しさん 投稿日: 02/06/21 12:17
いい加減、行末にセミコロンを付けろって。


678 名前: _ 投稿日: 02/06/21 13:02
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;のアドレス配置って変わってしまいますか?



679 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:04
>678
危険なかほりがぷんぷんする


680 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:05
つぅかそれのどこがスタックだと小一時間・・・


681 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:11
おとなしくローカル変数でstruct Stack作ればいいじゃん。
それを渡せば吉


682 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:11
>>678
Cで10年プログラムをしてますが、そういう組み方を
発想したことがありませんでした。


683 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:12
>680
あるいみスタック。


684 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:15
>>681
禿同


685 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:16
>>678
論外

っつか、なんで素直に

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

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

としないのかと小一時間…。


686 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:17
けど、こいつは大物になると思うぞ。
この人並み外れた発想力と工夫。
こいつに論理とアーキテクチャをたたき込んだら驚異になる存在だ。

バカにするのではなく認める方向で行こう。


687 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:18
>>685
さらに禿同


688 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:20
>>686
う〜ん。なんとか禿同。
変に思わないでね。ホントに禿同なんだよなぁ。


689 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:24
俺だったらこう定義するね。
struct foo {
  int a;
  int b;
  char c;
};

つーか>>685はコンパイルエラー出るね。
ごめんね、つついて。


690 名前: _ 投稿日: 02/06/21 13:28
>>685
void func()内では普通にa,b,cとアクセスしたいんです。
foo.a, foo.b, foo.cってするより。
これが一番速そうなので。。。


691 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:28
速さは変わらんでしょ?


692 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:32
>>678
> int a; char b; int c;のアドレス配置って変わってしまいますか?
それどころか、最適化によっては b とか c がレジスタ変数になるかも知れん
ぞ。

>>686
> けど、こいつは大物になると思うぞ。
んなわけねーだろ。


693 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:32
>>690
絶対止めろ。死んでもやめろ。


694 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:34
ホームラン級のバカだな


695 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:35
自チームのゴールにドライブシュート級のバカだな


696 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:39
>>690
まずは、普通に組め。どうしても速くしたい所があったら、ここで聞け。
そうすれば、みんなハッピーになれる。
あまりにも、バカバカしい書き込みはスレが荒れるから止めてくれ。


697 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:40
685の作戦>>>>>>>>>>>>>>>>>>>>>>>>>>>グローバル変数>>>∽>>>678の作戦


698 名前: _ 投稿日: 02/06/21 13:41
>>692
なるほど。。。最適化されないようにvolatile?とか付けても駄目ですか?


699 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:42
>698
速度を求めてるのに、最適化を防いでどうするのよ?


700 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:45
汲んでみたところで、コンパイルスイッチでアセンブラコード
に落として、ステート数などを自分で計算するのもよろし。


701 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:45
>>698
最適化されないようにしたら遅くなるじゃん。
つーか、「速くなりそう」とか勘でやるんじゃない。ちゃんと計測しろ。


702 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:50
>>698
無駄な抵抗な罠。


703 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:51
inline


704 名前: _ 投稿日: 02/06/21 13:51
>>699, 701, 702
ほんとだw;。。。やっぱり駄目か。。。
素直にstruct Stack{ int* a; char* b; int* c };としてother_func()
前に代入して見ます。
(他の関数にもローカル変数を渡す可能性があるので)
さすがム版煽りが激しいですね>_< 逝ってきます。。。


705 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:52
>>704
全然素直じゃない罠。


706 名前: 700 投稿日: 02/06/21 13:53
>>703
それで行こう!
ま、プログラム容量は増えるけど。


707 名前: デフォルトの名無しさん 投稿日: 02/06/21 13:53
>704
まだ何か考え違いをしている


708 名前: 700 投稿日: 02/06/21 13:55
あれ?ここってsage進行?



709 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:00
>>704
素直に>>685にしとけって。その方法は遅くなるだけだぞ。


710 名前: 696 投稿日: 02/06/21 14:02
>>704
煽り ? どこがよ ? >>696 にも書いたけど、お前の書き込みの方が有害だぞ。

>>708
じゃないけど、くだらん話題には sage が当然でしょ。


711 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:04
>>710
わかった。お前の性格が常に煽りモードなのか。
人間関係築け。こんなところで遊んでないで。


712 名前: 696 投稿日: 02/06/21 14:10
>>709
つーか、こいつなら実体の確保を忘れて、「プログラムがあぼーん
されますぅ...」とか言ってきそう。


713 名前: 700 投稿日: 02/06/21 14:15
もうやめようYO!
どうせ>>704はいないんだしさ。


714 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:18
配列を昇順に並べ替え、並べ替えた結果を画面に出力するプログラムを作成せよ。
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]=']';


715 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:20
> 配列を昇順に並べ替え、並べ替えた結果を画面に出力するプログラムを作成せよ。

なに命令してんだよ。
土下座して教えを乞う立場だろうが。
バカ学生は死んでろ。



716 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:23
つーか、縦にずらずら書かんでほしいよ。


717 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:26
system("cat >>714 | sort > result.txt");


718 名前: 696 投稿日: 02/06/21 14:29
>>711
オマエモナー


719 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:31
>>714
配列を昇順に並び替える ? できないよ、そんなこと。配列の中身じゃ
ねーのか ? とりあえず、qsort() あたりを調べたらどうよ。


720 名前: 700 投稿日: 02/06/21 14:37
宿題ならライブラリとか使わないで、自力関数作りなさい。
forとifで!



721 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:39
もしもー


722 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:41
ピアノがー


723 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:44
弾けたならー


724 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:45
>>714
つーか、「昇順」って何を基準に「昇順」なんだ?
誰だ、そんな超下流でタコな問題を出した禿げは?


725 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:45
>>717
厨房は大概ゲイツな罠。



726 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:45
どうせjis順だろ


727 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:46
なんだか荒れてきたな。
荒れるのも分かる気がするけど。


728 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:55
int** a[10][10][10][10][10];

何バイト確保されるか答えなさい。


729 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:56
sizeof(a)バイト


730 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:56
あほくさ


731 名前: デフォルトの名無しさん 投稿日: 02/06/21 14:58
どこの専門学校だよ。
ダメな問題ばっかり。


732 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:03
qsortより早いソートを考えなさい。



733 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:06
>>732
O(n/2)のソート知ってるよ。


734 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:06
presort


735 名前: 732 投稿日: 02/06/21 15:15
ぷ。ひっかかったな。qsortより速いじゃなくて早いんだから、qsortより前に開発されたソート手法ならなんでもいいんだよ。ぷぷ・・・


736 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:18
はあ。カロリーメイト食お。


737 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:18
>>735
おまえqsortとクイックソートを混同してないか?


738 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:22
>>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;
}



739 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:30
>>737
qsortはクイックソートじゃないのか?


740 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:33
>>739
実はバブルソートでもばれない罠。


741 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:34
>>739
実は、正確にはクイックソートじゃない。


742 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:42
クイックソートじゃない実装の qsort があるという意味?
一般的にっていうこと?


743 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:46
quick sortが最速だった時代はもう終わったのさ。


744 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:47
>>742
区間が短くなったら挿入ソートとか選択ソートに切り替える方式の
多段ソートって事だろ


745 名前: デフォルトの名無しさん 投稿日: 02/06/21 15:48
#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");
}



746 名前: 742 投稿日: 02/06/21 15:50
なるほど、そういうことでしたか。


747 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:02
>>745
ソートーあほですべ。



748 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/21 16:05
つーかqsort()がクイックソートを使うことなんてどこにも規定されてない。


749 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/21 16:06
>>676
xxd -i


750 名前: 738 投稿日: 02/06/21 16:08
せっかく書いたのに誰も何もいってくれない。
ここは悪いインターネットですね。


751 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:13
>>748
どこにも ? VC++ とかなら書いてあるぞ。


752 名前: 742 投稿日: 02/06/21 16:16
規格で決められてないということじゃない?
実装は実装者依存だったはず。


753 名前: ANSl 投稿日: 02/06/21 16:18
漏れに何か用でも?


754 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:19
>>750
750ゲトオメ。
ここは凄いインターネットですな。


755 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:25
>>753 漏れ漏れ野郎氏ね。


756 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:26
#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();
}
}



757 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:26
>>750
少なくとも、char は unsigned char にしとけ。
後は、悪いけど見る気にもならない。


758 名前: 756 投稿日: 02/06/21 16:27
main(){
以外でおかしいところあったら教えてください


759 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:27
#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();
}
}



760 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:27
#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();
}  
}



761 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:29
人間として根っこの部分が決定的に間違ってる。


762 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:33
>>756
何故に 10 % 0 なら "計算できません" と表示するのに 10 / 0 なら
kekka1 = 0 と表示するのか小1時間...

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

1. switch() 文を覚えろ。
2. scanf() は使うな。


763 名前: 735 投稿日: 02/06/21 16:41
クイックソートを略せばqsortと言うだろ。


764 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:43
>>763
qualityless sort


765 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:44
宿題みせるバカ学生は、プログラム以前のことを覚えてこいや。


766 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:44
iwanai


767 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:45
C言語って何があれば遊べますか?


768 名前: 735 投稿日: 02/06/21 16:45
なんだそりゃあ。詐欺じゃねーか。


769 名前: 742 投稿日: 02/06/21 16:47
最初にqsortなんて名付けてしまったのが悪い。


770 名前: 756 投稿日: 02/06/21 16:47
>>765
何で宿題ってわかった?来週までに出さないとやばいんです


771 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:50
>>770
あなたにこんなもん作れるわけがない。


772 名前: デフォルトの名無しさん 投稿日: 02/06/21 16:51
>>770
http://pc.2ch.net/test/read.cgi/tech/1024592344/


773 名前: 762 投稿日: 02/06/21 16:53
>>770
俺の忠告 (特に 2. の方) がきけねぇやつは、落第でも赤点でも取りやがれ。


774 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:07
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;
}


775 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:09
if((c=='/' || c=='%') && b==0) d=0;

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


776 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:12
便乗ですが int が 4バイトの場合でも %d でいいの?


777 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:14
>>776
%ld


778 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:15
776>>777 さんきゅです。


779 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:31
>>776
int なら "%d" でいいよ。たとえそれが long int と同じでも。


780 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:52
>>777
あほ!


781 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:54
bsearchも別にバイナリサーチを使って実装しなくてもいいんだよね。
他の方法を使う奴は馬鹿だと思うけど。


782 名前: デフォルトの名無しさん 投稿日: 02/06/21 17:58
可変長引数の関数の...部分に渡す引数は渡す前に
signed char, short, long, etc. → signed long
unsigned char, short, long, etc. → unsigned long
float → double
に自動的にキャストされる。
これが理由でprintf系はintだろうとcharだろうと%dでOK。
scanf系は%ldとか使い分けなきゃならない。

・・・で、OK?


783 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:00
>>782
intのサイズと%d,%ldの違いに何か関係あるの?


784 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:02
読込むときは格納先の大きさがハキーリしてないといけないから
使い分ける必要があるんだよね。


785 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:02
>>783
だって4バイトの変数を2バイトしか読まず評価したらだめっしょ。


786 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:03
intは%d,longは%ld
これはいいんだが、size_tのようにどんな型にtypedefされているのか分からない型はどうすればいいんだろ・・


787 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:03
>>785
intが4バイトの環境なら%dも4バイト読みそうなもんだけど、違うの?


788 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:04
>>785
評価先でもintの大きさは同じだぞ(笑)


789 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:05
>>786
longで読んどいて後で代入・・・とかになるかな?


790 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:21
>>786
何にtypedefされてるか調べれ。

char型に%dで読み込んだらその変数以下が壊れたことはあった。


791 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:23
>>790
ヘッダーファイルを見るというのはあまりよくないような・・・
sizeofで調べるだけでは符号ありか符号なしか分からないし・・・


792 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:25
>>790
昔それやって帰り先のアドレス壊して、
関数の最後にfprintf突っ込んでも
呼出元で関数の次にfprintf突っ込んでも
何も表示されなくて悶絶したことがある(藁)


793 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:26
型もわからん変数使うなってこと。


794 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:26
>>793
ハァ?


795 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:28
793 → >>791


796 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:30
32bit版のランタイムってどうなんだろう。たとえばscanfが%dを
4バイト入力とは解釈しないのかな。


797 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:30
>>791
size_tは符号無しと決まってると思う。
intかlongかはき待ってなかったと思う。


798 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:30
int a に対し、
  a = (条件式)?(-30):(30) +5;
とやると、条件式がfalse のときは a=35 になるんですが、trueのときは a=-30 になってしまいます。
VCでしか試していませんが、条件演算子(?:)のこういう使い方って NGなんでしょうか?


799 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:30
>>793
標準関数が戻り値に使っちゃっていたりするし。strlenとか。
まあscanf系で使うことはないから問題ないけど。


800 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:31
>>796
sizeof(long) == sizeof(int) ならそうなる「可能性はある」。
でも保証されていない。


801 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:31
>>798
なんで?(笑)


802 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:31
やっぱりわからない
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)のあたりから分かり
  ません。   お・た・す・け〜〜〜


803 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:32
>>798
優先順位の問題なんじゃねーの?


804 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:32
>>798
優先順位覚えれ。


805 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:32
>>798
?:演算子は+演算子よりも優先順位が低いから、

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

とやりなせえ。


806 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:33
>>798
a=-30になってしまいますって、当たり前だと思うけど。


807 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:33
>>803-805
ケコーンしようよ


808 名前: 806 投稿日: 02/06/21 18:34
>>805
そういうことしたかったのか


809 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:35
FAQぽ


810 名前: 798 投稿日: 02/06/21 18:36
勉強になりますた。


811 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:42
scanf系で%dが確実に読み込めるサイズは2バイトまでということなのか。
それ以上は処理系依存ということなのかな。


812 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:42
>>802
どこがコードでどこがコメントで何をする関数で何がおかしいのかわからないので
誰もわからないと思われ。


813 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:43
>>811
intのサイズが処理系依存なだけで、sizeof(int)バイト分まで確実に読み込める。


814 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:44
>>811
%dはintを読み込む。


815 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:45
>>802
まず少なくとも;がないからエラーになるな。


816 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:45
ああそっか。
ということは sizeof(int) == 4 でも、%d で OKということか。


817 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:45
ハァァ?


818 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:46
>>816
sizeof(int)==256でもな。


819 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:47
了解>>818


820 名前: デフォルトの名無しさん 投稿日: 02/06/21 18:47
intで機種依存してどーする(藁


821 名前: デフォルトの名無しさん 投稿日: 02/06/21 19:51
C言語ってsex言語という意味ですか?


822 名前: デフォルトの名無しさん 投稿日: 02/06/21 19:54



823 名前: デフォルトの名無しさん 投稿日: 02/06/21 19:54
ゲラゲラ


824 名前: デフォルトの名無しさん 投稿日: 02/06/21 19:56
そう言えば、「はじめてのC」という本があったな(藁


825 名前: デフォルトの名無しさん 投稿日: 02/06/21 19:58
じゃぁCマガはセックスマガジンだ(鬱


826 名前: デフォルトの名無しさん 投稿日: 02/06/21 20:14
6809といういにしえのCPUにはSEX命令というのがあった。
(だから何だよ)


827 名前: デフォルトの名無しさん 投稿日: 02/06/21 20:42
いかにSEXを織り込むかを考える、と。


828 名前: デフォルトの名無しさん 投稿日: 02/06/21 20:48
変数の前には絶対sex、関数にはfuckをつけるってのはどうか?



829 名前: デフォルトの名無しさん 投稿日: 02/06/21 20:52
関数 kiss_my_ass_hole(female_ejaculation *fe)

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


830 名前: デフォルトの名無しさん 投稿日: 02/06/21 21:07
void kiss_my_ass_hole(female_ejaculation *fe)
{
printf("hello world.\n");
}

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




831 名前: デフォルトの名無しさん 投稿日: 02/06/21 21:21
>>820
だいじょぶ? 熱あるみたいだし、今日はもう寝なさい。


832 名前: デフォルトの名無しさん 投稿日: 02/06/21 21:22
>>830
warning: unused parameter `fe'
英語よくわからんけど警告してくれますた。


833 名前: デフォルトの名無しさん 投稿日: 02/06/21 21:31
これはass holeからhelloってことなのかな。
違うかもしれないけど。


834 名前: デフォルトの名無しさん 投稿日: 02/06/21 21:42
>>832
日本語に訳すと、「潮吹くほどケツ穴は使い込まれてません」てこと。


835 名前: デフォルトの名無しさん 投稿日: 02/06/22 01:58
使い込むと潮吹きますか…
うちはまだまだです。


836 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:03
C言語で音のファイル(waveとか)を扱うことって出来ますか?


837 名前: Cは無敵です。 投稿日: 02/06/22 13:04
>>836
どう扱うんだ?
多分出来ると思うけど。


838 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:11
>>836
unlink("hoge.wav");
とか。


839 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:13
>>837
日本語の「あ」「い」「う」「え」「お」「か」・・・と一つずつ
音の入ったファイルがあって、打った文字の音が出るようにしたいんですけど・・・。

たとえば、キーボードから「いってよし」と打ったら
その文字に合う音のファイルを探して、つないで出力するっていう感じです。
音のファイル扱えるならできますよね?


840 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:13
>>838
remove()にしろよ。


841 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:14
>>839
できる。


842 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:26
>>841
できるのですね。
ありがとうございます。


843 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:30
>>842
できることだけ知ってどうするのだろう...。誰も「お前には」と言って
ないんだけど...。


844 名前: デフォルトの名無しさん 投稿日: 02/06/22 13:37
>>843
音に関するC言語のプログラムってやったことなかったんで、
出来るかどうか知りたかっただけです。
私が出来るのかっていうことを聞きたかったわけではないです。


845 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:10
>>844
これができるかどうかも自分で調べられないようなやつにはできない。



846 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:22
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にするとできるんですが。。
なんでだめなのか教えてください


847 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:31
>>846
char *fgets( char *string, int n, FILE *stream );
...
あるいは読み込んだ文字数が n - 1 になるかのいずれかに最初に遭遇する
まで続きます。

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

あと、while() で参照する前に choice を初期化しとかないとそのうち
はまるぞ。あと、malloc() なんてなんで使う ? 普通の配列で良いと思
うが。


848 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:44
下ののような
引数と返り値の型だけが違って、中で行う数値計算は同じ関数
を、ひとつにまとめることはできるのでしょうか?

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

int kakezan2(int a, int b)
{
  return a*b;
}


849 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:44
>>846
リファレンスマニュアル読めよ。
数字読み込むだけなら、
scanf("%d", &choice);
とかのほうが素直と思われ。


850 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:48
>>848
マクロにするとかはだめ?
#define kakezan(a, b) (a * b)



851 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:53
>>848
template


852 名前: デフォルトの名無しさん 投稿日: 02/06/22 15:59
>>849
scanf() は止めた方が良いと思う。


853 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:06
>>852
なんで?遅いから?メモリ食うから?


854 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:28
>>853
挙動が理解しにくいから。
>>864 の fgets() + atoi() を >>849 のように scanf() に変えてから
プログラム実行して、入力に "A" + 改行 を入力したら、無限ループに
なるよ。
最低 fgets() + sscanf() にしとくべき。


855 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:30
>>853
FAQ読めや


856 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:40
クラスの定義の仕方って下のようでいいんでしょうか?
コンパイルできないんですけど・・・

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




857 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:46
>>856
頼むから、「コンパイルできないんですけど・・・」じゃなくて、
エラーメッセージとか書いてくれ。


858 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:46
>>856
クラス使いたいならCじゃなくてC++でしょ。


859 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:49
>>854
なる殻。そいや最近fscanfしかつこてなかったからscanfの動き忘れとった。
余談だけどprintfとかscanfとかって内部でヒープからメモリ確保しよるよな?
前これしらんくてエライ目にあった。

>>855
よんどくよ。


860 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:50
定義(というか宣言)は間違ってない。>>856



861 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:52
>>856
外部からクラスメンバにアクセスするときはpublicメンバにしないとだめ。



862 名前: デフォルトの名無しさん 投稿日: 02/06/22 16:57
>>859
> 前これしらんくてエライ目にあった。
具体的には ?


863 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:05
>>862
とあるマシンで自作のメモリマネージャ動かす為に、
プログラム起動直後にめいっぱいのメモリをmallocしたら、
意味不明のハングが起き始めた。
結局printfがヒープからの確保ヘコッてたみたい。


864 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:28
>>863
なるほど、そう言うこともあるんだね。了解。


865 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:42
おまえらいい加減にscanf系の仕様を理解しろゴルァ



866 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:49
数とかを入力させるときにscanf使う方がいいですか、それともgetsとatoi使う方がいいですか。


867 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:57
>>866
fgets+strtol


868 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:58
cinがいいと思います。


869 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:58
>>866
時と場合による。


870 名前: デフォルトの名無しさん 投稿日: 02/06/22 18:20
>>866
gets() は論外として、エラー処理をマジメにやるなら入力と解析は別にするのが
無難。

>>869
そうだね。場合によっては lex + atoi とか言い出すかもしれん。


871 名前: デフォルトの名無しさん 投稿日: 02/06/22 18:27
>>865
scanf() 系なんていらねーよ。どうせ使いもんにならないし。


872 名前: デフォルトの名無しさん 投稿日: 02/06/22 18:32
>>871
使い方による。
いらねーなら使わなければよい。


873 名前: デフォルトの名無しさん 投稿日: 02/06/22 18:44
scanfを使うのが最適な場合ってどんなときですか?


874 名前: デフォルトの名無しさん 投稿日: 02/06/22 18:47
>>873
決まった書式のデータファイルとかを読み込むときで、
読み込みルーチン作るのが面倒なとき?


875 名前: デフォルトの名無しさん 投稿日: 02/06/22 20:14
>>873
バッファオーバーフローが絶対におきないとき。


876 名前: デフォルトの名無しさん 投稿日: 02/06/22 20:20
>>873
ロボットがキーボードを叩く時。


877 名前: デフォルトの名無しさん 投稿日: 02/06/22 22:39
>>846

パッと見ただけだけど。

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

配列のサイズは適当に変えて。


878 名前: 877 投稿日: 02/06/22 22:41
本当にパッと見ただけだった。(鬱
877 はなかったことに。


879 名前: デフォルトの名無しさん 投稿日: 02/06/22 22:53
>>878
かわいそうなくらい痛い


880 名前: 877 投稿日: 02/06/22 22:57
だって、その下で malloc 使ってるとは思わなかったんだもん。。。


881 名前: 中学生 投稿日: 02/06/22 22:59
彼女とはまだCすんの早いかな〜
Aまでで押さえといた方がいい?


882 名前: デフォルトの名無しさん 投稿日: 02/06/22 22:59
>>880
そゆことじゃなくて、その下のレスたちは見てないのかよ


883 名前: 877 投稿日: 02/06/22 23:00
>>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 も参考に。



884 名前: manko_chinko ◆c2rpKRNM 投稿日: 02/06/22 23:01
>>881
俺中学生だけどCやってるよ。
AってAPL?それにしても彼女と一緒にやるって事は本気なんだね。
がんばって。


885 名前: デフォルトの名無しさん 投稿日: 02/06/22 23:02
>>884
ALGOLだと思われ。


886 名前: 中学生 投稿日: 02/06/22 23:04
>>884
でもDが恐いよ〜


887 名前: デフォルトの名無しさん 投稿日: 02/06/22 23:07
>>886
Delphiなめんな。クソ人間。


888 名前: manko_chinko ◆c2rpKRNM 投稿日: 02/06/22 23:07
>>886
ごめん俺寡聞だからDってのしらない。(言語はAからZまであると誰か言っていた。)
もしかしてDelphiのことかな。Delphiってこわいかな?Vbとかわらんじゃん


889 名前: デフォルトの名無しさん 投稿日: 02/06/22 23:09
>>888
あんなクソ言語と一緒にしないで・・・おねがい。


890 名前: manko_chinko ◆c2rpKRNM 投稿日: 02/06/22 23:10
K&R C ってカーニハンとリッチーのセックス暴露本らしいね。


891 名前: manko_chinko ◆c2rpKRNM 投稿日: 02/06/22 23:11
>>889
RADという点で変わらないと言っただけ


892 名前: デフォルトの名無しさん 投稿日: 02/06/22 23:12
>>891
C#とかもっとましなたとえがあるだろう・・・。
VBが簡単!ってじだいは終わったし。


893 名前: デフォルトの名無しさん 投稿日: 02/06/22 23:12
A B C D E は〜♪ E気持っち


894 名前: 投稿日: 02/06/23 00:04
精子の運動をプログラミングしたいのですが、どうすればよいのでしょうか。


895 名前: デフォルトの名無しさん 投稿日: 02/06/23 00:06
まずは分析だ。放出して顕微鏡で観察しる。


896 名前: 投稿日: 02/06/23 00:08
どうせなら3Dで卵子に到達するまでをプログラミングしたいのですが。
卒業研究にしたいぐらいです。


897 名前: デフォルトの名無しさん 投稿日: 02/06/23 00:13
俺の精子は元気ないからだめだ。
やめてくれ


898 名前: デフォルトの名無しさん 投稿日: 02/06/23 00:33
ttp://www.hansen.co.jp/Marchandise/syouhin/Hamilton/hamilton.html

これ買え。


899 名前: デフォルトの名無しさん 投稿日: 02/06/23 02:30
「,」で区切った文字列"100,100,1000,2000,10,10"を順番に
取り出したいんですけど良い方法はありますか?


900 名前: 899 投稿日: 02/06/23 02:36
配列なんかに入れれば良いです。
100
100
1000
2000
10
10
の順番に。


901 名前: デフォルトの名無しさん 投稿日: 02/06/23 02:56
>>899
ふつーにループ回して、チェックすれば?


902 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/23 03:15
>>899
strchr()かstrcspn()



903 名前: デフォルトの名無しさん 投稿日: 02/06/23 03:25
最速の素数判定(Nが素数であるか田舎を判定しる)プログラム教えれ


904 名前: デフォルトの名無しさん 投稿日: 02/06/23 04:03
>903
Nの範囲は?


905 名前: デフォルトの名無しさん 投稿日: 02/06/23 04:27
http://www5d.biglobe.ne.jp/~yakamome/formation/formation_giko.html
やっぱこれが一番良かった。


906 名前: 投稿日: 02/06/23 05:08
>905
すれ違いだけどワラタ
俺持ってるよフォーメーションゼット。


907 名前: 846 投稿日: 02/06/23 12:43
>>847
fgetsの仕様みたら理解した。
n-1をnだと勘違いしてました。逝ってきます
アドバイスthxです。


908 名前: 847 投稿日: 02/06/23 15:11
>>907
つーか、一文字だけ入力したいからと言って fgets(..., 2, ...) なんて普通
書かないぞ。改行コードが入力バッファに残ってしまうからな。
>>883 も書いてるけど、入力バッファーを越えないための制限値と思うべきだよ。


909 名前: デフォルトの名無しさん 投稿日: 02/06/23 16:57
100*100=1KBの配列をグローバルでひとつ
400*400=16KBの配列をグローバルでひとつ
確保していますが,まだまだ大丈夫でしょうか?
業務用アプリとかプロのゲームとかでは,こんなの序の口でもっと確保してるよゴラァって感じなんでしょうか?


910 名前: デフォルトの名無しさん 投稿日: 02/06/23 17:00
17K程度で心配になるって、どんな環境だろう…
組み込みかな?
にしても、業務用とかプロのゲームだとなんで(略
あと、100*100は1Kじゃねーぞ。


911 名前: ミスった 投稿日: 02/06/23 17:05
100*100=10KBの配列をグローバルでひとつ
400*400=160KBの配列をグローバルでひとつ
確保していますが,まだまだ大丈夫でしょうか?
業務用アプリとかプロのゲームとかでは,こんなの序の口でもっと確保してるよゴラァって感じなんでしょうか?


912 名前: デフォルトの名無しさん 投稿日: 02/06/23 17:06
>>910
組込みやってる奴ならこんなバカな質問しないだろう。

>>909
そのマシンにメモリーはいくつ積んでんだよ。


913 名前: デフォルトの名無しさん 投稿日: 02/06/23 17:10
8bitパソコンでプログラム組んでるのかい?兄さん。
今のWindowsだったら1MBや10MBくらいまで確保しても別にOKだ。

さらにいうなら確保しても使わなければOSが無視してくれる。


914 名前: デフォルトの名無しさん 投稿日: 02/06/23 17:15
>911
夕飯はまだ早すぎじゃないか?


915 名前: デフォルトの名無しさん 投稿日: 02/06/23 18:32
そろそろいいんじゃないか


916 名前: デフォルトの名無しさん 投稿日: 02/06/23 20:48
>>899
strtok()とかでいいんじゃない?


917 名前: 初C者 投稿日: 02/06/23 21:45
#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文実行する手前で、強制終了されます。
なんでですか?


918 名前: デフォルトの名無しさん 投稿日: 02/06/23 21:46
>917
aに機種名は入れられん


919 名前: 初C者 投稿日: 02/06/23 21:48
>>918
半角英数字でも?


920 名前: デフォルトの名無しさん 投稿日: 02/06/23 21:50
>917
ためしにchar a[80]にしてみなされ


921 名前: 920 投稿日: 02/06/23 21:56
あ、char a[80];にしたら、scanf("%s",a);ね。


922 名前: デフォルトの名無しさん 投稿日: 02/06/23 21:58
すんません、VCつかってるんですが、基本っぽいもんはおぼえたんですが、MFCをつかわないで、Cのウィンドウズプログラムや、ゲーム作成、できればDXを超初心者からわかりやすく解説されてあるサイトはないでしょうか?お願いします。


923 名前: デフォルトの名無しさん 投稿日: 02/06/23 21:58
>>917
いいかげん、scanf() 使うのヤメレ。


924 名前: デフォルトの名無しさん 投稿日: 02/06/23 22:02
>>922
ウィンドウズなプログラムは猫でもとかは?
(http://www.kumei.ne.jp/c_lang/)
DirectXはSDKのサンプルを見たらどうでしょう?


925 名前: デフォルトの名無しさん 投稿日: 02/06/23 22:04
924>>どうもありがとうございます。しかし、猫のところはVCのVERが古いみたいで、こちらは6.0をつかっていまして、
かいてあるとおりにやっても動作しないのです。微妙になにかがちがうんでしょうけど。
SDKってのはMSにおかれてるんでしょうか?


926 名前: デフォルトの名無しさん 投稿日: 02/06/23 22:04
>>923
scanfを馬鹿にするな

Scanf擁護委員会一同より。



927 名前: 初C者 投稿日: 02/06/23 22:07
>>920
できました!ありがとうございます。
[80]って、80文字入れれるって事ですか?


928 名前: デフォルトの名無しさん 投稿日: 02/06/23 22:09
最後の要素には'\0'が入るから79文字入る。


929 名前: 初C者 投稿日: 02/06/23 22:14
>>928
なぜ、 char a; ではだめなんでしょうか?
文字列の場合は [ ]を使って文字数を指定しないとだめなんですか?


930 名前: デフォルトの名無しさん 投稿日: 02/06/23 22:16
Cでは文字列を文字の配列として表現するためです


931 名前: manko_chinko ◆c2rpKRNM 投稿日: 02/06/23 22:37
>>929
あなたBASICやってたでしょ?


932 名前: 初C者 投稿日: 02/06/23 22:45
>>931
すごいコテハンすね。
BASICやってないですよ。プログラム言語はCが初めてです。
もうそろそろ学校でVB習うと思いますが。
なんでそう思われました?


933 名前: manko_chinko ◆c2rpKRNM 投稿日: 02/06/23 22:48
>>932
べつに。俺もBASICやってて、C始めたとき最初文字列配列のところで??だったから


934 名前: デフォルトの名無しさん 投稿日: 02/06/23 23:05
>>932
文字は数値を読み替えてるだけだってことをきちんと理解しろよ


935 名前: デフォルトの名無しさん 投稿日: 02/06/23 23:27
char text[256];
fprintf(fp,text);
でEUCが混じった文字列を書き込もうとすると落ちるのですが
どうすればいいのでしょうか?


936 名前: デフォルトの名無しさん 投稿日: 02/06/23 23:28
せめてfprintf(fp, "%s", text);


937 名前: 935 投稿日: 02/06/23 23:37
>>936
ありがとうございます。一発で動きました。
しかし、printf()系の関数で、別に表示したい変数が存在しない場合
fprintf(str);と書くのは文法違反なのですか?
今までのコードにたくさん存在するのですが・・・。


938 名前: デフォルトの名無しさん 投稿日: 02/06/23 23:39
>935
表示する文字列に%とかが入っていると死ぬ


939 名前: デフォルトの名無しさん 投稿日: 02/06/23 23:42
>>937
stdio.hを(以下略


940 名前: 935 投稿日: 02/06/23 23:44
>>938
なるほろ・・・。
それで引数を探しに行って死んでたわけですね。
htmlを適当に読んで吐き出す仕様なのでそういう文字列が入ると
やばいのですね。
今からやばいところ書き直します・・・。


941 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/24 03:03
"%s"で出すなら素直にfputs()使えよ。


942 名前: デフォルトの名無しさん 投稿日: 02/06/24 04:05
人のソースを参考にしながらプログラムの勉強をしているのですが,その中でπの値を
「tan2(1,1)*4」で書いてあるのがありました(というか,「atan2(1,1)*4*2」というのがあって
最初なにをやっているか分からなかった).
これっってマクロのM_PIを使わないで,「tan2(1,1)*4」でπの値を求めるのは,なんか
メリットってあるのでしょうか?
googleで"tan2(1,1)*4"で検索したら約177件もひっかかったことから,なんか意味が
あるような気がするのですが,なんでしょう?


943 名前: デフォルトの名無しさん 投稿日: 02/06/24 04:11
>942
俺は数学を知ってるぞ、と見せ付けることが出来ます。


944 名前: デフォルトの名無しさん 投稿日: 02/06/24 04:15
>>942
tan2→atan2
遅いだけ。しかし標準ではPIの値はdefineされてないから便利な
こともある。


945 名前: デフォルトの名無しさん 投稿日: 02/06/24 06:55
「 tan (π/4) = 1 」 高校数学の教科書を読もう。

ところで、tan2( ) とか atan2( ) って初めて見るんだけど
これって標準ライブラリに入ってるの?



946 名前: 942 投稿日: 02/06/24 08:14
>>942 の「tan2(1,1)*4」は「atan2(1,1)*4」の間違いです.すまむ.
>>944
M_PIのマクロって標準じゃなかったのですね.
たしかにdefineされてなかったら,atan2(1,1)*4でπの値を出すという
のは便利ですね.
>>945
tan2()はtypoです.atan2()はmath.hに入ってますよ.


947 名前: デフォルトの名無しさん 投稿日: 02/06/24 08:37
#ifndef M_PI
#define M_PI (atan2(1,1)*4)
#endif
とやろうと思ったが、M_PIってmath.hにあるし。


948 名前: 名無しさん@カラアゲうまうま 投稿日: 02/06/24 08:45
M_PIはANSI Cなら持ってるはず。
古い処理系でもコンパイルできるようにするためだろう。


949 名前: 945 投稿日: 02/06/24 08:51
>>946
あ、ほんとだ atan2( ) あるね
/* 負け惜しみ : それなら atan(1)*4 の方がいいと思うが */

ひとつ賢くなりやした。さんくす



950 名前: デフォルトの名無しさん 投稿日: 02/06/24 10:57
defineよりconst double M_PI = atan2(1,1)*4;のほうが
速くならないですか?


951 名前: デフォルトの名無しさん 投稿日: 02/06/24 11:19
次スレ〜


952 名前: デフォルトの名無しさん 投稿日: 02/06/24 13:23
>>903
Nの平方根以下の素数で割り切れなければNは素数
多分これが一番計算少ない


953 名前: デフォルトの名無しさん 投稿日: 02/06/24 14:03
>>948
それなら
#include <math.h>
#ifndef M_PI
#define M_PI 3.14〜
#endif
とすればいいだけなので、単にM_PIを知らなかっただけではないかと


954 名前: 846 投稿日: 02/06/24 18:38
>>883
すみません、見逃してました(;´Д`)
第2引数を10にするのは、\nと\0を入れるためと解釈していいですか?
>>908
入力バッファに残ると後のfgetsとかscanfとかに影響してしまうためですか?


955 名前: デフォルトの名無しさん 投稿日: 02/06/24 20:45
新スレ、立てました

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



956 名前: 883 投稿日: 02/06/24 22:49

>>954

http://pc.2ch.net/test/read.cgi/tech/1024918442/13



957 名前: デフォルトの名無しさん 投稿日: 02/07/02 01:49



958 名前: デフォルトの名無しさん 投稿日: 02/07/02 22:31



959 名前: デフォルトの名無しさん 投稿日: 02/07/03 00:44



960 名前: デフォルトの名無しさん 投稿日: 02/07/03 00:47



961 名前: デフォルトの名無しさん 投稿日: 02/07/03 00:55



962 名前: デフォルトの名無しさん 投稿日: 02/07/03 01:12



963 名前: デフォルトの名無しさん 投稿日: 02/07/03 02:35



964 名前: デフォルトの名無しさん 投稿日: 02/07/03 03:48



965 名前: デフォルトの名無しさん 投稿日: 02/07/03 23:35



966 名前: デフォルトの名無しさん 投稿日: 02/07/04 01:10



967 名前: デフォルトの名無しさん 投稿日: 02/07/04 02:38



968 名前: デフォルトの名無しさん 投稿日: 02/07/04 08:07



969 名前: デフォルトの名無しさん 投稿日: 02/07/04 08:14



970 名前: デフォルトの名無しさん 投稿日: 02/07/04 21:50



971 名前: デフォルトの名無しさん 投稿日: 02/07/04 22:28



972 名前: デフォルトの名無しさん 投稿日: 02/07/05 01:01



973 名前: デフォルトの名無しさん 投稿日: 02/07/05 05:04
きゅ


974 名前: デフォルトの名無しさん 投稿日: 02/07/05 14:46



975 名前: デフォルトの名無しさん 投稿日: 02/07/05 15:46



976 名前: デフォルトの名無しさん 投稿日: 02/07/06 00:38
ま゛


977 名前: デフォルトの名無しさん 投稿日: 02/07/06 00:53



978 名前: デフォルトの名無しさん 投稿日: 02/07/06 01:38
わ゜


979 名前: デフォルトの名無しさん 投稿日: 02/07/06 02:19



980 名前: デフォルトの名無しさん 投稿日: 02/07/06 02:31



981 名前: デフォルトの名無しさん 投稿日: 02/07/06 02:34



982 名前: デフォルトの名無しさん 投稿日: 02/07/07 02:18



983 名前: デフォルトの名無しさん 投稿日: 02/07/07 02:28



984 名前: デフォルトの名無しさん 投稿日: 02/07/07 02:46



985 名前: デフォルトの名無しさん 投稿日: 02/07/07 03:13



986 名前: デフォルトの名無しさん 投稿日: 02/07/07 03:21



987 名前: デフォルトの名無しさん 投稿日: 02/07/07 16:48



988 名前: デフォルトの名無しさん 投稿日: 02/07/07 17:17



989 名前: デフォルトの名無しさん 投稿日: 02/07/07 20:48
う゛


990 名前: デフォルトの名無しさん 投稿日: 02/07/07 21:12



991 名前: デフォルトの名無しさん 投稿日: 02/07/07 21:34



992 名前: デフォルトの名無しさん 投稿日: 02/07/07 21:42



993 名前: デフォルトの名無しさん 投稿日: 02/07/07 21:49



994 名前: デフォルトの名無しさん 投稿日: 02/07/07 22:03



995 名前: デフォルトの名無しさん 投稿日: 02/07/07 22:26



996 名前: デフォルトの名無しさん 投稿日: 02/07/07 22:39



997 名前: デフォルトの名無しさん 投稿日: 02/07/07 22:48



998 名前: デフォルトの名無しさん 投稿日: 02/07/08 00:35



999 名前: デフォルトの名無しさん 投稿日: 02/07/08 00:37



1000 名前: デフォルトの名無しさん 投稿日: 02/07/08 00:37
□□□■■■■■□■□□□■□■■■■□□■■■■□■□□□■□■■■■□□□□
□□□□□■□□□■□□□■□■□□□□□■□□□□■■□□■□■□□□■□□□
□□□□□■□□□■■■■■□■■■■□□■■■■□■□■□■□■□□□■□□□
□□□□□■□□□■□□□■□■□□□□□■□□□□■□□■■□■□□□■□□□
□□□□□■□□□■□□□■□■■■■□□■■■■□■□□□■□■■■■□□□□



1001 名前: 1001 投稿日: Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。



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