C言語なら俺に聞け<35>
レス数が1000を超えています。これ以上書き込みはできません。
0001未定義?ということにしたいのですね? :)
NGNGマターリ未定義論争でもしましょうか。
もちろん質問も受け付けますよ。それがメインですし。
課題丸投げ?それは別スレでやってください。
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
・前スレ <34>
http://pc3.2ch.net/test/read.cgi/tech/1033240509/
コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさん
NGNGgcc
http://gcc.gnu.org/
【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003デフォルトの名無しさん
NGNGhttp://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0004デフォルトの名無しさん
NGNG貧乏で本も買えないのでよろしくお願いします。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGうるさいよ
0007デフォルトの名無しさん
NGNG>貧乏で本も買えないので
立ち読みはできるだろう?
俺が厨房の時は本屋に足繁く通って必要なところ暗記して帰ったもんだが。
0008デフォルトの名無しさん
NGNGプッ
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG> 貧乏で本も買えないので
まず、回線を切ってお金を貯めましょう。
1ヶ月ネットを我慢するだけで本の1冊や2冊簡単に買えます。
0012デフォルトの名無しさん
NGNG【コンパイラ】
gcc
http://gcc.gnu.org/
【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
0013デフォルトの名無しさん
NGNGバスで往復するとバス代だけで本が買えてしまいます。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGパソコンも友達にもらったもです。どうか意地悪しないで教えてください.
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGお前何歳?
コンパイラについてって、コンパイラの何が知りたいんだ?
0019デフォルトの名無しさん
NGNG本も友達から借りるなり、もらったりすれば
0020デフォルトの名無しさん
NGNG仕方ないな。ここは一つ、俺のおすすめサイトを教えてやるよ。
ここさえ読めば誰よりもコンパイラについて詳しくなれる。
http://etlab.mis.ous.ac.jp/knowledge_e/032/menu.html
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGhttp://www.stileproject.com/monkey_sugar.swf
このサイトをまず見ろ
0023デフォルトの名無しさん
NGNG002422
NGNGどういたしました
0025デフォルトの名無しさん
NGNG猫でもなんかで stdio.h の printf関数を覗いてみましょうとありますが、
Includeフォルダの中のstdio.hには
defineがいっぱい書かれているだけで
肝心の関数が見当たりません。
どこにありますか?
0026デフォルトの名無しさん
NGNG通常、C言語のヘッダファイルには宣言しか書いてないので見てもつまらないと思います。
0027デフォルトの名無しさん
NGNGじゃぁ、*.cはどこにおいてあるの?
0028デフォルトの名無しさん
NGNGprintf()関数のソースを見ることはできません。
関数の定義だけがヘッダには書いてあり、実態は
ライブラリ、というコンパイルされた後の関数の固まりで提供されています。
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGなんでもよければLINUXの奴みるとか。
003225=27
NGNG*.objとかそういうやつですか?
sprintf()の戻り値とか
覚えていないので、調べたいのですが
どうしたらいいですか?
このさい奮発してVS.NETの学割版かおうかなぁ。
#なんか俺一人ageてると寂しいけども
#新スレだしいいかw
0035デフォルトの名無しさん
NGNGネットを使うなら、このあたりがいいかもですよ。
ttp://tyrant.chem-eng.kyushu-u.ac.jp/2nd/Programming/Library/Main.asp
ttp://www.bohyoh.com/CandCPP/C/Library/
0037manko_chinko ◆GLc2rpKRNM
NGNGlight-cとかいうC処理系は購入したらライブラリのソースみれます。アセンブリの
0039デフォルトの名無しさん
NGNGVC++とかLSI-Cとか。
フリーで転がってるのにはまずないけど。
0040manko_chinko ◆GLc2rpKRNM
NGNGコーヒーはカフェイン多いから、気になって眠れなくても同じことじゃないんですか?
0041デフォルトの名無しさん
NGNGgccにも無いの?
0042manko_chinko ◆GLc2rpKRNM
NGNGなんだVCにもついてるのか。しらんかった
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGついてるはずだよ。
インストールオプションで指定してないんじゃなの?
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGlibcのソースコードはあるんじゃない?
gccにはついてこなくても。
0047デフォルトの名無しさん
NGNGhttp://ring.astem.or.jp/archives/GNU/glibc/
0048デフォルトの名無しさん
NGNG戻り値を調べる程度ならhttp://www.linux.or.jp/JM/が便利だよ。
セクション3がライブラリ関数。
ただし標準C向けではなく、Linux向けなので注意。
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGCならCコンパイラ使えば?LSI-Cとかさ。
処理系選びも適材適所。
0051デフォルトの名無しさん
NGNG多分メモリの問題じゃないの?
0052デフォルトの名無しさん
NGNG何言ってんの?
0053デフォルトの名無しさん
NGNG逆に聞くけど、Cとしてしか使わない時にLSI-Cが
VC++よりも(価格以外で)優れている点ってあるの?
LSI-Cって試食版のことではないよね?
俺がVC++を使う理由は、統合開発環境が便利
(GUIでの操作/API等のヘルプ/デバッガ/リソースエディタ等々)、
それと最適化が優秀だから。
0054デフォルトの名無しさん
NGNGC用ではなくC++用処理系を使っている時点でそれを証明している。
C++によって生かしてもらっているだけ。跪いて感謝しろよ。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG(゚Θ゚) < どうでもいいよ。
( U) \________
(__(_)))
もっと、コード教えて
0057デフォルトの名無しさん
NGNGLSI-Cって16ビットコンパイラじゃなかった?
int a[10000000];とかできるの?
0058デフォルトの名無しさん
NGNGつーかなんで32bit時代に16bitコンパイラなんて使わなきゃならないんだ。
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG組み込み関係の機能は、VC より LSIC-86 の方が優れてるっぽい。
>>57
そもそも、LSIC-86 は、8086 用だから、int a[10000000]; は無理だろう。(int が 16bit としても、20MB 必要だから。)
http://www.lsi-j.web.sh.cwidc.net/product/c86/
>>58
みんながみんな、Windows とか Linux とかやってるわけじゃないから。
俺も、DOS のために VC++ 1.5 とか未だに持ってるし。
0061デフォルトの名無しさん
NGNG知らないのか?
0062デフォルトの名無しさん
NGNG知らんけど、それがどうかしたのか ?
0063デフォルトの名無しさん
NGNG今win95 C でプログラミングしてます
そこでsleep関数を使うとエラーがでてしまうのですが、使えないのでしょうか?
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG「どんなエラー」か書け。
006663
NGNGDebug/22.exe : fatal error LNK1120: 外部参照 1 が未解決です。
でした
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGWindows なら、Sleep() にしとけ。
ただし、引数は 1/1000秒単位だから、気をつけろ。
006963
NGNGvoid main(void)
{
Sleep(10);
}
22.obj : error LNK2001: 外部シンボル "_Sleep" は未解決です
Debug/22.exe : fatal error LNK1120: 外部参照 1 が未解決です。
てなりました。
使い方まちがってますか?
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNGmainの戻り値はintにしろ。
0072デフォルトの名無しさん
NGNG#include <windows.h>
007363
NGNG007463
NGNGは偽者ですので
#include <stdio.h>
#include <windows.h>
int main(void)
{
Sleep(10);
return 1;
}
で
c:\program files\microsoft visual studio\vc98\include\ole2.h(348) : error C2032: '<Unknown>' : 関数は struct '_OLESTREAMVTBL' のメンバとして定義できません。
cl.exe の実行エラー
となったのですが
0075デフォルトの名無しさん
NGNG007663
NGNG0077デフォルトの名無しさん
NGNGん?何でだろ。
Borland-C++5.5.1やMinGWではちゃんとコンパイルできて動くのだが・・・
0078デフォルトの名無しさん
NGNGVC++ 6.0 でも、コンパイルできる。
もう1回プロジェクト最初から作ってみたら ? > >>74
007963
NGNGためしてくれてありがとうございます。
いろいろやってみたのですがsleep関数はC++だったんですね、Cでやってたものでできませんでした;;;
0080デフォルトの名無しさん
NGNG008163
NGNGありがとうございます。
Cで開いてするとエラーがでて、C++で開いてするとうまくいきました。
C++でしたのを名前をCにしてみてもうまくいきました。
なぜなんだろう・・・
こんなことに付き合ってくれてありがとうございます
0082初心者
NGNGやはりソースを見ながら学習するのが早い?
皆さんはどうやってCを学習しましたか?
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG他の言語で本格的にプログラミングしたことあるの?
0086デフォルトの名無しさん
NGNG他の言語でプログラミング経験があるなら難しくない。
それまでの経験と勘のよさにもよるが
入門書片手に早ければ1〜3日もやればそれなりに使えるようになるだろう。
ポインタの概念で躓く人も多いが他のポインタ言語やアセンブリ言語の経験が
あれば難しくはない。
そうではなくまったくの未経験なら
語学や速記などの他の職業技能などと同じように地道にやるしかない。
好きでやっていていつのまにか習得できてしまったという人も少なくないが(俺もそうだが)
好きなやつが「短期的に」なんて言う訳がないしな。
http://www1.neweb.ne.jp/wa/yamdas/column/technique/21-daysj.html
0087デフォルトの名無しさん
NGNGたがいの値を交換するプログラムをつくりなさい。
って問題があるんですがswapを使わずにつくれますか?
もしつくれたら値の交換でつくるんですか?
アドレスの交換でつくれるんですか?
それとも両方でつくれますか?
アホっぽい質問でごめんなさい
0088デフォルトの名無しさん
NGNGint x,y,*xp=&x,*yp=&y,t;
/* ここで入力 */
t=*xp,*xp=*yp,*yp=t;
0089デフォルトの名無しさん
NGNGいろいろな意味でわからない。値の交換で
ポインターを持ち出す必要あるんだろうか?
例題の趣旨によるけど。ちょっと興味ある。
int* a = &a1;
a1 = b1;
b1 = *a; これは正しくないよ!!と教えるための例題?
0090デフォルトの名無しさん
NGNGQ1 ポインターを使うメリットを教えてください
0091デフォルトの名無しさん
NGNGポインタの勉強だと思う。
0092デフォルトの名無しさん
NGNGポインタを使えってことは、swapを書けってことじゃないの?
0094デフォルトの名無しさん
NGNGわるいでもポインターの必然性があまりにも無くて
あなたのコードに
0095デフォルトの名無しさん
NGNGそれは俺も分かっている。
ポインタが必要な場合といえば、文字列や型がきまっていない時くらいかな。
構造体も場合によってはポインタの方がいいかも。
0096デフォルトの名無しさん
NGNGポインターを教えるのに
0098デフォルトの名無しさん
NGNGswapを自作して解く問題じゃないの?
0099デフォルトの名無しさん
NGNGint tmp = *i;
*i = *j;
*j = tmp;
}
で
swap(&x, &y); ってやるだけ。
0100デフォルトの名無しさん
NGNGしかし、それもポインタ使うメリットがわからん・・・・
0101デフォルトの名無しさん
NGNGint x, y, z;
scanf("%d", &x);
scanf("%d", &y);
z = x; x = y; y = z;
ってやればいい。
というか、最初からxとy入れ替えればいい。
0102100
NGNG010387
NGNGこの際テストでもswap使うか・・・しょうがない
0104デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGもともと どんな例題なんだよ?
short a = 10
long b = 20
memcpy (&(b+sizeof (short)), &a, sizeof (short))
memcpy (&a, &b, sizeof(short))
b = b >> 16
うごくか?・・・・
0107デフォルトの名無しさん
NGNG死ね
0109デフォルトの名無しさん
NGNGマジ質してんのに死ねとは?おまえこそ氏ね
0110デフォルトの名無しさん
NGNG俺たちを試しているんだろ?
0111デフォルトの名無しさん
NGNGアセンブラレベルで
Push&Pop?
0112デフォルトの名無しさん
NGNGちがうだす。やっとそこら辺自分で書けるくらいになった初心者だす。
じゃあ、先輩方は上のことをやるとき、ポインタを使うのと数値変数
そのまま使うのとどっちが普通ですか、って聞けば答えてもらえます?
011387
NGNG関数の作り方はいままで出てきたことなかったけど
教科書には>>87の問題は練習問題として出てる。そのまんま
>>108
十分かどうかはわからない
でも>>105みたいに細かいことは考えなくていいと思う学校では
011487
NGNG難しいこと考えなくても問題解ければ今はいいわけだし・・・
今までありがとうございました!
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGint* p;
/* 入力 */
p = (int*) a;
a = b;
b = (int) p;
0119デフォルトの名無しさん
NGNGscanf("%d",&a);
printf("input b");
scanf("%d",&b);
printf("a=%d,b=%d",b,a);
0120デフォルトの名無しさん
NGNG未定義
0121デフォルトの名無しさん
NGNG俺が定義した
0122デフォルトの名無しさん
NGNG012360cm浮き上がるストレート
NGNGいろんな種類のアイテムの管理がうまくできないのですが
どうしたらよいのでしょう。
前にSRPGを作ったときはアイテムの効果の種類が少なかったので楽でした。
HPの増減とスキルに分け、HPの増減はローカル配列に入力、戻り値を利用し、
中身を変えることで、射程は長いが命中率は悪い武器や、
回復力は使用者の魔力によって増加し、相手の幸運によってさらに
増加する回復魔法等を簡単に作れるようにしました。
スキルは数が少なかったので単発で処理しました。
今回のRPGではHP増減以外に状態変化、ステータス増減、防具等も
配列にまとめたいのですが、うまくできません。
アイテムの種類によって使うものが違うので
(HP増減は威力、状態変化は状態の種類など)
全てのアイテムをひとつの配列にすると、使わないのがある分
配列の横方向が25ぐらいになってしまい、ごちゃごちゃしてしまいます。
アイテムごとに配列を分けると呼び出すまでの処理がごちゃごちゃしてしまいます。
グローバル変数を使用する少しは楽だったりするのですが、
メモリの量とかあるみたいですし。
データファイルに書いておく方法もあるみたいですが。
どこがわからないかもうまく説明できていないと思いますがお教えお願いします。
0124デフォルトの名無しさん
NGNGよくわからんが、とりあえず struct と union の勉強をしな。
0125デフォルトの名無しさん
NGNG質問はageで。
それくらい面倒がるなよ。
0126デフォルトの名無しさん
NGNGShooting RPG?
0127デフォルトの名無しさん
NGNGSimulation RPG
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGC++に移行してStrategyパターンとAdapterパターンを適用しろ
0130デフォルトの名無しさん
NGNG君はC言語の前にゲハ板で頭脳戦艦ガルの勉強が必要。
0131デフォルトの名無しさん
NGNG0132名無しさん@Emacs
NGNGvoid func()とstatic void fun()はどう違う?
staticつけるといいことあるのか?
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNGvoid func()はexternがついていると見なされるから他のファイルからも呼び出せる。
staticは呼び出せない。
本読め。
0136デフォルトの名無しさん
NGNGそんなみなさん、ここでひとつ教えてください。
ポインタについてです。
独習本などは、盛んにポインタについて説明してあります。
それらの本を読んで、書き方や使い方はわかりました。
が、どの本を見ても、ふだんこうする所をポインタを使うと
「ほらこんなに便利なのよ」と嬉しさを書いたものがほとんどありません。
ポインタの嬉しさがわかれば、超ナットクできると思うんですが、
いまいちその良さがわかりません。教えてやってください。
・ポインタを使うことで何が嬉しいのでしょうか。
具体例を ぜひ拝見させてください。
配列で処理しては だめなの?
ポインタはどんな場面で使うべきですか?
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG具体例:
printf、gets、puts、scanf、fopen、fclose、…のソースでも見るべし
1:変数を渡してくれたらその値を書き換えてやるぞゴルァ、という関数を作るとき。
具体例: scanf( "%d %d %d", &a, &b, &c );
もちろん関数の返値としてデータを返すようにしてもよいのだが、
a = scanf("%d")
複数の値を返したいとき面倒だし、でかいデータだと遅いし。
2:でかい構造体を関数に渡すとき。
もちろんその構造体を丸ごと関数に渡しても動くことは動くんだけど、遅い。
それよりはポインタ渡しにして、「ここにデータが入ってるから見れ」と
(場所≒ポインタ) だけ関数に渡せる設計にした方が速いプログラムになる、ことが多い。
> が、どの本を見ても、ふだんこうする所をポインタを使うと
3:ふだんポインタを使わないところは元々ポインタを使わないところ。
使うべきところで使おう。
> 配列で処理しては だめなの?
ところで、ポインタのかわりに配列を使える場面なんて一つも思いつかないんだけど?
0141デフォルトの名無しさん
NGNGシムシティーをやっていればわかります。
┌──────────配列商業地区───────────┐
│┌───────┐┌───────┐┌───────┐│
││アドレス ││アドレス ││アドレス ││
││ 0x03...0││ 0x03...1││ 0x03...2││
││ ││ "レンタル" ││ "Books" ││
││ "7&&11" ││ "ぺろぺろ" ││ "忌の國屋" ||
│└───────┘└───────┘└───────┘│
└───────────────────────────┘
┌─Pt住宅地区────┐┌─Pt商業地区────┐┌Pt住宅地区┐
│ アドレス ││ アドレス ││アドレス │
│ 0x58...0 ││ 0x58...1 ││0x58...1│
│ ││ ││ │
│ "高級住宅地" ││ "スラム犯罪地区" ││"中級住宅地"│
└───────────┘└───────────┘└──────┘
上のように建設していた時、
いっそ"スラム犯罪地区"を壊して好きなようにつかえますが、
配列地区の"レンタルショップ ペロペロ屋"を壊しても
その前の区域しか割り当てられず、
しかも同じ配列商業地区としてしかつかえません。
ので、発展させるのがむつかしいです。
...つかれた。
0142デフォルトの名無しさん
NGNGずれまくっていてよくわからん。出直してこい。
0143デフォルトの名無しさん
NGNG努力は認める。
実際のところポインタが一番重宝するのはでかい構造体を関数に
渡す場合(実体になるが)と、コンパイラがしてくれなさそうな
最適化を手動でがりがりできることかな。
後者についてはVC++とかは優秀なのでなんともいえんが。
0144顔文字板住人
NGNG┌──────────配列商業地区───────────┐
│┌───────┐┌───────┐┌───────┐│
││アドレス ││アドレス ││アドレス ││
││ 0x03....0 ││ 0x03....1 ││ 0x03....2 ││
││ ││ "レンタル、" ││ "books." ││
││ "7&&11" ││ "ぺろぺろ." ││ "忌の國屋" ||
│└───────┘└───────┘└───────┘│
└───────────────────────────┘
┌─ Pt住宅地区 ────┐┌─ Pt商業地区 ────┐┌ Pt住宅地区 ┐
│ アドレス ││ アドレス ││アドレス │
│ 0x58....0 ││ 0x58....1 ││0x58....1 │
│ ││ ││ │
│ "高級住宅地" ││ "スラム犯罪地区" ││"中級住宅地"│
└───────────┘└───────────┘└──────┘
0145デフォルトの名無しさん
NGNG---main.h-------------------------
typedef struct {
intIntData;
} TEST;
TEST TestData;
----------------------------------
---main.cpp-----------------------
#include <windows.h>
#include "main.h"
#include "other.h"
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow)
{
//何か処理
return 0;// END
}
----------------------------------
---other.h-------------------------
void TestVoid();
----------------------------------
---other.cpp-----------------------
#include <windows.h>
void TestVoid()
{
//ここでメインヘッダで作成した構造体を参照したい
return;// END
}
----------------------------------
0146デフォルトの名無しさん
NGNGつまりmain.hを持ってくるか、構造体用のヘッダを新たに作る。
0147デフォルトの名無しさん
NGNG---test.h-------------------------
typedef struct {
char Data;
} TEST;
---main.h-------------------------
なし
---main.cpp-----------------------
#include <windows.h>
#include "main.h"
#include "other.h"
#include "test.h"
TEST TestData;
void TestVoid(TEST*);
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow){
lstrcpy(&TestData.Data,"てすと");
void TestVoid(&TestData);
return 0;// END
}
---other.h-------------------------
なし
---other.cpp-----------------------
#include <windows.h>
void TestVoid(TEST *pTestData){
MessageBox(NULL,&pTestData->Data,"TEST",MB_OK);
return;// END
}
0148147
NGNG---other.cpp-----------------------
#include <windows.h>
#include "test.h"
void TestVoid(TEST *pTestData){
MessageBox(NULL,&pTestData->Data,"TEST",MB_OK);
return;// END
}
上の奴はコンパイルしてないでよく分からないですが、とりあえずこんな感じで来ました。
0149デフォルトの名無しさん
NGNGmain.hないのにincludeしてませんか。
015060cm浮き上がるストレート
NGNGいろんな種類のアイテムのデータはひとつの構造体、配列に書くことにして、
処理のとき変化をつけるようにしました。
まずアイテムの種類(HP増減、状態変化など)を調べて、
その種類にあった処理をするという風にです。
全アイテム共通に使用する値段、回数、重さなどは同じ列に書き、
アイテムの種類によって違うものは、
下のように違うもの用の列を作り、そこに書くことにしました。
種類 値段 回数 重さ 効果1 効果2
HP増減 値段 回数 重さ 威力 必殺率
状態変化 値段 回数 重さ 状態の種類 効果ターン数
ステータス増減 値段 回数 重さ ステータスの種類 増減率
0151デフォルトの名無しさん
NGNGlong data[20][13];
というローカル変数があり、この変数を別の関数に渡す際の書式なんですが、
渡し先関数 void func( long * ); で
1: &data[0]
2: &data[0][0]
3: data
この3つの記述は、全て同じ意味になるって先輩がいっていたのですが、
本当ですか? 僕は2のように書けと学校で習っていたのですが・・・
0152デフォルトの名無しさん
NGNGvoid func(long (*)[13]);じゃないの?
0153152
NGNG0154デフォルトの名無しさん
NGNGさっさとその先輩のことは忘れて他の先輩に付いてください
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGソース上での意味は違うけど、結局はほとんどの処理系で
どれも同じになるんじゃないの?
(キャストしないと警告は出るだろうけど)
0157デフォルトの名無しさん
NGNG脳内にお告げでもあったのですか?
0158151
NGNGいや、関数の大元は別会社から指定されてて・・つまりライブラリね。
void func( long * ); 、long型のポインタで与えてくださいって言われています。
で、2番しか渡せないはずなのだが先輩曰く
「どちらもアドレスの先頭を渡すことになるだろ。
data という変数の [0] 個目、 & でアドレス渡しだ。
だから、&data[0] は data[0][0] のアドレスを渡す、という意味になるから
&data[0] も &data[0][0] も同じ意味だ。確かにお前の &data[0][0] のほうが見る者にとっては
親切な書式になるが、結果は同じだから特に気にすることはない。
あと、C言語では 配列数を省略してかくとポインタになるのは知っているだろ?
だから、data[0][0] を data だけで書いても、コンパイル結果はまったく同じになる。
どうでもいいような知識かもしれないけど、知っておいて損はないぞ。」
という話なんですね。1の場合、確かに意味的には通りそうなんだけど、C言語の基本から考えると
違うような。1の場合、いったいどういった情報が渡っているのでしょうか?
>>154
今のプロジェクト、その先輩と同期3名だけなんです・・・
>>155
思い切り仕事です・・・
0159デフォルトの名無しさん
NGNGstruct st1{
int n
void (*func)(int n);
}ST1;
void func1(int n) {
.
.
return;
}
void func2(int n) {
ST1 st;
st.func = func1;
(func)(n);
return;
}
こういうのってありですか?
0160デフォルトの名無しさん
NGNG(func)(n)のfuncはどこからもってきたんだ?
st.func(n)や(*st.func)(n)ならわかるが。
0161デフォルトの名無しさん
NGNGdata = &data[0] = &data[0][0] だ。
いずれにせよ、関数に渡るのはアドレスだけ。それ以上の情報は渡らない。
二次元配列を渡すときに 配列名だけを渡すのはそんなにおかしくは無いと思う。
0162デフォルトの名無しさん
NGNGlong data[20][13];
long *p = &data[0][0]; // OK
long *q = data[0]; // OK
long *r = data; // 文法上ダメ。意味的にはOK
long *s = &data[0]; // 文法上ダメ。「data」と同じ。
data[0][0] = 123456789;
printf ("data[0][0]=%d *p=%d *q=%d *r=%d *s=%d\n", data[0][0], *p, *q, *r, *s);
0163デフォルトの名無しさん
NGNGああそっか。関数ポインタって言っても構造体のメンバだもんね。
ちなみに159のは構造体の定義をtypedefしている物として読んでください。
そしてまた新たな質問なんだけど(*st.func)(n)
ってのはどういう意味になるのですか?
メンバにセットしたアドレスの実態を現しているのですか?
0164デフォルトの名無しさん
NGNG二次元配列のサイズを変える気がないなら、
ちゃんと引数の型を適合させて long (*)[13] にすればいいし、
一次元配列に解釈しなおして渡すなら、
ちゃんと (long *)data とキャストすればいい。
0165デフォルトの名無しさん
NGNG標準関数ではないですよね?
0166デフォルトの名無しさん
NGNGst.func(n)と同じ。
0167デフォルトの名無しさん
NGNG色んなソース見てると、大抵自作のgetopt.cが入ってるんだけど、何故?
0168デフォルトの名無しさん
NGNG>>167
標準関数ではない=他の環境でもコンパイル出来るように。
既存の(標準的な動作をする)実装とは違う動作を求めていたので。
glibcの実装がメジャーどころだけど、GPLは嫌なので。
思い当たるのはこんなところです。
0169デフォルトの名無しさん
NGNG#if defined(WIN32)
#include <windows.h>
#endif
#include <stdlib.h>/* @@@@ */
typedef struct _node Node;
int i=0;
/* セルの構造体 */
struct _node {
Node *next; /* 次の要素へのポインタ */
int value; /* 値 */
};
/*
セルの挿入関数
*/
void insert( Node *header, int a )
{
Node *p, *q, *new;
/* リストの最後のノードまで移動する */
p = header->next;
q = header;
0170デフォルトの名無しさん
NGNGハァ?
0171デフォルトの名無しさん
NGNG{
Node *p ,*q;
p=header->next;
while ( p != NULL )
{
printf(":%d:",b);
printf("[%d]",p->value);
if (p->value==b)
{
header->next=p->next;
free(p);
//p の領域の解放;
printf("/%d/",b);
return;
}
p = p->next;
}
return;
}
0172デフォルトの名無しさん
NGNGdelete関数なんですけど
うまくいきません
どこがちがうのでしょう??
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGムダ
0175通りすがりの仕事中
NGNGツッコミどころがイパーイあります。
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGちゃんと「消したいノードの直前のノード」のポインタは保持してる?
0178デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGけしたノードのまえのノードが消えてるような気がするんです。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG最初のほう全部消えないか?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG君の目の前に君よりさらにできの悪いやつがいると思いなよ。
そいつに対して君のコードを1行1行何をどうしてどうやってるのか説明してやるんだ、
すんなり説明できなきゃそのコードはどこかおかしい。
# しかし、すんなり説明できないコードを書いてる時点でどこか頭おかしいんだが。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGvoid delete(Node *header ,int b)
{
Node *p ,*q;
p=header->next;
while ( p != NULL )
{
printf(":%d:",b);
printf("[%d]",p->value);
q = p->next;
if (q != NULL && q->value==b)
{
p->next=p->next;
free(p);
//p の領域の解放;
printf("/%d/",b);
return;
}
p = p->next;
}
return;
}
0193デフォルトの名無しさん
NGNGp->next=q->next;で。
0194デフォルトの名無しさん
NGNGfree(q);で。
0195デフォルトの名無しさん
NGNGためしてみます。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGあのお聞きしたいのですが
あなたはプログラム暦
何年ぐらいなんですか??
0198デフォルトの名無しさん
NGNG一番目と2番目のノード消せる?
0199デフォルトの名無しさん
NGNGvalueがbのノードだけが消えているので
問題はありません。
あとp=headerでもよかったみたいです。
0200通りすがりの仕事中
NGNGvoid delete(
Node **header, // ポインターのポインター!!(純カラになったときのため)
int b)
{
Node *p ,*q,
Node *nxtcel = NULL; // pの次のセル
Node *prvcel = NULL; // pの前に存在するセル
while ( p != NULL ) {
printf(":%d:",b);
printf("[%d]",p->value);
nxtcel = p->next; // 消去する前に次のセルをセット!!!
if( p->value == b ) {
if( p == *header ) { // 消したいセルが一番先頭のときの処理
*header = (*header)->next;
} else if( p->next == NULL ) { // 消したいセルが一番最後のときの処理
prvcel->next = NULL;
} else { // 中間のセル
prvcel->next = p->next;
}
free(p);
printf("/%d/",b); //p の領域の解放;
return;
}
prvcel = p;
p = p->next;
}
return;
}
0201通りすがりの仕事中
NGNG0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG2chの人たちは。。。
ちょっと感動しました・・・
0205通りすがりの仕事中
NGNGvoid delete(
Node **header, // ポインターのポインター!!(純カラになったときのため)
int b )// 消したいナンバー
{
Node *p;
Node *nxtcel = NULL;// pの次のセル
Node *prvcel = NULL;// pの前に存在するセル
for( p = *header; p != NULL; p = nxtcel) {
printf(":%d:",b);
printf("[%d]",p->value);
nxtcel = p->next; // 消去する前に次のセルをセット!!!
if( p->value == b ) {
if( p == *header ) { // 消したいセルが一番先頭のときの処理
*header = (*header)->next;
} else if( p->next == NULL ) { // 消したいセルが一番最後のときの処理
prvcel->next = NULL;
} else { // 中間のセル
prvcel->next = p->next;
}
free(p);
printf("/%d/",b); //p の領域の解放;
return;
}
prvcel = p;
}
return;
}
0206デフォルトの名無しさん
NGNGそれは馬鹿にしているとしか思えない発言なのだが。
タテマエ:すごいです。
ホンネ:こんな誰でもわかることよく自慢げにかけるよな。
0207デフォルトの名無しさん
NGNGそういうつもりでかいたわけじゃないのですが・・・
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNGひねくれ屋さんだな。
素直に「お前の技術が低いだけだよ、2ちゃんだからじゃないんだよ」
と教育してやれよ
0211デフォルトの名無しさん
NGNGポインタに浮動小数点の値を持たせることはできるのですか?
0212デフォルトの名無しさん
NGNGdouble *y;
y = &x;
ってことか?
0213デフォルトの名無しさん
NGNGもしかして 0.25 番目のアドレスを保持したいとかですか?
0214デフォルトの名無しさん
NGNG配列をポインタで実現したときに
小数を持たせることができるかということなんですが。
0215デフォルトの名無しさん
NGNGネタは下げてくれ
ネタじゃないなら自分以外にもわかる言葉でお願い
0216デフォルトの名無しさん
NGNG意味不明だが、できないと言っておく
0217デフォルトの名無しさん
NGNGこうですね?
unsigned int a[2] = { 0, 0xFFFFFFFF }; /* int は 32bit と仮定する */
unsigned int b = *(a+0.5); /* b = 0xFFFF0000 のはず!! */
0218デフォルトの名無しさん
NGNGいつの間にクッキー強制になったんだ。うぜーーー!!
0219デフォルトの名無しさん
NGNGint main(void)
{
int x = 10;
funcA(&x);
return 0;
}
void funcA(const int *a) //この関数では*aは変更しない、ということをconstで示したい
{
funcB((int *)a); //funcB()では変更するのでキャスト
}
vod funcB(int *b);
{
*b = 20;
}
というconstの使い方はアリですか?
0220デフォルトの名無しさん
NGNGどうやればいいですか?
0221デフォルトの名無しさん
NGNG漏れ的にはダメ
>>220
配列に格納してソート
0222デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG全然駄目じゃん
> void funcA(const int *a) //この関数では*aは変更しない、ということをconstで示したい
とかいいながら
> funcB((int *)a); //funcB()では変更するのでキャスト
変更してるし・・・
0225デフォルトの名無しさん
NGNGソートソート!!
0226220
NGNGその配列に格納するって言うのがわからないのですが。。
0227デフォルトの名無しさん
NGNGint array[5];
scanf("%d",array);
中略
scanf("%d",array+4);
0228220
NGNG知りませんでした。ちょっと調べてきます。
0229デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1021862587/l50
0230デフォルトの名無しさん
NGNG何か、ソートについて勘違いしてないか?
0231デフォルトの名無しさん
NGNGプログラムなんて全く知らない奴らも理解できたくらいだから、
>>197の質問は「3ヶ月以上なら大抵出来る」だろ。
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234manko_chinko ◆GLc2rpKRNM
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG知ったのはつい最近のこと。高卒ですから。
0239デフォルトの名無しさん
NGNGそれを車輪の再発明と言う。
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGよくあるよね。これ名前ついてるじゃん!とか言うの。
まぁ、名前知ってても実装できないライブラリ厨はいくらでもいるんで心配しなくてもいいかと。
むしろ、プログラムを作るという面ではあなたの方が強いと思われ。
0243デフォルトの名無しさん
NGNGたとえ名前知らなくても何気なく使うもんだと
0244デフォルトの名無しさん
NGNG逆に配列の限界に気づかないでPGやってる奴とかって恐ろしいな・・・
0245238
NGNGありがとう。
> よくあるよね。これ名前ついてるじゃん!とか言うの。
そうそう。たとえば文字列の比較など、ごく単純なものでも
立派なアルゴリズムの名前がついてるのを知って
ビックリした覚えがある。
0246デフォルトの名無しさん
NGNGあるある。みんな経験あるんだな。
0247220
NGNGint a[10];
int i,j,k,m,l;
for(i=0;i<10;i++){
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(j=0;j<10;j++){
for(k=j;k<10;k++){
m=a[j]-a[k];
if(m<0){
l=a[k];
a[k]=a[j];
a[j]=l;
}
}
}
みなさんのいっているソートっていうのは、
こーゆーのを、勝手にやってくれる言語があるっていうことですか?
0248デフォルトの名無しさん
NGNG勝手にと言うか結局はそう言う個としてると思われ。
単に誰かが汎用的に使えるように関数化なりクラス化なりしてくれてるだけで。
0249デフォルトの名無しさん
NGNG言語じゃなくて関数(^_^;)
stdlib.hにqsortってのがあるでしょ。
0250デフォルトの名無しさん
NGNG比較用の関数作んなきゃいけないし。
0251デフォルトの名無しさん
NGNGバブルソートか。
0252デフォルトの名無しさん
NGNGちなみに、
ある一定の規則に従って、
並べ替えることをソートという
0253デフォルトの名無しさん
NGNG多分違うと思う。
隣のものと比べていないし、for文も変。
0254デフォルトの名無しさん
NGNGfor(j=0;j<9;j++){
for(k=j+1;k<10;k++){
が普通じゃないか?
0255デフォルトの名無しさん
NGNGよく見ると恐ろしい動きをしていそうだ・・・。
0256デフォルトの名無しさん
NGNG1 2 4 3
1 2 4 3
1 2 4 3
あ、無限ループ
0257デフォルトの名無しさん
NGNGちがうだろ
2 1 4 3
1 2 4 3
1 2 4 3
1 2 3 4
できるじゃん。なんだかんだで。
0258デフォルトの名無しさん
NGNGソート済みのところと自分自身との比較が入るから無駄が多いだけか。
0259デフォルトの名無しさん
NGNGデータを並び替え作業をソートという。
で、そのやり方(=アルゴリズム)にはいろいろあって、バブルソートとか
クィックソートとかいう名前がついている。
さらに、適切なパラメタを渡せば自分で面倒なコード書か無くてもソート
してくれるライブラリ関数がある(代表的なのはqsort)。
0260デフォルトの名無しさん
NGNGm=a[j]-a[k];
if(m<0){
これが斬新だ・・・学校でCASLIIやらされたときはこんな感じだったが。
0261デフォルトの名無しさん
NGNGだろうな。オーバーフローおこしかねんし。
0262220
NGNG250のいってる比較用関数っていうのはなんですか?
質問ばっかですいません。
宿題スレでやってもらってもいいんですが、
人にやってもらうと、結局どこかで行き詰ると思うんで。。
0263デフォルトの名無しさん
NGNGその局面では使わんけどたまにやってる気がするわ。その方法。
0264デフォルトの名無しさん
NGNGqsort関数について調べてみればわかるが、qsortはどんな型でも扱えるように、
関数側ではどうしようもできない比較部分だけは、関数を使う側に用意させるの。
0265デフォルトの名無しさん
NGNGそれがわからんなら毎回自力でソート書くのでいいとおもう。
ライブラリ関数なんてわかるようになったら使えばいいんだよ。
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNGプログラミング基礎かなんかの宿題か。
簡単に言えば、
ある配列で一番小さい要素を探す。
それを別の配列の最後尾に書き出す。
ある配列の一番小さい要素を65535など安全で大きな数字に置き換える
とかでもいいと思われ。
0268デフォルトの名無しさん
NGNG関数ポインタでも要求するの?
0269デフォルトの名無しさん
NGNGそこまで知っていてなぜソートも知らない。
0270220
NGNGそれは、頭で考えたのをばーっと書いただけなんで、
普通は後で直します。。
いまはとりあえず、見てもらおうかなと思っただけです。。
0271269
NGNG0272デフォルトの名無しさん
NGNGそう。
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare)(const void *elem1, const void *elem2) );
↑はMSDNライブラリより・・・
0273220
NGNG2 4 3 4 1みたいに書き換える関数もあります?もしかして。。
その関数があるとすると、宿題の意図がソートを使えるようにさせる
ところにありそうなんで、頑張っておぼえようとおもうのですが。。
0274デフォルトの名無しさん
NGNGかき回すの?
標準関数にはないけど、標準関数のrandを使えば比較的簡単にできそう。
0275デフォルトの名無しさん
NGNGわけわかんね
最初と最後を入れ替えんの?
んなもん関数にするバカいねぇよ
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGスワップのことじゃない?
>>273
スワップの関数はなかったと思う。
0278220
NGNGかきまわすってどういう意味で?
一番最初と最後を入れ替えて。。っていう関数はありますか?
という意味なのですが。。
0279デフォルトの名無しさん
NGNGわざとわかりにくい表現してるとしか思えん。
かき回すとか入れ替えるとか逆にするとかいくらでも言いようはあるだろうに
わざわざあんな書き方するか?ふつう。
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGないよ。自分で作っても簡単でしょ。
0282デフォルトの名無しさん
NGNG型が決まっているなら関数にするまでもないでしょ(^_^;)
0283220
NGNGありがとうございました。
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNGよっしゃ、聞け!
0289デフォルトの名無しさん
NGNGみてーぎでもいいですか?
0290デフォルトの名無しさん
NGNGあってもおかしくないよなぁ。と一瞬思った。
まぁ、バグのスクツだけど。
0291デフォルトの名無しさん
NGNG要素一つ分のサイズも渡さないと。
0292デフォルトの名無しさん
NGNGガイシュツでなければドンと来い!
0293厨房
NGNG0294デフォルトの名無しさん
NGNGメモリマップドIOの場合・・・やめとこ。
0295デフォルトの名無しさん
NGNGいったいmemcmpに何を望んでるっすか
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGchar *a = arg;
int i = 0;
while(a != \0)
{
i++;
a++;
}
return i;
0300デフォルトの名無しさん
NGNG*a != \0な
0301デフォルトの名無しさん
NGNGstrlenの戻り値はsize_tですYO!
0302デフォルトの名無しさん
NGNGじゃあunsigned long iで。
0303デフォルトの名無しさん
NGNGsize_t strlen(const char *str)
{
const char *p = str;
while(*p) p++;
return p - str;
}
0304デフォルトの名無しさん
NGNGchar *p = arg;
while (*p) p++;
return p - arg;
0305デフォルトの名無しさん
NGNGなる、配列のアドレスが連続していることを利用するのね。なるほど。
でも、wcharとかには応用できないね。と絡んでみる。
0306デフォルトの名無しさん
NGNGケコーンを前提に(;´Д`)ハァハァ
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG何故そう思うのか小一時間問いつめてよいですか?
0309デフォルトの名無しさん
NGNG> でも、wcharとかには応用できないね。と絡んでみる。
なんで?
const char* を const wchar_t* に変えるだけだよ。
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG2バイトとかだと2倍された数字が帰ってこないの?
char=1Byteだから成立するんでは?
0312デフォルトの名無しさん
NGNG俺のチンコの定位置はちょっと右よりなので...
0313デフォルトの名無しさん
NGNGlength = string[0];
0314デフォルトの名無しさん
NGNGもしかして文字列の最大長は255文字だったりする?
0315デフォルトの名無しさん
NGNGDelphiでは短い文字列と呼ばれています。
0316デフォルトの名無しさん
NGNGend-start
はstartからendまでの要素数を返すよ
要素1つ1つのサイズがいくつでも
0317デフォルトの名無しさん
NGNG文字数を返すという前提で。
ちなみにポインタでなく添字をインクリメントする場合でも
同じことでしょ。
0318デフォルトの名無しさん
NGNGaaaはある文字列の配列の先頭です。エラーが出るのですが原因がわかりません。
0319デフォルトの名無しさん
NGNGお前何もわかっちゃいないな。そこで言うべきセリフは
D e l 厨 逝 っ て よ し
だろ
0320デフォルトの名無しさん
NGNG0321317
NGNGと誤解してるわけね。
0322デフォルトの名無しさん
NGNGぶぶー。
マカーっす。
0323デフォルトの名無しさん
NGNGvoidって予約語だし(^_^;)
ところで、void *にいれるならキャストは必要ないでしょ?
0324デフォルトの名無しさん
NGNGマ カ ー 逝 っ て よ し
0325デフォルトの名無しさん
NGNG0326318
NGNGああ、気づかなかった。勢いで変数名までvoidにしてました。
すみません。
0327デフォルトの名無しさん
NGNGそういう間違いで、半日以上エラーが取れなかったりすることあるんだよな。
下手すりゃ3日。
0328デフォルトの名無しさん
NGNGいいのになあ、と時々思う
0329デフォルトの名無しさん
NGNG字下げしろゴルァ! 演算子と演算子の間に空白を入れろ見にくいだろヴォケ! ってな感じに。
0330329
NGNG0331デフォルトの名無しさん
NGNGFORTRAN
0332デフォルトの名無しさん
NGNGでもコンパイル時に文句付けるなら
入力時に自動整形しろよゴルァ!
って感じ。
0333332
NGNG0334デフォルトの名無しさん
NGNGああ、エディタにそういう機能をつけた方がいいか。
0335デフォルトの名無しさん
NGNGそりはオートフォーマッタにかければいいわけで・・・
変数名に統一性がないとか、代入した変数が一度も使われてないとか、
ほかの関数ではreturnの値がintなのにこれだけvoidだとか、
ローカル変数がグローバル変数を覆い隠してるとか、
そういう指摘をしてくれるのがホスィ
0336デフォルトの名無しさん
NGNGつっこんでくるコンパイラ。
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
printf("Hello C World!\n");return 0;
}
コンパイル中・・・
エラー:test.c こんなプログラムで俺を呼び出すんじゃね-よボケ
0339デフォルトの名無しさん
NGNGそうすればそれで半角一個分になる。ここ=掲示版のことね。
0340デフォルトの名無しさん
NGNGよし、何でも聞け!
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG羊をint限界まで数える。
0344342
NGNG64ビットなんて言わないでよ!
0345デフォルトの名無しさん
NGNG8bitでいいよ
0346デフォルトの名無しさん
NGNG環境依存。もまえのノウミソの(略
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGまずは入門書を読め
0349デフォルトの名無しさん
NGNG読んだけど書いてない
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG無理に眠らずに起きとけ。いつかは眠れる。
何でも聞けとは言っても 「C言語のことなら」何でも聞け。
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNGオブジェクトの大きさを表すための型。
stddef.hを見てみろ。
実際はunsigned int とか unsigned long とかになってるはずだ。
0356再帰???
NGNGんですが、どうしても上手くいきません。再帰を使わず
にはできたのですが・・・。 教えてください。
(再帰を使わない二分探索)
#include <stdio.h>
int binsearch(int x,int v[],int n){
int p,q,m;
p=0;
q=n-1;
while(p<=q){
m = (p+q)/2;
if(x<v[m])
q=m-1;
else if(x>v[m])
p=m+1;
else return m+1;}
return -1;}
main(){
int i,l,m;
int data[20];
int bin;
printf("input l >"); /* 配列の長さ */
scanf("%d",&l);
for(i = 0;i<l;i++){ /* データの入力 */
printf("data[%d] =",i+1);
scanf("%d",&data[i]);}
printf("input m >"); /* 探索キー */
scanf("%d",&m);
bin = binsearch(m,data,l);
printf("answer is data[%d].\n",bin);}
0357再帰???
NGNGint binsearch(int x,int v[],int n){
int m;
int p=0;
int q=n-1;
if(p>q)
return -1;
m = (p+q)/2;
if(x<v[m])
binsearch(x,v[m],q);
else if(x>v[m])
binsearch(x,v[m],q);
else return m+1;}
0358デフォルトの名無しさん
NGNGint p,q,m;
p=0;
q=n-1;
while(p<=q){
m = (p+q)/2;
if(x<v[m])
return binsearch(x, v, m-1);
else if(x>v[m])
return binsearch(x, v+m+1, n-m-1)+m+1;
else return m+1;}
return -1;}
0359デフォルトの名無しさん
NGNG↓昔書いた二分探索。われながら汚い・・・
void *bsearch(const void *key,const void *base,size_t nmemb,size_t size,int (*compar)(const void *,const void *))
{
const unsigned char *left,*middle,*right;
int result;
left=(const unsigned char *)base;
right=left+(nmemb*size-size);
while(left<=right){
middle=left+((right-left)/size/2*size);
result=(*compar)(key,middle);
if(result==0)
return (void *)key;
else if(result<0)
right=middle-size;
else
left=middle+size;
}
return NULL;
}
0360再帰???
NGNGwhile(ループ)を使わずに書きたいのですが、すみません、書き忘れていました。
0361デフォルトの名無しさん
NGNGforに書き換えろ
0362デフォルトの名無しさん
NGNGint p,q,m;
p=0;
q=n-1;
if (p>q)return -1;
m = (p+q)/2;
if(x<v[m])
return binsearch(x, v, m-1);
else if(x>v[m])
return binsearch(x, v+m+1, n-m-1)+m+1;
else return m+1;}
0363再帰???
NGNGそういう風に課題が指定しているもので・・・。 ループを使わず再帰を使えと。
0364デフォルトの名無しさん
NGNGしかしなんでどうしても再帰を使いたいの?
0365364
NGNG再帰ならクイックソートでも出してあげればいいのに。
0366デフォルトの名無しさん
NGNG0367再帰???
NGNGありがとうございます。 解析してみます。
0368デフォルトの名無しさん
NGNGint *m = (v+n-1)/2;
if (n < 0) return -1;
if (x < *m) return binsearch(x, v, v-m);
else if (x > *m) return binsearch(x, m+1, v-m-1);
else return v-m+1;
}
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGint m = (n-1)/2;
if (n < 1)return -1;
if(x<v[m]) return binsearch(x, v, m-1);
else if(x==v[m]) return m+1;
else { int y = binsearch(x, &v[m+1], n-m-1);
if (y == -1) return -1;
else return m+1+y;
}}
0371初心
NGNGb=new double [n*n];
a=new double *[n];
for(i=0;i<n;i++) a[i]=&b[i*n];
こんなふーに多次元配列を作っているのですが
どんな感じで解放したらいいですか?
0373デフォルトの名無しさん
NGNG{
if( l < r ) { int m = (l + r) / 2;
if( v[m] < f ) return binsearch( v, f, l, m);
else return binsearch( v, f, m+1, r);
} else {
if( v[l] == f ) return l; else return -1;
}
}
0374デフォルトの名無しさん
NGNGc++ならstd::vectorでもツカッテロ
037619さん
NGNG{
if(n >= 1)
return false;
b=new double [n*n];
a=new double *[n];
for(i=0;i<n;i++) a[i]=&b[i*n];
retrun true;
}
free(b);
free(a);
0378デフォルトの名無しさん
NGNG037919さん
NGNG>new は、malloc(sizeof(double) * ...); でした。
0380デフォルトの名無しさん
NGNGあほだとしか思えん。
クイックソートみたいに分割した両方を処理するならわかるけど、片方しか処理しない
二分探索でなんで再帰呼び出しを使うんだろう(>>356みたいに課題は除く)。
もしかして再帰呼び出しを使うのが一般的なの?俺はいつもループを使っているけど。
0381デフォルトの名無しさん
NGNGメモリ量を取得できる関数なんてものはありませんか?
0382デフォルトの名無しさん
NGNG関数は知らんが、/proc/[プロセス番号]にあるファイルに、そのプロセスに関する情報が入ってる。
もし調べるとしたらそこだろうな。
カーネル付属のドキュメントか何かに/proc以下のファイルについてのFAQがあったと思うから調べてみたら?
JM Projectのページに和訳もあったと思う。
外してたらすまそ。
0383382
NGNG0384デフォルトの名無しさん
NGNG>>349
> size_t って何ですか?
もう答えは >>355 が「オブジェクトの大きさを表すための型」とずばり答え
ちゃってるけど、使用例としての補足。
なんでわざわざ size_t なんてもんがあるかというと、これはsizeof演算子の
演算結果を意味するから。
逆を言えば、関数定義に size_t が書かれている場合はsizeof演算子を使って
オブジェクトのサイズを渡すべしってことになる。
たとえば void *memcpy( void *dest, const void *src, size_t count );
ならこんな感じ
char Buf1[256];
char Buf2[256];
/* Buf1の内容をBuf2に丸コピー */
memcpy( Buf2 , Buf1 , sizeof(Buf1) );
0385デフォルトの名無しさん
NGNGprintf ( "%s",str );
とやるとfgetsのせいで復改も読みこんでしまいますよね?
その復改文字だけはずして出力したいのですが
どうすればよろしいのでしょうか?
0386デフォルトの名無しさん
NGNG読み込んだ文字列の最後が改行だったらそれを'\0'で上書きすればいい。
0387385
NGNGアリが�dございます。
ただファイルから読みこむのが毎行
文字数が異なるんです。
その場合固定文字数で上書きできないのが
コマールっていうかワカリマセソ・・・ヽ(`Д´)ノ
0388デフォルトの名無しさん
NGNGstrlenあたりで文字数求めればいいだけでは?
0389デフォルトの名無しさん
NGNG↓ ↓ ↓
http://www.dream-express-web.com/space-trust.htm
0390デフォルトの名無しさん
NGNGlen = strlen(str);
if (len && str[len - 1] == '\n') {
str[len - 1] = '\0';
}
0391デフォルトの名無しさん
NGNG/* perlのchompもどき */
void chomp(char *s)
{
char *p = strrchr(s, '\n');
if(p != NULL)
*p = '\0';
}
0392デフォルトの名無しさん
NGNGこんなかんじ。
void chomp(char *str)
{
int len;
if (str && ((len = strlen(str)) >= 1)) {
if (str[len-1] == `\n`)
str[len] = `\0`;
}
}
あと、君のsourceだと一行256以上だと破綻するってのは判ってるよね?
0394デフォルトの名無しさん
NGNGちゃんとlenのチェック入ってるよ
0395デフォルトの名無しさん
NGNGおい、それだと末尾の'\n'が消えないぞ(w
str[len] = `\0`; /* × */
str[len - 1] = `\0`; /* ○ */
な。
0396デフォルトの名無しさん
NGNG内容云々以前にそんな見にくいページデザインじゃ問題外だな
0397390 じゃないけど。
NGNG> 文字列長が0だとスタック壊すよ >>390
なんで ?
0398デフォルトの名無しさん
NGNG踏んじゃったのね
ご愁傷様
いいかげんdream-express見飽きた・・・
0399385
NGNGホントアリガ�dゴザイマス
カンドウシマスタ
精進シマス
0400390だけど
NGNG文字列長(len)が0だと、
str[len - 1]というのは、str[-1]ということになる。
そこに書いたらスタック(かどうかはしらん。ヒープかもしらんし)の
変な領域に書いてしまうことになるから。
0401デフォルトの名無しさん
NGNG踏んじゃいました
これで直るWindows98の不安定とかいうサイトと同じものが流れてる気がしました
0403デフォルトの名無しさん
NGNG400 名前:390だけど
~~~~~~~~~~~~~~~~~~
0404デフォルトの名無しさん
NGNGint len = strlen(buf)-1;
if (buf[len] == '\n')
buf[len] = '\0';
printf("%s", buf);
}
bufのサイズが2以上ならfgetsが文字をちゃんといれるので
この程度でいいんじゃない。
0405デフォルトの名無しさん
NGNG問題なしということでよろしいか。
0406デフォルトの名無しさん
NGNG0407390だけど
NGNGなんか今ごろなにを問うてたかわかった(w
「390でlenのチェックしてるにもかかわらず、
なぜ文字列長が0だと変なところが壊れるのだ」
と393に問うてたわけだ。
すまんすまん。飴やるから許してくれ。
>>403
というわけでボケてたのはおれ。
0408デフォルトの名無しさん
NGNGint a[100];
baka.c
extern int a[]; ←これと
extern int a[100]; ←これって
違うんですか?
コンパイル後のバイナリは一緒なんですが...
何か使い分けなければならない場合があるとか?
0409デフォルトの名無しさん
NGNG違わん。というか外部変数の配列の大きさは無視される。
二次元以上だと行の数が無視される。
0411デフォルトの名無しさん
NGNGコンパイル後だと違わんかもしらん。
だが、コンパイル時にsizeofがとれるかとれないかの違いはある。
extern int a[];
と宣言したときにはsizeofがとれない(あたりまえ)。
gccでは
arrsize.c:6: sizeof applied to an incomplete type
といわれてコンパイルエラーになった。
0412デフォルトの名無しさん
NGNG1 行 256 バイト以上でどのように破綻するのかわからんから教えてくれ。
256 バイトとしか取ってないバッファで gets() を呼ぶならわかるが。
0413
NGNGBorland C++Compilerで。
どうしてもリンクエラーがでる。
0414デフォルトの名無しさん
NGNGまず、何をやってどういうエラーがでたか書けよ。
0415デフォルトの名無しさん
NGNGmysqlに繋ごうとしてリンクエラーがでました。
0416413
NGNGプログラムを作成して、コンパイルしました。
そうしたらリンクエラーがでました。
原因としては何が考えられるでしょうか?
0417デフォルトの名無しさん
NGNGリンクってライブラリのリンクでいいの?
ライブラリが置かれているディレクトリへのパスを通した?
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG> 原因としては何が考えられるでしょうか?
リンクに失敗している
0420デフォルトの名無しさん
NGNGお前のプログラムのバグ。
0421416
NGNGバグですか。具体的にどんなバグなのでしょうか?
どのように修正したらいいでしょうか・
0422デフォルトの名無しさん
NGNGネタなら放置。
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNGリンクエラーになります。
0425416
NGNGあのー
リンクエラーなのですが・・・・
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG0428413
NGNGリンクエラーでなかったです。
"stdlib.h:テンプレートおよびオーバーロードした演算子が C リンケージを持てない"
↑こんなの
mysql.hをインクルードすると出ます。
0429デフォルトの名無しさん
NGNGおまサイアクだよ
0430デフォルトの名無しさん
NGNG0431413
NGNG0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNGこんな間の抜けた質問のしかたする奴初めて見たよ
0434デフォルトの名無しさん
NGNG彼はちょっと変な人なんだよ。
0435デフォルトの名無しさん
NGNG1行が256バイト以上だと、行の途中までしか読めない。
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNG出来る?
0439デフォルトの名無しさん
NGNGあれだろ。
Cげんごのしょしんしゃむけのほん
に書いてある
char str[255];
を、「ああキャラ型の配列は255個が限界なんだ」と信じている香具師だろ
0440デフォルトの名無しさん
NGNGむかしのBASICの本見て
「文字列は256文字まで」
を盲信。
0441デフォルトの名無しさん
NGNGMacのtypedef Str255につられて何となく、とか
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGなんでunsignedなの?
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNGそのfgetsと(少なくとも)次のfgetsでは1行を正常に読み込めないんだけど?
問題はそれを破綻とみなすかどうかだと思うけどね。
0446デフォルトの名無しさん
NGNG彼はそれを「破綻」と呼んでるんだろうね。
0447デフォルトの名無しさん
NGNG意図しない結果ならそう呼んでもいいんじゃない?
バッファあふれだけを特別扱いする理由もないと思うし。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG0452わ〜い
NGNG0453デフォルトの名無しさん
NGNG確信なんてないけど。
そもそもどういう意味で破綻という言葉を使ったのか教えてください。>最初の人
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG392は次の>>393でも
> 文字列長が0だとスタック壊すよ >>390
なんて的外れなこと書いてるしな。
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGヌルだとなんだのでスレを侵食したあの頃がなつかすぃ
0463デフォルトの名無しさん
NGNGいや、今度のネタは破綻の破の字に石じゃなくて右を使ったことだ。
0464デフォルトの名無しさん
NGNGmallocはどうなっちゃうんでしょ?
これは「C自体にはI/O機能は無く、ライブラリ関数としてprintfがある」
ということと同じ関係ですか?
046563
NGNG#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <malloc.h>
#include <time.h>
の中でCでサポートしてないのありますか?
C++だとエラーでなくてCですると
c:\program files\microsoft visual studio\vc98\include\ole2.h(348) : error C2032: '<Unknown>' : 関数は struct '_OLESTREAMVTBL' のメンバとして定義できません。
cl.exe の実行エラー
とエラーがでてしまいます。
0466デフォルトの名無しさん
NGNGCの文法だけが言語仕様だという立場に立てばないという見方もできるかもしれない。
しかし規格ではライブラリについても言及してるから、
ヒープの機能はないというのは間違いかもしれない。
ただし、mallocがヒープから取ってこなければならないという
決まりもないので、やっぱりその記述は合ってるかもしれない。
結論
漏れにはよくわからない。
0467デフォルトの名無しさん
NGNG#include <malloc.h>
は標準ヘッダじゃないな。
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG> c:\program files\microsoft visual studio\vc98\include\ole2.h(348) :
> error C2032: '<Unknown>' :
> 関数は struct '_OLESTREAMVTBL' のメンバとして定義できません。
ole2.h は、winsock.h を経由して windows.h から呼ばれてるな。
[OLE2.h]
343: typedef struct _OLESTREAM FAR* LPOLESTREAM;
344:
345: typedef struct _OLESTREAMVTBL
346: {
347: DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
348: DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
349: } OLESTREAMVTBL;
350: typedef OLESTREAMVTBL FAR* LPOLESTREAMVTBL;
351:
352: typedef struct _OLESTREAM
353: {
354: LPOLESTREAMVTBL lpstbl;
355: } OLESTREAM;
348 行目の何でコケるのかわからん、347 行目ではエラー出てないし。
コンパイルオプションが狂ってるか、コンパイラが壊れたんじゃないのか?
0470デフォルトの名無しさん
NGNG>>466
> K&Rの2ページに「Cにはヒープの機能は無い」とあるんですけど、
> mallocはどうなっちゃうんでしょ?
mallocはメモリブロックを割り当てる関数で何処からメモリブロックを
取得してくるかは処理系に依存する。
多くの処理系はヒープからメモリブロックを切り出してmallocで割り当てを
行っているだけに過ぎない。
ヒープ以外の場所からメモリを割り当てても規格には違反しない。
0471469
NGNG>>79
> いろいろやってみたのですがsleep関数はC++だったんですね
違うぞ。
sleep() は UNIX システムコール、Sleep() は Windows API だ。
C/C++ が大文字小文字を区別することぐらいは知ってるよな?
ちゃんと書け。
どちらも C/C++ 標準の関数ではない。
sleep() は UNIX のコンパイラでしか呼べないし、
Sleep() は Windows のコンパイラでしか呼べない。
両関数とも、内部的には違うが、見かけ上は C からも C++ からも同じように
呼べる。
0472デフォルトの名無しさん
NGNG464 の質問に答えた事になってない。
つまり、「C にはヒープの機能は無い」 かどうかはわからないから、そう言い切って
しまうのは間違いだ、というのが結論だと解釈していいか?
0473デフォルトの名無しさん
NGNG464 は、C 標準ヘッダかどうかではなく、C から使って問題無いかを訊いたのではないですか?
まあ、そのような事を訊いているようでは修行が足りません。
0474デフォルトの名無しさん
NGNG>sleep() は UNIX システムコール、
システムコールじゃなくて単なる関数の場合が多いよ。
大抵内部でsignal使ってたりnanosleep(2)つかったりselect(2)つかったりしてる。
0475デフォルトの名無しさん
NGNG> ということと同じ関係ですか?
だと思うけど。つまり、言語的には動的メモリ取得なんて知らないと。
#実際、動的メモリ取得できない環境でも動くし。
もしくは、K&Rの時代には mallocが標準関数では無かったか。
0476デフォルトの名無しさん
NGNG> K&Rの時代には mallocが標準関数では無かったか。
違う違う、そもそも標準関数なんてものがなかった。
いや、標準がなかった。
047763
NGNG>>471
レスありがとうございます。
#include <winsock.h>
するとファイル名を.cppにするとうまくいって.cにするとエラーがでてしまいます。
みてみると
347: DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
348: DWORD (CA........Put)(LPOLESTREAM, const void FAR*, DWORD);
と、なぜか348のところが......になってしまっているのがだめなのでしょうか?
これを書き換えても大丈夫なんでしょうか?
学校のパソコン、いえのパソコンともこうなっていたのですがプログラムが悪いのでしょうか?
0478469
NGNG少なくとも漏れの PC のヘッダーとは異なっている事は確か。
元ファイルのバックアップを取った上で試しに 469 と同じようにしてみる
のには価値があるだろう。
しかし、C++ でコンパイルが通るのは解せないな・・・。
それにしても、学校と自宅の PC の両方とも同じ風になっているという事
は・・・割れ?
047963
NGNGいえ割れではないのですが・・もしかしたらプログラムで書き換えてしまっているってことあるのでしょうか?
うーん、一度コピーしてみます
0480470
NGNG> つまり、「C にはヒープの機能は無い」 かどうかはわからないから、そう言い切って
> しまうのは間違いだ、というのが結論だと解釈していいか?
Cの規格ではヒープという概念や用語は出てこないので、Cにはヒープはない。
よってK&Rの言っていることは正しい。
しかし、多くの処理系はmallocなどのメモリを確保する関数は
ヒープに確保することはある。
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGポインタでmallocした3次元配列を作りたいと思ってます。メモリがばらばらになるのはできるのですがメモリがばらばらにならないようなプログラムができないです。
2次元はわかったのですが、したに2次元のを書きます。
double **cube;
int i;
int M=1000;
int N=1000;
top = (double **)malloc(sizeof(double *) * M);
top[0] = (double *)malloc(sizeof(double) * M * N);
for (i = 1; i < M; i++)
top[i] = top[i-1] + N;
3次元ではどうかんれんずければいいのでしょう?
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG1000*1000*1000*sizeof(double)
は8GByteになるのだが、大丈夫か?
0485デフォルトの名無しさん
NGNGもうしわけないです;;
100*100*100*sizeof(double)
ぐらいでよろしくおねがいします。
つくってみようとしてるのですができなかったです。
もうしわけないです
0486デフォルトの名無しさん
NGNGdouble** plane;
double* line;
int x, y;
cube = malloc(sizeof(double**)*N);
for(x = 0; x < N; x++){
plane = malloc(sizeof(double*)*N);
cube[x] = plane;
for(y = 0; y < N; y++){
line = malloc(sizeof(double)*N);
cube[x][y] = line;
}
}
もっとも、
cube = malloc(sizeof(double)*N*N*N);
でいいんちゃうかとはおもうが。アクセスは
cube[z*(N*N) +y*(N) +x]。
0487482
NGNGつくってくれて本当にありがとうございます。
走らせてみたのですが、これだとメモリがばらばらになってないでしょうか?
cube[0][0][99]とcube[0][1][0]がはなれてるみたいです。
すべてひとつながりにしたいとおもってます。
つくっていただいたのに文句いってもうしわけないです。
0488デフォルトの名無しさん
NGNG486の一番下の方法を使いたまい
0489482
NGNG今メモリがばらばらの方法でプログラムができてて、それをつかった計算もできてまして、それを
配列確保のところだけを変えてと上からいわれております;;;
つくっていただいたのにもうしわけないです。
検索してみたところメモリがひとつながりになっている2次元配列で以下のプログラムがありました。
int* __Data = ( int* )malloc( sizeof( int ) * M * N ); // ここで一括に取得する
int** _Data = ( int** )malloc( sizeof( int* ) * M ); // 各テーブルへ関連付けるテーブル
for( int i = 0; i < M; i++ ) _Data[ i ] = __Data + i * N; // ここで関連付ける
今やってみてるのですが、なかなかうまくいかずできないです。
0490デフォルトの名無しさん
NGNGcuble = (double (*)[N][N])malloc(sizeof(double) * N * N * N);
0491デフォルトの名無しさん
NGNG○cube
0492482
NGNGつくっていただきありがとうございます。
走らせて見たのですが100*100*100など正立方体などはできるのですが1000*100*100
などの場合メモリがつながってないみたいです。私の設定がまちがってるのでしょうか?
以下に書きます
#include <stdio.h>
#include <malloc.h>
void main()
{
int N=100;
double (*cube)[1000][100];
cube = (double (*)[1000][100])malloc(sizeof(double) * 100 * 100* 100);
printf("%d,%d,%d,%d",&cube[0][0][99],&cube[0][1][0],&cube[0][99][99],&cube[1][0][0]);
}
でみてみたところ
5505880,5505888,5585080,6305088となり
cube[0][99][99]とcube[1][0][0]がはなれてるみたいです。
まちがっていたら指摘していただきたいです。
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG#include <malloc.h>
void main()
{
int N=100;
double (*cube)[1000][100];
cube = (double (*)[1000][100])malloc(sizeof(double) * 1000 * 100* 100);
printf("%d,%d,%d,%d,%d,%d",&cube[0][0][99],&cube[0][1][0],&cube[0][99][99],&cube[1][0][0],&cube[0][999][99],&cube[1][0][0]);
}
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGcube = (double (*)[1000][100])
~~~~~~~
↑×1000 ○100
0498デフォルトの名無しさん
NGNGってしたらcube[][1000][100]で、
cube[1000][100][]じゃないってことかな。
0499デフォルトの名無しさん
NGNG配列 a[123] へのポインタは *p
配列 a[123][456] へのポインタは (*p)[456]
配列 a[123][456][789] へのポインタは (*p)[456][789]
常に一番最初の要素が消える。
どうしてそうなるのかはちゃんと考えとけ。
0500デフォルトの名無しさん
NGNG0501499
NGNG×: へのポインタ、○: を操作するポインタ
0502482
NGNGありがとうございます。解決したもようです!!
cube[a][b][c]とあったら
cubeの宣言はb,cの範囲をしていしていて、mallocではaの範囲をとっているんですね。
ということは
cube[1000][100][10]としたかったら
double(*cube)[100][10]
として
cube = (double (*)[100][10])malloc(sizeof(double) * 1000 * 100* 10);
とすればいいんですね。ほんとたすかりました。
他の方々もアドバイスありがとうございました!
0503482
NGNGほんとうにありがとうございます。
0504デフォルトの名無しさん
NGNG0505482
NGNGcube[500][500][500]
としたいとき
double (*cube)[500][500];
cube = (double (*)[500][500])malloc(sizeof(double) * 500 * 500* 500);
だとおもうんですが
mallocのところを
malloc(sizeof(double) * 500 * 500* 500);
↓
malloc(sizeof(double) );
のようにしてもアドレスはうまくいってるようなんですがこれはやっぱだめなんでしょうか?
0506デフォルトの名無しさん
NGNG0507482
NGNG0508デフォルトの名無しさん
NGNGそれが大丈夫なら
cube = (double (*)[500][500])(0x12345678);
も大丈夫なわけだが。
0509デフォルトの名無しさん
NGNG前の方の書き込みから見てると、
・・・・実戦・・・ですか?
・・・・(((;゜Д゜)))ガクガクガク
0510482
NGNG時間がぜんぜんなくて、かなり強引にいってます;;;
アドレスだけみてたらうまくいってるようにみえたのですが、実際データをいれようとしたら無理でした。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNGdouble (*hoge)[500][500];
って宣言しなきゃならないんだが大丈夫?
0513482
NGNG宣言したあと
はhoge[][][]
でつかえるんですよね?それなら大丈夫だとおもいます。計算は変えるなっていってたのでそこいがいは変えていいみたいですので
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGしかるべき領域確保が必要だと思われ。
0516デフォルトの名無しさん
NGNGある値を代入先の変数名を変数で指定するようなことって、
どのようにして実現できますか?
例:
a という変数に hoge という値が入っていたら、
hoge という変数に ある値x を代入する。
a という変数に bar という値が入っていたら、
bar という変数に ある値x を代入する。
というような感じです。
ものすごいパターンがあるので、一つ一つ全てを、
If文で分けるという方法はなるべく無しでやりたいのです。
宜しくお願い致します。
0517デフォルトの名無しさん
NGNGとりあえずswitch
0518デフォルトの名無しさん
NGNG配列変数使いなー
0519デフォルトの名無しさん
NGNG例えば、変数名と値を構造体にして二分木なりハッシュにする。
0520デフォルトの名無しさん
NGNGこの処理だけに最適化するのもどうかと。
0521デフォルトの名無しさん
NGNG素朴な質問。
a と hoge と x のどれが引き数ですか。
0522516
NGNGswitchを使うということは、enum型で全てのパターンのテーブルを作って、
場合分けするっていうような感じでしょうか?
>>518
配列変数を使うというのは、いまいちイメージが湧かないです・・・。
全てのパターン数分の配列を用意して、どうにかするって感じでしょうか?
>>519
どういう変数が用意されているか決まっていますが、
その変数にどういう値が入るかが決まっていないんですけど、
変数名が入る構造体と値が入る構造体を用意するっていう感じなんでしょうか?
あれ?自分でも訳わからなくなってきました・・・。
0523デフォルトの名無しさん
NGNGa だな。
すいません。
0524デフォルトの名無しさん
NGNGif (strcmp(a, "hoge") == 0) {
hoge = x;
} else if (strcmp(a, "bar") == 0) {
bar = x;
} else if ...
:
:
これをifを使わずに作りたいってこと?
0525デフォルトの名無しさん
NGNGぐーぐるしたけど英語だとinfoばかりかかるしよく分からんかった。
0526516
NGNG出来れば使いたくないって思っていたんですけど、
その方法が一番ですかね?
大体50パターンくらいあるんです。
何でこんなことをやろうとしているかというと、
CSV形式で用意されているデータが2種類あって、
片方には何番目が何なのかという項目だけのファイルで、
もう片方が、1行ごとにその項目ごとの値が入っているんです。
それを上手くプログラムの中で代入していきたくて・・・。
そもそもこの2つのCSVファイルを用いるやり方よりも、
良い方法があればいいんですけど・・・。
0527デフォルトの名無しさん
NGNGアドレスの計算は、対象のメモリ領域にはアクセスしたりしないぞ。
0528デフォルトの名無しさん
NGNGperlとかで処理できない内容なのか?
0529デフォルトの名無しさん
NGNGいや、だから領域確保せずに計算だけで求めた適当なアドレスにアクセス
することを言語レベルでは止められないってことでは?
0530デフォルトの名無しさん
NGNG変数名っつーのはプログラマが自由につけられるわけで、
"bar"だからbar、"hoge"だったらhogeって変数に入れなきゃいけないわけじゃない。
"bar"だったら、array[BAR]に、"hoge"だったらarray[HOGE]に入れればいいわけじゃない?
0531516
NGNGその処理の部分はプログラム全体のほんの一部で、
他の部分はCでほぼ出来上がっちゃってるんです・・・。
あと、自分がPerlがわからないっていうオチも・・・。
すいません。
0532デフォルトの名無しさん
NGNG0533516
NGNG>>530
array[]ってCの仕様でありましたっけ?
それとも配列の変数の名前がarrayって感じですか?
無知ですみません。
>>532
全パターンを書くのが面倒というわけではないのですが、
プログラムとして「なんか力技っぽくない?」と、
素人ながらに思ってしまっただけなんです。
やっぱり普通にIf文で分けるべきですかね?
それかswitch文?
0534デフォルトの名無しさん
NGNG1つのデータファイルから読み込む同じ型のデータが、
別々の変数として管理されてるところに問題があると思うけどね。
0535デフォルトの名無しさん
NGNGかっこよく実装するのなら連想配列とかなんだろうけど、これくらい
なら if文ずらずら並べてもいいんじゃない? ただ、メンテのことを
考えると >>532が言っているプログラム自動生成をお勧めする。
0536デフォルトの名無しさん
NGNGchar const* names[2] = { "bar", "hoge" };
int values[2];
#define bar values[0]
#define hoge values[1]
values[ names 内での a のインデックス ] = x;
/* a が "bar" なら、 values[0] すなわち bar が x に、
"hoge" なら value[1] すなわち hoge が x に
*/
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNG50パターンって、もしかして変数を50個用意しようとしてましたか。
…配列のほうがよくないですか。
0539デフォルトの名無しさん
NGNG0540536++
NGNGならばこれでどうだ!!
char const* names[2] = { "bar", "hoge" };
int *values[2] = { &bar, &hoge };
*values[ names 内での a のインデックス ] = x;
0541516
NGNG具体的にありがとうございます。
参考にさせていただきます。
>>538
構造体を作って、その中に50個の変数を用意しようとしていました。
全ての変数が同じ型ではないので・・・。
0542デフォルトの名無しさん
NGNG整数値と実数値が混じってるってことですか。
それとも、数値と文字列が混じってるってことですか。
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGstruct variable_info {
const char *name;
int type;
void *ptr;
};
#define TYPE_INT0
#define TYPE_DOUBLE1
/* 二分探索を行うために変数名でソートされた配列 */
static struct variable_info variables[] = {
{ "bar", TYPE_INT, &bar },
{ "hoge", TYPE_DOUBLE, &hoge },
...
};
static struct variable_info *
get_variable_info(const char *name) {
/* 二分探索を実装 */
}
void set_variable_int(const char *name, int value) {
struct variable_info *info = get_variable_info(name);
if (info->type == TYPE_INT) {
*((int *)info->ptr) = value;
} else if (info->type == TYPE_DOUBLE) {
*((double *)info->ptr) = value;
}
}
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGwhile((scanf("%s",data)>0))でキーボードから入力された文字がすべて読み込み終わったらwhile文を終わらせたいのですが
dataはchar型の配列です
0547デフォルトの名無しさん
NGNG> キーボードから入力された文字がすべて読み込み終わったらwhile文を終わらせたいのですが
この部分が曖昧。
LinuxだとCtrl-Dを入力するとscanf() > 0 が偽になる。
0548デフォルトの名無しさん
NGNGそれよりまず先に scanf() やめて fgets() (必要があれば sscanf() も) にしる。
あと、「キーボードから入力された文字がすべて読み込み終わったら」 という条件が
漠然としていて処理を書きようが無い。
キーボードは叩けば叩くほど永遠に続き、プログラムを中断するまで終わる事は無い。
どんな処理を書きたいんだ?
0549547
NGNGやっぱこれなしにしてくれ。
他の文字に続けて入力するとだめだ。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGそんなの書くぐらいだったら素直に if 文 50 個並べた方がいいYO!!!
参照はどうするんだ、二分探索をまた実行するのかい?
ついでに、void *ptr; より char value[1]; の方がメモリ管理が楽と思われ。
0552デフォルトの名無しさん
NGNGあれば読んでみたい。
0553デフォルトの名無しさん
NGNGそうだな、そもそも Ctrl-D は C の仕様ではない。
0554デフォルトの名無しさん
NGNGそういう本はお目にかかった事無い、困ったものだ。
fgets() + sscanf() は入門用に使えない程難しいか?
0555544
NGNG変数って他のどこかでグローバルに定義されてるんじゃないの?
char value[1]じゃ他で定義された変数を参照できないよ?
これなら他は一切変えずに、しかもifの分岐より*若干*速い(藁
さらに、変数増えようが、型が増えようが対処は簡単♪
0556デフォルトの名無しさん
NGNGscanfは手軽だしな。
fgetsやってトークン切り出して、
必要ならば変換かけて、
なんてやるより手軽に説明できるから。
ただ、scanfの落とし穴はものすごく深いんだけど
そういう説明はあんまりしてくれない。
入門書書くのなら、数の入力は後回しにして
徹底的に文字列処理と文字列の入出力をやってから、
atoiだのに進んでscanfは無視しちゃったほうがいいような気がするけど、
おれにはかけない。
0557デフォルトの名無しさん
NGNG入門者にはまず fgets()、ついでに標準入出力概念の最低限の説明をして
その次に sscanf() にした方がむしろ親切と思うが
それって入門者には難しいのか?
0558デフォルトの名無しさん
NGNGprintfとscanfはどちらもそれを気にせず教えられるからね。
# 俺の大学の糞教本は、scanf の引数に & をつける理由を一言も説明していなかった。
# 案の定C初挑戦のやつらは全く理解できなかったけどね。
0559デフォルトの名無しさん
NGNGunion配列使ったら?
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNGというよりユーザ入力がなかったような。
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG> 変数って他のどこかでグローバルに定義されてるんじゃないの?
構造体に入れてるとは言ってるが、グローバルかどうかはどうだっけ?
てか、“その他”の部分の都合を考えずにここだけぐちゃぐちゃいじっても
どうしようもないだろ。テクニック的には面白いのかもしれんが。
0564デフォルトの名無しさん
NGNG最後の方の章で
「実は第1章で使ったscanfという関数には落とし穴があります」
とか言ってfgets等も出せばいいのにね。
そこまで誌面をさけないかな。
型が違うのか。C++がつかえるならtemplate & 署名フィールドなオブジェクト
を作るがスレ違いなレス。スマソ
0566デフォルトの名無しさん
NGNGどうなんだろうね。ちょっと探して見たけどよく分からない。
bisonだとGPLなコードがそのまま出力の一部として使用されるから出力されたコードも
GPLだ、なんてふうに書いてあるけど、gperfは書いてないような…
0567デフォルトの名無しさん
NGNGそうそうbisonは議論されてるんだけどgperfは全然見つからん
GPLには 0 の第2パラグラフにちょろっとしか書かれてないし判断できん
0568デフォルトの名無しさん
NGNG> 変数って他のどこかでグローバルに定義されてるんじゃないの?
(゚Д゚)ハァ?
↓よく見れ。
>>541
> 構造体を作って、その中に50個の変数を用意しようとしていました。
つまり、変数を洞宣言するか、まだ決まってないという事だろう?
もっと遡れば、
>>526
> CSV形式で用意されているデータが2種類あって、
> 片方には何番目が何なのかという項目だけのファイルで、
> もう片方が、1行ごとにその項目ごとの値が入っているんです。
>
> それを上手くプログラムの中で代入していきたくて・・・。
> そもそもこの2つのCSVファイルを用いるやり方よりも、
> 良い方法があればいいんですけど・・・。
結局、最終目的がわからないと何も言えないぞ。
0569デフォルトの名無しさん
NGNGenum?
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGstruct {
unsigned char *label;
unsigned char *string;
} variable;
変数名label と 内容string を別々の文字列で保存して、
ソレが数字か文字かはプログラムで対処・・・ダメ?
0572デフォルトの名無しさん
NGNGリレーショナルデータベースで
1つめのCVSの2カラム目と、2つ目のCVSのレコードの通し番号とで
join して残りのカラムを select すれば、項目と値の対応が取れ
た CSV ファイルになる。これをよみこんだら宵のではないかね。
#データベースとしてはmysql, postgresql, msql などがある。
C でやるべきことと、他のツールでやるべきことを見極め、
適材適所すべし。
#それらのツールもCで書かれたりすることもあるだろうし、
#当然のようにCで同じことを行うプログラムを書くことはできる。
#しかし、大事なことは、ツールが独立した、高級な概念を与えてい
#るという見方をし、そこ概念をうまく利用すること。
#しかる後に、どうしてもスピードが足りなかったら、
#そのツールをCで置換することを検討すればよい。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG> scanfは手軽だしな。
> fgetsやってトークン切り出して、
> 必要ならば変換かけて、
> なんてやるより手軽に説明できるから。
そもそも標準入力が手軽にできるものと思って欲しくねー。
普通、標準出力よりも格段に難しいはずなんだが、書籍著者は標準入力を単に
標準出力とのセットとだけしす認識していないのだろうか。
入門書におけるscanf() は著者がサボる手段、並びに入門者の学習能力を勝手に
低く規定してなめくさる行為、としか考えられん。
>>564
> 「実は第1章で使ったscanfという関数には落とし穴があります」
> とか言ってfgets等も出せばいいのにね。
> そこまで誌面をさけないかな。
1、2 ページもあれば十分じゃないか?
fgets(buf, sizeof(buf), stdin)
sizeof(buf) と stdin は、#include <stdio.h> と同じ 「おまじない」 で
いいじゃないか。
ただ 「おまじない」 も、本当の意味があるという事を示して、きちんと解説
するか、または後でそれを自分で考えるよう指示してくれないと困るが。
0577デフォルトの名無しさん
NGNG本当に、取り敢えず、型とデータを一緒にくくって
おいて後で振り分ければそれで良いと思う。
variable[50]かな?type,data,etc...
0578デフォルトの名無しさん
NGNGおながいします
0579デフォルトの名無しさん
NGNGないです。
0580578
NGNGさんくすこ
(´・ω・`)ショボーン
0581デフォルトの名無しさん
NGNGANSIには無かったような。
POSIXなら opendir。
0582578
NGNGキタ⌒Y⌒Y⌒Y⌒Y⌒Y⌒(。A。)!!
巧くいきますたさんくすこ
0583デフォルトの名無しさん
NGNGでもさっぱりわかりません、ポインタって一体・・・
インクルードとかvoidとか・・・
こんなことも理解できない漏れは香具師ですか?
0584デフォルトの名無しさん
NGNG> こんなことも理解できない漏れは香具師ですか?
あなたはカグシですね。
0585(゚∀゚)ケーキ!!カッテキタ
NGNG0586(゚∀゚)ケーキヨリアイスガイイ!!
NGNG気のせいです。
0587デフォルトの名無しさん
NGNG呼びましたか :)
0588デフォルトの名無しさん
NGNG逝ってよし
ポインタを上手に例えてみよう
http://pc3.2ch.net/test/read.cgi/tech/1030901827/
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNGポインタをうまく扱えるようになるとできることの幅が広がるので、
ぜひがんばって勉強しましょう。
このページとか参考になるでしょうかね。
ttp://www.ilovepet.net/dog/Dog.asp?Dog_ID=9
0592デフォルトの名無しさん
NGNG踏んじゃったじゃん。止めてよ、cの走ってるコンソール画面
以外の絵のあるページ嫌い。
0593デフォルトの名無しさん
NGNGインクルードしようとして困ってる人をみたことある
宣言と定義の区別がついてないのが原因みたいだったが
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNGライブラリと言うものを知らなかった厨房の頃
自作共通関数ソースを平気でインクルードしていた、
2重インクルード防止のためインクルードガードも付けていた。
現在でも、ライブラリをリンクするほどでもない
テストプログラムではよくやってしまう。
0596デフォルトの名無しさん
NGNG環境書けや。
0597デフォルトの名無しさん
NGNGWin98
VC++6.0
です
0598デフォルトの名無しさん
NGNG環境に激しく依存するしいろいろあるから一口にいえない。
質問の仕方からして概念を理解してないぽいから
図書館にいってCマガのバックナンバーでもみてみた方がよいと思われ
何年か前に特集記事があった
0599デフォルトの名無しさん
NGNGttp://www.mmjp.or.jp/prentice/washo/prog/wa_pro10-j.html
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGstaticな関数のプロトタイプ宣言をヘッダーファイルに書く人も困り者。
プロトタイプ宣言だからってなんでもかんでもヘッダーファイルに書くなよ。。。
0602デフォルトの名無しさん
NGNGむしろテストこそリンクするんじゃないのか。makeとか使ってないの?
0603600
NGNGサンクス
0604デフォルトの名無しさん
NGNGmakeを使ってるから、メイクファイルを作らない。
俺のtestディレクトリ配下にはAPIや標準関数の挙動を調べたりした
aaa.c bbb.c ccc.c hoge.c ...
とわけの分からんファイルがゴロゴロしている
これにメイクファイルなど付けてしまうと
aaa.c aaa.mk bbb.c bbb.mk hoge.c hoge.mk ...
ファイル数が2倍になり余計にわけがわからなくなってしまう
make aaa
とやれば、デフォルトルールで勝手にaaaが作られ、
わざわざメイクファイルなどを作らなくともよい。
0605デフォルトの名無しさん
NGNG漏れは単体テストのようなものを書いてmake test しながら進める。
make aaa のようにいちいち aaa を考えてうつ方が漏れにはめんどい。
API確認のような捨ててよいファイルは名前は a.hoge.c と決めてあるので、
clean ターゲットに rm -fr a.* を含めてある。
0606デフォルトの名無しさん
NGNG> 漏れは単体テストのようなものを書いてmake test しながら進める。
クライアントに提出するプログラムに関してはソースをインクルードする事は
絶対にしないし、単体テストもコンパイル時に行うような仕組みにしてる
> API確認のような捨ててよいファイルは名前は a.hoge.c と決めてあるので、
> clean ターゲットに rm -fr a.* を含めてある。
うーん、ここが君と俺との考え方の違いかなぁ、捨てて良いと思ってても捨てられない。
プロジェクト終了時にtar-gzして取っておく、1年たって使わなかったら消す。
まぁ、ひとそれぞれだけどね。
0607デフォルトの名無しさん
NGNG俺はAPI確認用のソースは、そもそもプロジェクトと同じディレクトリに置かないで、
自分の手元にディレクトリ分けたりとかでキチンと分類して置いておく。そのプロジェクトが
終わっても参照できるし。
0608デフォルトの名無しさん
NGNGファイル名つけるのがめんどいので、必要ぽい分は
cat && cc && a.out の結果を会社の自分アドレスに subject: memo でメールしてる。
0610デフォルトの名無しさん
NGNGhttp://gcc.gnu.org/ のどこから手に入るんですか?
0611デフォルトの名無しさん
NGNGそれが読みとれないうちは使わない方がよい
0612610
NGNGあ、そうなんですか(笑
わかりましたぁ。
0613デフォルトの名無しさん
NGNGunsigned char *piyo;
int mona;
} HOGE;
というヘダー"hoge.h"があって
#include <stdio.h>
#include "hoge.h"
main ()
{
printf ( "size...%d¥n", sizeof ( ...... ) ) ;
printf ( "size...%d¥n", sizeof ( ...... ) ) ;
}
こんなプログラムがある。
*piyoとmonaと構造体のサイズを表示したいんすけど
どうすればよいのでしょうか?
0614デフォルトの名無しさん
NGNGgccコマンド使ってもcommand not foundってなります。
0615デフォルトの名無しさん
NGNGprintf( "%c\n",hoge );
まさか、これがバグだなんて夢にも思わなかったよ
ひとつ勉強しました
0616デフォルトの名無しさん
NGNGprintf ( "size...%d\n", sizeof( HOGE ) ) ;
printf ( "size...%d\n", sizeof hoge ) ;
printf ( "size...%d\n", sizeof hoge.piyo ) ;
printf ( "size...%d\n", sizeof hoge.mona ) ;
0617デフォルトの名無しさん
NGNGそうなのか?
0619デフォルトの名無しさん
NGNG俺は未だに sizeof で () で括る必要があるのと無いのとの区別が覚えられん…
0620デフォルトの名無しさん
NGNGIt can compile.
0621デフォルトの名無しさん
NGNGつーか、ちゃんとコンパイル通って動くけど?
0622デフォルトの名無しさん
NGNGそうなんだよ、一見ちゃんと動くのが問題なんですよ奥さん。
マジでオレは3日悩んだ
0623613
NGNGヒトツ厨な質問させていただきたいのですが
なぜに
HOGE.piyoとできないのですか?
0624デフォルトの名無しさん
NGNG'A'がint型だから or printfがint型を取るから?
でもそれが問題になるとは思えないんだよなぁ。
0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNGsizeof (型)
sizeof 式
# ただし、後者の場合 sizeof は優先順位が高いのでやっぱり括弧が必要に
# なることもあるので注意。
0627624
NGNG0628デフォルトの名無しさん
NGNGネタじゃなかったらどこがおかしいか書け
0629デフォルトの名無しさん
NGNGわけないよな。
0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNGintは16bit以上だったと思うけど、
charが16bitってあるのか?
0633デフォルトの名無しさん
NGNG0634追加
NGNG0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGそこで無料で使えるコンパイラかインタプリタはどの様なものが有るのでしょうか?
ネットで検索したのですが見つかりませんでした。
0641デフォルトの名無しさん
NGNG0642manko_chinko ◆GLc2rpKRNM
NGNG0644デフォルトの名無しさん
NGNG'A' → 0x00c3
unsigned char hoge → 0xc3
printf("%c\n", 0xffffffc3);
でも、おかしくなるかなぁ...。
0646デフォルトの名無しさん
NGNGポカーン
0647デフォルトの名無しさん
NGNG>>643は2Chでの愛の鞭と思てな。
0648デフォルトの名無しさん
NGNGそれは C 的に OK なのか?
#include <stdio.h>
int main()
{
int i;
union { int i; unsigned char c[4]; } u;
u.i = 'AA'; /**** ← こいつだ ****/
for(i = 0; i < 4; i++)
printf("%d: '%c' 0x%02X\n", i, u.c[i], u.c[i]);
return 0;
}
0649デフォルトの名無しさん
NGNGやるなら L'AA' の方が移植性がある。
0650デフォルトの名無しさん
NGNGOKかどうかは知らんが、けっこう使うけど。
0651デフォルトの名無しさん
NGNGネット検索して何も見つけられないような香具師に、>>643 が 市ねとか言われる
謂われは無いぞ? ん?
だいたい、>>643 は何か間違ったことを言ったか?
>>2 をちょっとでも見たか?
>>641-642 だけに礼を言ってるようだが、彼らの出した情報は既に >>2 に
載ってるんだぞ。
きちんと情報を提供している >>643 に向かってその暴言は無いだろう。
あんたはプログラマ云々以前に、人格的な問題がある。
>>643 に謝れ、さもなくばここに来るな。
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNGサンクスコ
int a, b; a = sizeof b + 1;
なんてのは sizeof (b + 1) になっちゃうわけですね。
0654デフォルトの名無しさん
NGNGそんなに熱くなるなよ。分からないのは 640 だけさ
0655デフォルトの名無しさん
NGNG645は、2どころか1もまともに読んでいないな。
「コンパイラ、過去ログなどのリンクは>>2-5あたり」ってしっかり書いてある。
0656デフォルトの名無しさん
NGNGえ゛?
sizeof(b) + 1 だろう?
0657デフォルトの名無しさん
NGNG気にするな
2を読まずに損してるのは645なんだからさ
0658デフォルトの名無しさん
NGNG彼としては ↓にすればOKと言いたいんだろうか?
printf("%c\n",(int)hoge);
俺的には今のままでも問題ないのではないかと思うんだけど。
0659デフォルトの名無しさん
NGNG俺も問題ないと思うのだけれど、
あるいはCmachineならそういうこともあるのかも?
0660デフォルトの名無しさん
NGNGそうですね。>>653は勘違いしたんですね。試してから書けばいいのに。馬鹿ですね。
昨日の俺ですが(´Д⊂
結局どういう場合に()が必要なのか良く分からないです…
↓sizeof b + 1 を試した後に横道にそれて書いたアホコード
#include <stdio.h>
int main (void) {
char *m = { "?", "b", "w", "?", "l" };
short x;
printf ("x のサイズ = %s\n", sizeof x [m]);
printf ("x のサイズ = %s\n", sizeof (x) [m]);
return 0;
}
0661デフォルトの名無しさん
NGNGこの辺見て理解するしかない
ttp://www-ccs.ucsd.edu/c/syntax.html
0662デフォルトの名無しさん
NGNG規格上はまったく合法。ただし、それがどのような値になるかは
処理系定義なので移植性は低い。その文字の並びがコンパイル時の
ロケールで一文字のマルチバイト文字を構成していない場合は、
L を付けても付けなくても移植性の観点から見れば同じ。
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNGchar *m[]=の間違いか?
0665デフォルトの名無しさん
NGNGそういうときは、
(sizeof b) + 1
って書いた方がさらに明解.
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNG定数の値って型として定義してあるんだっけ。Standard C では int なのは調べた。
0669デフォルトの名無しさん
NGNG単に char m[]でいいんじゃないの?
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGchar m2[] char型の配列。
m1[1] ポインタ
m2[1] char型の値
m1[1][2] char型の値
0672デフォルトの名無しさん
NGNGそうかも。
書き写す時に見落としたっぽい。
0673デフォルトの名無しさん
NGNG初心者ですが、
m1[1][2] char型の値
ってのは、
char m1[];
ってやっといた時の、m1[2]ってことですよね。
で、両方使うには、両方宣言しとく必要があるってことですよね。
char *m1[];
char m1[];
って。
なんで、>>671さんは、配列の添え字をm1とm2に分けてるんですか。
よろしくお願いすます。
0674デフォルトの名無しさん
NGNGttp://www.catnet.ne.jp/kouno/c_faq/c8.html#9
0675( ○ ´ ー ` ○ )
NGNG/*上位4ビットを16進数文字に変換する*/
fputc(Halftohex((n&0xf0)>>4),stdout);
/*下位4ビットを16進数文字に変換する*/
fputc(Halftohex(n&0x0f),stdout);
fputc(' ',stdout);
if(!(++count%24))
fputc('\n',stdout);
else if(!(count %8))
fputc(' ',stdout);
}
Halftohexは、return str[x];をx&=0x0f;でマスクしています。
色々な、ホームページを覗いたが4シフト(n&0xf0)>>4という
意味がわからず。2進数の場合2^4という積を行うが16進数で
表記されてた物をシフトするとどうなるのか・・・。
0676デフォルトの名無しさん
NGNG二進数で 11110000 だったら
1111になる。2^4分の一
0677( ○ ´ ー ` ○ )
NGNGどうなりますか。
unsigned char Halftohex(int x)
{
static unsigned char str[]={
'0','1','2','3','4','5','6','7','8',
'9','A','B','C','D','E','F'};
x&=0x0f;
return str[x];
}
0678デフォルトの名無しさん
NGNG>>なんで、>>671さんは、配列の添え字をm1とm2に分けてるんですか。
m1、m2はそれぞれ配列名、添え字は[]の内側の数字
0679デフォルトの名無しさん
NGNGint n = 'A';
printf("%X\n", n);
printf("%X\n", (n&0xf0)>>4);
printf("%X\n", n&0x0f);
4,1
0680( ○ ´ ー ` ○ )
NGNG0681デフォルトの名無しさん
NGNGでも1を返すけどね。
0682!1
NGNGこんなのどないしてつくるの?
0683( ○ ´ ー ` ○ )
NGNGんま・・文字リテラルを利用するともっと便利になるぞってことか!!
0684デフォルトの名無しさん
NGNG"0123456789ABCDEF"[x] は x+1番目の文字
xが3だったら'3'になる。
0685デフォルトの名無しさん
NGNGchar hex[] = "0123456789ABCDEF";
printf("%c\n", hex[n&0xf]);
このコードから中間変数hexを取っ払うと上記のコードになる。
0686デフォルトの名無しさん
NGNG4,1は16進数の値だよね。
2進数だと0100,0001だよな。
0687( ○ ´ ー ` ○ )
NGNG2進数→10進数=16進数の上位4ビット
4<<x
ってことになりますね。
0688デフォルトの名無しさん
NGNGつーか、こんでええやん。
0689デフォルトの名無しさん
NGNGx=4なら01000000
0690デフォルトの名無しさん
NGNGmain(){
char n='A';
printf("%c","0123456789ABCDEF"[(n&0xf0)>>4]);
printf("%c","0123456789ABCDEF"[n&0x0f]);
return 0;
}
0691デフォルトの名無しさん
NGNGmain(){
char n='A';
printf("%X",(n&0xf0)>>4);
printf("%X",n&0x0f);
return 0;
}
690もこれも出力結果は、
41
ね。
0692デフォルトの名無しさん
NGNG/*上位4ビットを16進数文字に変換する*/
fputc(Halftohex((n&0xf0)>>4),stdout);
/*下位4ビットを16進数文字に変換する*/
fputc(Halftohex(n&0x0f),stdout);
は
printf("%02X", n&0xff);
に置き換えられる。
0693デフォルトの名無しさん
NGNG> windowsにcygnusをインストールしたけどCコンパイラ使えないんですか?
> gccコマンド使ってもcommand not foundってなります。
cygnus setup.exeを使用していると仮定して話を進めると、
Defaultインストールだとgccはインストールされない
もう一度setup.exeを動かしてselect pacages画面で
Devel配下の真ん中あたりにgccがあるからそれをインストールしろ
ついでにgdb, makeもインストールするのをお勧めしておく
0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNGまず、素数を求める関数作らなきゃあな。
0696デフォルトの名無しさん
NGNG課題丸投げですか。
0697デフォルトの名無しさん
NGNGint sosu[SOSUMAX];
という配列を作って、その中に素数をあらかじめ入れておく。
そうしたら、あとは
printf("ソスウハ %d デス\n",sosu[N-1]);
とすればOK。
0698デフォルトの名無しさん
NGNGif (isprime(i) && !--n)
printf("%d\n", i);
int isprime(int n) {
int i = 2;
for (; i*i <= n; i++)
if (n % i) return 0;
return 1;
}
0699デフォルトの名無しさん
NGNGint sosu[SOSUMAX]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71};
printf("ソスウハ %d デス\n",sosu[N-1]);
0700デフォルトの名無しさん
NGNGif (n % i == 0) return 0;
0701デフォルトの名無しさん
NGNGありがとうございました。
だいたいこれでよさそうなので
MAXのところ(素数の数?)を1000くらいまで
増やしてみようと思います。
0702デフォルトの名無しさん
NGNG結局それを組み込めば良いことになると思うが?
SISUMAX
SOSUMAX
違うし。
0703デフォルトの名無しさん
NGNG自己レス。
配列は使ってはいけないそうです。
0704デフォルトの名無しさん
NGNG良く見ると面白いプログラムだ。
isprime(i)が偽の時、--nが実行されない。うまくカウントできる。
0705デフォルトの名無しさん
NGNGint i = 2;
for (; i*i <= n; i++)
if (n % i == 0) return 0;
return 1;
}
void main() {
int N;
scanf("%d", &N);
for (i=2; ; i++)
if (isprime(i) && N-- == 1){
printf("%d\n", i);
break;
}
}
0706デフォルトの名無しさん
NGNG1000で7919になったが合ってる?
0707デフォルトの名無しさん
NGNG;
printf("%d\n", i);
0708( ○ ´ ー ` ○ )
NGNGちょっと、考えてました。 問題は、2進数のシフトとその
イメージです。 いや、でも助かります。
0709( ○ ´ ー ` ○ )
NGNGすることになるし16進数をx>>4すれば右シフトすることになる。
自分の文脈にはそういった配慮がなされてない。
どうでしょうか・・・!?
0710デフォルトの名無しさん
NGNGx>>4が右シフト
0711( ○ ´ ー ` ○ )
NGNGありえないのでしょうか。
0712デフォルトの名無しさん
NGNGビット列なんだから関係ないでしょう。
0713( ○ ´ ー ` ○ )
NGNGぜひ教えてください。
0714デフォルトの名無しさん
NGNGなんで基数を変える(数字の書き方を変える)だけで同じ操作が右シフトになったり左シフトになったりするんだよ
0715デフォルトの名無しさん
NGNG円ディアンについて勘違いしている方に>>713の魂を賭けよう
0716デフォルトの名無しさん
NGNGプログラミングの話はそれからだ。
0717デフォルトの名無しさん
NGNG左から0が入るとかの知識が有れば・・・
0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNG配列を使わずに N 番目の素数を求める方法ってありますか?
漏れは無いような気がする。
0720デフォルトの名無しさん
NGNGなんで?
0721デフォルトの名無しさん
NGNG配列に何入れるつもりなの?
0722デフォルトの名無しさん
NGNGエラトステネスのふるいを配列で実現するつもりなのでは?
0723デフォルトの名無しさん
NGNGN - 1 番目までの素数を保存しないで、どうやってその数字が素数であるかどうか
判定するんだ?
0724デフォルトの名無しさん
NGNG配列じゃなくて線形リスト使えば?
0725デフォルトの名無しさん
NGNGベタでやればできるじゃん。
0726デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNGunsigned char piyo;
short *zaku;
char *gundum;
short GM;
} HOGE;
こんな構造体をsizeofで返すと・・・
piyo=1
zaku=4
gundum=4
GM=2
HOGE=16
こうなりますよね?
なんで構造体自体のサイズは
メンバー×4なのでしょうか??
厨房でスイマセソ(´Д` )
0729デフォルトの名無しさん
NGNGぴったりに入れないようにしてる。
0730デフォルトの名無しさん
NGNGC-FAQの第2章。
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGunsigned char piyo;
short GM;
short *zaku;
char *gundum;
} HOGE;
だと縮まらない?
0733デフォルトの名無しさん
NGNG> 配列を使わずに N 番目の素数を求める方法ってありますか?
> 漏れは無いような気がする。
気のせいです。
int n;
if(n == 1) printf("ソスウハ 2 デス\n");
else if(n == 2) printf("ソスウハ 3 デス\n");
else if(n == 3) printf("ソスウハ 5 デス\n");
else if(n == 4) printf("ソスウハ 7 デス\n");
:
else if(n == 1000) printf("ソスウハ 7919 デス\n");
後はこれを作るプログラムを>>699を参考にして作ればいい。
0734デフォルトの名無しさん
NGNGせめてswitchにしろ。
0735デフォルトの名無しさん
NGNGアリガ�d
C-FACKミテミマス!!
0736デフォルトの名無しさん
NGNGせめてswitchにしてほしかった。
0737デフォルトの名無しさん
NGNG素数を算出するアルゴリズムだけ知っていて、
素数の定義を知らなった ということでつか?
0739デフォルトの名無しさん
NGNGint main(void)
{
int sosu[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71};
int i;
printf("\tswitch(n) {\n");
for(i = 0; i < sizeof sosu / sizeof *sozu; i++)
printf("\tcase %d: printf(\"ソスウハ %%d デス\\n\"); break;");
printf("}\n");
return 0;
}
sosuの配列の作り方は>>705を参考に作ればいい
0740739
NGNG○: printf("\tcase %d: printf(\"ソスウハ %%d デス\\n\", sosu[i]); break;");
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG???
0745デフォルトの名無しさん
NGNGmalloc & freeを使えってことでしょ
0746デフォルトの名無しさん
NGNGプログラムジェネレータかよ。
0747デフォルトの名無しさん
NGNG#include <stdlib.h>
int *p, next(int n);
int isprime(int n) {
int *q=p;
for (; *q && *q * *q <= n; q++)
if (n % *q == 0) return 0;
return 1;
}
int next(int n) {
do n++;
while (!isprime(n));
return n;
}
void main() {
int N, i;
scanf("%d", &N);
p = calloc(N, sizeof(int));
for (i=1, *p=2; i < N; i++)
p[i] = next(p[i-1]);
printf("%d\n", p[N-1]);
free(p);
}
0748デフォルトの名無しさん
NGNG配列禁止だっていっただろーが
なめてんのか?
0749739
NGNG#include <stdio.h>
int main(void)
{
int sosu[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71};
int i;
printf("#include <stdio.h>\n");
printf("int main(int argc, char **argv)\n");
printf("{\n");
printf("\tint n;\n");
printf("\tif(argc != 1 && (n = atoi(argv[1])) == 0)\n");
printf("\t\treturn 0;\n");
printf("\tswitch(n) {\n");
for(i = 0; i < sizeof sosu / sizeof *sosu; i++)
printf("\tcase %3d: printf(\"ソスウハ %8d デス\\n\"); break;\n", i + 1, sosu[i]);
printf("\t}\n");
printf("\treturn 0;\n");
printf("}\n");
return 0;
}
0750デフォルトの名無しさん
NGNGどの辺りに配列が?
0751デフォルトの名無しさん
NGNG#include <stdlib.h>
int *p;
int isprime(int n) {
int *q=p;
for (; *q * *q <= n; q++)
if (n % *q == 0) return 0;
return 1;
}
void main() {
int N, *q;
scanf("%d", &N);
p = calloc(N, sizeof(int));
for (q=p, *q++=2; q < p+N; q++)
for(*q=*(q-1); !isprime(++*q);)
;
printf("%d\n", *--q);
free(p);
}
0752デフォルトの名無しさん
NGNG確かに厳密に言えば malloc() の返すメモリ領域と配列は違うけど、
それなら (・∀・)エラトステネスゥ!! で OK だろ。
0753デフォルトの名無しさん
NGNG#include <stdlib.h>
void main() {
int N, *p, *q, *r;
scanf("%d", &N);
p = calloc(N, sizeof(int));
for (q=p, *q=2; ++q < p+N;)
for(*q=*(q-1)+1, r=p; *r * *r <= *q;)
if (*q % *r++ == 0) ++*q, r=p;
printf("%d\n", *--q);
free(p);
}
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG今やってるのはネタなんじゃない。
0756デフォルトの名無しさん
NGNGみたいなのってあるけど、AがBを産んでBがAを産むっていうのは作れる?
ちょっとは考えたけど作れなかった。
同様にn世代後が自身であるようなコードの生成法ってあるんかな。
0757デフォルトの名無しさん
NGNG% echo hoge | gcc -xc -
:2: syntax error at end of input
% echo hoge | gcc -xc - |& gcc -xc -
:1: syntax error before `:'
% echo hoge | gcc -xc - |& gcc -xc - |& gcc -xc -
:1: unterminated character constant
% echo hoge | gcc -xc - |& gcc -xc - |& gcc -xc - |& gcc -xc -
:1: syntax error before `:'
%
0758デフォルトの名無しさん
NGNG> AがBを産んでBがAを産む
のはわからないが、その知識がこれっぽっちも役に立たないのはわかる。
0759デフォルトの名無しさん
NGNG#include <stdio.h>
main(){
fprintf("#include <stdio.h>\n\nmain(){}\nreturn 0;\n}");
return 0;
}
イメージとしては、こんなやつか。
コツが分かれば出来るってやつかもな。
スゲー大雑把。
0761デフォルトの名無しさん
NGNG>>671と>>673を良く見比べてみろ
0762デフォルトの名無しさん
NGNG>>758が哀れなのと
>>759があわて過ぎ
なのは分かった。以上。
0763758
NGNG> fprintf("#include <stdio.h>\n\nmain(){}\nreturn 0;\n}");
warning C4133: 'function' : 'char [41]' と 'struct _iobuf *' の間で型に互換性がありません。
error C2198: 'fprintf' : 実引数が少なすぎます。
というのは茶々だけど。
漏れが訴えたいのは、実現できるかどうかではなくて、いかに役に立たないかだ。
0764デフォルトの名無しさん
NGNGありまして、どうか教えてください。参考書によるとintは整数の
-32768から32767までの値の範囲しか扱えないとなっているのですが、
試しに下のプログラムを実行すると100000000という数字も表示できて
しまいます。下のプログラムは数を表示するだけという簡単なものなの
ですが、なんで表示できるのですか? 初歩的な質問ですみません。
でも気になってしかたないです。
#include <stdio.h>
void outnum(int num);
int main(void)
{ outnum(100000000);
return 0;}
void outnum(int num)
{
printf("%d", num);
}
0765デフォルトの名無しさん
NGNG673 の質問にレスがつかんのは、何を訊いているのか全然わからんからだ。
678 の訂正をそのまま適用してもな。
それは、提示している前提条件 1 ↓
> m1[1][2] char型の値
> ってのは、
> char m1[];
> ってやっといた時の、m1[2]ってことですよね。
および前提条件 2 ↓
> で、両方使うには、両方宣言しとく必要があるってことですよね。
> char *m1[];
> char m1[];
> って。
がそもそも間違っているのと、その事柄が質問 ↓
> なんで、>>671さんは、配列名をm1とm2に分けてるんですか。
にどう繋がるのか不明だからだ。
ついでに言うと、
> 可愛そうな
字も間違っている。
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG#include <stdlib.h>
int
isprime(int n)
{
int i;
for (i=2; i < n; i++)
if (n % i == 0)
return 0;
return 1;
}
int
main()
{
int N, i, n;
scanf("%d", &N);
for (n=2, i=1; i<N; i++)
for (n++; !isprime(n); n++) ;
printf("%d\n", n);
return 0;
}
07682147483647
NGNGその限界を二進数表記にして考える。
マイナスの限界も同じように考える。
unsigned int でもやってみる。
参考書の初版日を見てみる。
0769デフォルトの名無しさん
NGNGintの表現できる範囲は環境に依存している。
ただし、規格では少なくとも16bitの大きさがなくてはならないとなっているので、
-32768〜32767までしか扱えないというのは、正しくなくもない。
移植性を考えたら、intを使うときはせいぜいその範囲までにしとけとは言える。
ただ、その参考書はそういうことを言いたいのかというとたぶん違うだろう(w
おそらくDOSの時代に書かれた物じゃないかな。
DOSはintが16bitだったので、DOSしか考えてないのならそういう表現になる。
windowsやPC-UNIX系だとintのサイズは大抵32bitなので、
100000000だってintで表現できる。
0770アフォルトの名無しさん
NGNGそれは参考書が嘘つきです、すぐに燃やして別の参考書に変えてください。
int というデータ型は、使っているコンパイラによって扱える大きさが変わります。
int の大きさは、sizeof(int) の値を調べるとわかります。
#include <studio.h>
int main()
{
printf("%d\n", sizeof(int));
return 0;
}
sizeof 演算子はデータのサイズを導き出すので、これで int のバイト数が出ます。
1 バイトは大抵 8 ビットなので、これに 8 を掛ければビット数になります。
そのビット数で 2 のべき乗をとって 2 で割ると、int で扱える範囲がわかります。
例えば上記プログラムの結果が 4 だとすると、4 バイト × 8 = 32 ビット、
2 の 32 乗 = 4,294,967,296、これを半分にして 2,147,483,648。
この場合、int で -2,147,483,648 〜 2,147,483,647 を扱えます。
(上限の値は、さらに -1 します)
あなたの見た参考書は多分 sizeof(int) = 2 ど限定していますが、それは間違いです。
0771デフォルトの名無しさん
NGNG範囲は微妙に変わってくる。この辺は調べてみてほしい。
0773デフォルトの名無しさん
NGNG> 1 バイトは大抵 8 ビットなので、これに 8 を掛ければビット数になります。
limits.hをインクルードしてCHAR_BITSをかけるのが確実じゃない?
まあ8bitじゃない環境なんて滅多にお目にかかることはないと思うけど。
あとさ、扱える数もlimits.hのマクロを見ればいいと思う。
0774764
NGNGありがとうございます。みなさんのわかりやすい説明のおかげで
ほとんど理解できました。2進に直して計算してみました。
ああ、そうなのかと納得です。たんへん助かりました。
それと参考書とは間違ったことは書かないが完全な正解を書いている
とも限らないということを知れました。
0775デフォルトの名無しさん
NGNG> 間違ったことは書かないが
なこたーない。
さすがに言語の開発者が書いたものならないかもしれないけど。
0776デフォルトの名無しさん
NGNGgoogleしまくったけど、どういう語で引いたらいいのかわかんないです。
0777765
NGNGそれぞれメモリイメージ的に、
m1 m1[0] m1[1] m1[2] ...
┏━━━┓ ┏━━━┯━━━┯━━━┯━━━
┃char*[]┃→┃char * │char * │char * │・・・
┗━━━┛ ┗━━━┷━━━┷━━━┷━━━
│ │ │ m1[2][0] m1[2][1] m1[2][2] ...
│ │ │ ┏━━━┯━━━┯━━━┯━━━
│ │ └→┃ char .│ char │ char .│・・・
│ │ ┗━━━┷━━━┷━━━┷━━━
│ │ m1[1][0] m1[1][1] m1[1][2] ...
│ │ ┏━━━┯━━━┯━━━┯━━━
│ └→┃ char .│ char │ char .│・・・
│ ┗━━━┷━━━┷━━━┷━━━
│ m1[0][0] m1[0][1] m1[0][2] ...
│ ┏━━━┯━━━┯━━━┯━━━
└→┃ char .│ char │ char .│・・・
┗━━━┷━━━┷━━━┷━━━
m2 m2[0] m2[2] m2[2] ...
┏━━━┓ ┏━━━┯━━━┯━━━┯━━━
┃ char[].┃→┃ char .│ char │ char .│・・・
┗━━━┛ ┗━━━┷━━━┷━━━┷━━━
となる。
0778777続き
NGNGどうして同じだと思ったんだ?
まさか、「データ型が一緒だから」 なんて言わないよな?
もし m1[1] == m2 だったら m1[1][2] == m2[2] は成り立つのだが、>>671 は
そういう事を意図していないし、>>673 もそうだろう?
> で、両方使うには、両方宣言しとく必要があるってことですよね。
両方使うには、両方宣言しておく必要がある、それは正しい。
しかし、↓
> char *m1[];
> char m1[];
> って。
> なんで、>>671さんは、配列名をm1とm2に分けてるんですか。
どうしてそんな風に宣言させようとするんだ?
0779778続き
NGNGとすると、
char *m1[];
char m2[];
は
char **m1;
char *m2;
という意味だ。
見ての通り、それぞれ違う型になる。
で、あなたは、別々の型を説明する時も、同じ名前で説明するのか?
例えば、
short m1;
long m1;
みたいに書くのか?
それでは混乱するし、実際のソースコードにそのように並べて書けば当然ながら
コンパイルエラーになる。
一体、「両方使うには」 ってどんな使い方を想定したんだ?
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNGちょっと待て、どんなコンパイラを使っているのかしらんが、char m2[];はコンパイルできないだろ。
セミコロンがついているから仮引数じゃないだろ?
0782名無しさん@カラアゲうまうま
NGNGK&R形式ならありえる。
# とか読まずに書いてみるテスト。
0783デフォルトの名無しさん
NGNG確か
extern char m2[];
みたいな形は出来るようなことが前のほうで書いてあったような気がしないでもない。
0786デフォルトの名無しさん
NGNGextern 要らんだろ。
0787779
NGNG0788デフォルトの名無しさん
NGNGでもグローバル変数の場合はint a[]はint *aとは同じにならないみたい。
sizeofの結果が違うし・・
0789788
NGNG0790788
NGNG0791デフォルトの名無しさん
NGNGならない。不完全な型になる。要素数を1と仮定する処理系もある。
0792デフォルトの名無しさん
NGNG感激です。泣けてくるほど。
この可s/愛/哀/想な>>673=>>760のために、こんなに詳しく
説明いただいて、何とお礼を言ったらいいのか。
>一体、「両方使うには」 ってどんな使い方を想定したんだ?
これなんですけど、自分でもしまったと思ったんです。
char m1[]; とやっといてから、すぐ、*m1とか使えちゃうので
すが(これは時々練習してます)、char *m1; とやっといてから、
m1[3]とかやれるのかなぁという疑問がわいて・・・
もう一度、いや保存して何度もご説明を読んで理解します。
その他の関連レスをいただいた皆様にもお礼。「レー」というキャラです:
∧_∧
( *゚ー゚ ) ヒーフー♪
ι ⌒ヽ.
(____.つ つ
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNGキーボードから入力されたものが
整数であるかどうかを判別したいのですが
どうもうまくいきません。
はじめscanfを使っていてうまくいかなかったので
いろいろ調べたらscanfは使わずにfgetsとsscanfを使えと
書いてありました。
それらを使って文字を取得して、
isdigitで整数か判断しようと思ってたのですがうまくいきません。
どなたか入力されたものが整数かどうかを
判別するサンプルプログラムを見せてもらえませんか?
0795デフォルトの名無しさん
NGNGstrtoint
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNGif (s[i] == 0 ) puts("整数");
else puts("整数でない");
0799デフォルトの名無しさん
NGNGatoi?
まだまだ足りないと思う。実数であるかどうか??
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG標準じゃない。strtolかstrtoulの間違いだろ。
0802794
NGNGstrtointでできるんですか?
>>798さん
ありがとうございます!
if (s[i] == 0 ) の条件式の意味がわかりませんが
もう少し調べて考えてみます。
>>799さん
atoiだとエラーチェックができないらしいので
今回の目的には使えない関数だと調べた結果思うのですが。
実数だと小数も入ってしまうので・・・。
0803名無しのジョー
NGNGなんで"Math.h"のときだけコンパイルのときにリンク指定の
"-lm"オプションをいちいち付けなくてはいけないのですか?
0804デフォルトの名無しさん
NGNGlibm の関数を使う場合に必要。-lhoge は libhoge をリンクしろという意味。
0805デフォルトの名無しさん
NGNG>>>798さん
>ありがとうございます!
fgets()で読み込んだ文字列には改行コードがついてるから、
それでチェックするときは、気をつけるようにな。
0806デフォルトの名無しさん
NGNGfor の終了条件も同様。>>794 に fgets() でとった文字列と書かれているので、
s が '\0' で終端していることが仮定されているのだろう。
0807デフォルトの名無しさん
NGNGこのスレで boost は OK か?
0808デフォルトの名無しさん
NGNG0810名無しのジョー
NGNGそれともなにか違うことを示している記号なのでしょうか??
0812デフォルトの名無しさん
NGNGJAVAで関数の引数でオブジェクトを渡すときすべて参照渡しになり、値が書き換えられる可能性があるのですが書き換えられないようにするにはどうすればいいのでしょうか?
0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNG> JAVAはCのサブセットだ
それが間違い。教官が嘘をついたか、あなたがきちんと話を聞いていないかのどちらか。
こっちで訊け→ http://pc3.2ch.net/test/read.cgi/tech/1034303501/
081560cm浮き上がるストレート
NGNGmusic( 楽器名 , 音の高さ , 音の長さ );とか
ヘルツを実引数にして音を出すような関数はあるのでしょうか。
どなたかお教えください。
あと、林晴比古著書の改訂新C言語入門応用編と言う本で
<conio.h>のoutp()とinp()でできると載ってたので使ってみましたが、
未解決らしいくダメでした。テキストに関数を記述するときは
仮引数のデータ型などが出てきて普通に使えそうな感じなのですが。
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNGバーカそんなもんネーヨ。HSPでも使っと毛。
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGCには無い。
OSのAPIに用意されているかも。
WinAPIスレとかmacスレとか(あるのか?)で聞いてみ?
0822デフォルトの名無しさん
NGNG{
void *ptr_value;
int int_value;
} elem;
64bitマシンへの移植を考えたときにこのようなコードは
やっぱりダメなんですよね?
0823デフォルトの名無しさん
NGNGポインタをファイルに保存するようなバカなことしない限りコンパイルし直しで解決しないの?
0824デフォルトの名無しさん
NGNGでもUNIXではintは32bitのままですよ?
0825デフォルトの名無しさん
NGNG不都合でもありますか?
0826デフォルトの名無しさん
NGNGptr_valueに代入してint_valueを使うときとか?
0827デフォルトの名無しさん
NGNGそんなもん、元々移植性がないぞ。
0828デフォルトの名無しさん
NGNGどっかに library とかありそうなんだけど探しても見つからない。
みなさん自前の library とか作ってますか?
0829デフォルトの名無しさん
NGNG教えてください
0830ふぅ〜 ◆H4WUd.B4JE
NGNGC言語は基本的にメモリー上のバイトデータをいじることに
専念する言語だからそういう個別の環境に左右される入出力
は、お前の環境のAPIスレに聞け!
0832デフォルトの名無しさん
NGNGまずはfopenで画像ファイルを開け。
0833デフォルトの名無しさん
NGNG開いた後、どうすれば表示されるのか教えていただけませんか?
>>830
今APIについて調べています。レスありがとうございました
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG例: 「AXに5を即値で入れる。」
0836デフォルトの名無しさん
NGNGメモリーから読みとらないってことですか?
0837デフォルトの名無しさん
NGNGレジスタからも読み取らない。
簡単に言うと、実行時に値が変わることはまず無い数値。
0838デフォルトの名無しさん
NGNGプロミネンスはそこにはないが、
まぁ、その理解でもかまわない。
0839デフォルトの名無しさん
NGNG次はそのファイルをfcloseで閉じてみろ。
0840デフォルトの名無しさん
NGNGあれはHSPだけど、C言語でもできますよね。
教えてください。よろしくお願いします。
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNGp=(char *)malloc(255*1024*1024);
if(p){
memset(p,34,255*1024*1024);
free(p);
}
0843デフォルトの名無しさん
NGNG何故に、34 なんだ ?
0844デフォルトの名無しさん
NGNG0845アフォルトの名無しさん
NGNG普通 0xCC だろ? NT はそうだ。
それと malloc() + free() は駄目だ、プログラム終了まで確保したメモリーを
OS に返さない。
>>840
「メモリを掃除する」 ことはできない。
いきなり大容量のメモリを要求して、OS にメモリのデフラグメントをするように
誘いかけるぐらいしかできる事は無い。
BOOL CleanPhysicalMemory()
{
MEMORYSTATUS MemoryStatus;
HANDLE hHeap;
LPBYTE lpByte;
GlobalMemoryStatus(&MemoryStatus);
hHeap = HeapCreate(HEAP_NO_SERIALIZE, 0, 0);
if(!hHeap)
return FALSE;
lpByte = (LPBYTE)HeapAlloc(hHeap, HEAP_NO_SERIALIZE, MemoryStatus.dwTotalPhys);
if(!lpByte)
return FALSE;
FillMemory(lpByte, MemoryStatus.dwTotalPhys, 0xCC);
HeapDestroy(hHeap);
return TRUE;
}
0846デフォルトの名無しさん
NGNGAA55
0847アフォルトの名無しさん
NGNG16-bit 単位でパージするならそれのがいいけど・・・。
8-bit 単位なら 0xCC じゃない?
0848デフォルトの名無しさん
NGNG> それと malloc() + free() は駄目だ、プログラム終了まで確保したメモリーを
> OS に返さない。
75点。
084960cm浮き上がるストレート
NGNG3,4つ前の同じスレでどなたかに教えていただいたコードです。
ドス窓に壁画します。どれがどの効果か詳しくは解りませんが、参考にしてください。
#include <windows.h>
#include <stdio.h>
#include <conio.h>
BOOL IsWindows9x(void)
{
return (GetVersion()>=0x80000000);
}
int main(void)
{
HWND hWnd;
HDC hdc;
char szOldText[80],szId[32],szTemp[32];
int x,y,X,Y,R,G,B;
char suraimu[][10]={"000010000","000010000","000010000","000111000",
"001111100","011313110","112111211","111222111","011111110",};
085060cm浮き上がるストレート
NGNG/*グラフィックを使うための初期処理?*/
GetConsoleTitle(szOldText,sizeof(szOldText));
wsprintf(szId,"grph%08X",GetTickCount());
SetConsoleTitle(szId);
do
{
Sleep(100);
GetConsoleTitle(szTemp, sizeof(szTemp));
}while(lstrcmp(szId,szTemp));
if(IsWindows9x())
hWnd=FindWindowEx(NULL,NULL,"tty",szId);
else
hWnd=FindWindowEx(NULL,NULL,"ConsoleWindowClass",szId);
SetConsoleTitle(szOldText);
if(IsWindows9x())
hWnd=FindWindowEx(hWnd,NULL,"ttyGrab",NULL);
hdc=GetDC(hWnd);
/*ここまで*/
085160cm浮き上がるストレート
NGNG/*グラフィック表示*/
/*基本は SetPixelV() ( hdc 固定 , x座標 , y座標 , 色 )の点を打つ
色は RGB() の戻り値を使ってもいいし 0xFF00FF みたいにしてもよい
その場合は赤緑青の向き(見た目)が逆になる
あらかじめ配列に入力しておくと 絵を描けます*/
for(Y=0;Y<=8;Y++)for(X=0;X<=8;X++)for(y=0;y<=8;y++)for(x=0;x<=8;x++)
{
switch(suraimu[Y][X])
{
case '0':R=0;G=0;B=0;break;
case '1':R=0;G=0;B=255;break;
case '2':R=255;G=0;B=0;break;
case '3':R=127;G=127;B=127;break;
}
if(suraimu[y][x]=='1')
SetPixelV(hdc,x+X*10+100,y+Y*10+100,RGB(R,G,B));
}
/*ここまで*/
/*グラフィックの使用を終了するための処理?*/
ReleaseDC(hWnd, hdc);
/*ここまで*/
printf("何かボタンを押してください 終了します");
getch();
return 0;
}
0852アフォルトの名無しさん
NGNGあとの 25 点は何が足りない?
0853デフォルトの名無しさん
NGNGという資格は社会でどれくらい認められていますか?
就職有利になったりするもんでしょうか?
0854デフォルトの名無しさん
NGNG履歴書を埋めるのに使えるよ。
0855デフォルトの名無しさん
NGNG理由は大嫌いだから
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGそれはいいところに気がつきましたね
0858デフォルトの名無しさん
NGNGで、それがどうかしたのか。
0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG086160cm浮き上がるストレート
NGNG>>816
サウンドデバイスというのをキーワードに追加し検索してそこでゲットしたキーワードを
また追加して調べたところいくつか見つけることができました。
ただ、機種によってヘルツや音の長さが違うらしいものや
アセンブラが絡んでくるものなので、もう少し調べてみます。
あと追加の質問ですが、さっきのドス窓壁画みたいに始めにハンドル処理をやり
そのあとは簡単に使えるみたいなのがあるなら、どなたかお教えください。
>>819
HSPは確かによさそうですね。まだ音出力のところは見ていませんが、
カーソル移動や色変えなど簡単にできるようなのでおっしゃるとおり簡単にできそうな気がします。
ベーシックは見たことしかありませんでしたが、ベーシックの行番号無しみたいなやつかな。
テキスト実行位置の移動がgotoだし。テキストエディタのバックも黒いし。
環境や移植性などをめんどくさいと思い、ただプログラムでゲーム作ってる僕にぴったりなような気もします。
ちなみにHSPのアドレスはこちら。
http://www.onionsoft.net/hsp/ ダウンロードできます。フリーソフトです。
http://oyabunn.hp.infoseek.co.jp/index.html 講座が解りやすいです。
0863デフォルトの名無しさん
NGNGhttp://www.hpl.hp.com/personal/Hans_Boehm/gc/
w3mなどで使われているガーベッジコレクタですが、使っている人はいますか?
自分が本格的に利用する前に、他の人の感想など聞きたいです。
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGC/C++はガベコレが無いのが利点なのだから使うなよ。
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG激しく同意
0868デフォルトの名無しさん
NGNG激しく同意。
ガベコレを使う奴は堕落している
0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGGCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞
GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞
GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞
GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞
GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞
GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞
GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞GCは糞
0871デフォルトの名無しさん
NGNGw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
w3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
w3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
w3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
w3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
w3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
w3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
w3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリw3mは糞アプリ
0872デフォルトの名無しさん
NGNG/\
/ 神 \── まつもとひろゆき
/ ̄ ̄ ̄ ̄\
/ 神官 \── るびきち
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
/ 貴族 \── その他Rubyハッカー
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
/ 平民 \── Rubyユーザ
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
/ 賤民 \── Ruby初心者
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
/ 奴隷 \── Ruby厨房
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
/ 畜生 \── プログラミング未経験者
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
/ 糞尿 \── 他言語(C,C++Perl,Python,Java,Delphi)などのユーザ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNGちょっとー!
神聖なCをPerlやJava,Delphiなんかと一緒にしないでよー!
0876デフォルトの名無しさん
NGNGhttp://www.google.com/search?num=50&hl=ja&ie=Shift_JIS&c2coff=1&q=%82%DC%82%C2%82%E0%82%C6%82%D0%82%EB%82%E4%82%AB.+Ruby&lr=
42件(多い...)
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNGGCのある言語は糞、ということだ!
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNGアホばかりだ。
0882デフォルトの名無しさん
NGNG違うだろ。
「GCがあるからいいや」と適当なコードを記述するヤツが糞なだけだろ。
馬鹿が鋏持ったって使えないってことだ。
0883829
NGNGありがとうございます
先が見えてきたようでかなり嬉しいです
もう一つ質問させてもらいたいのですが
windows.hとconio.hについて解説されたページ、あるいは書籍などを教えていただけませんか
お願いします
0884デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&lr=lang_ja&q=window%2Eh
このあたりのページがお勧めだねぇ
0885デフォルトの名無しさん
NGNG禿同。Lisp は、まともな言語だ。
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGスレ違い
0888Zetton ◆2ioLXWs4uc
NGNG個人的にはコーディングが好きじゃないし、結構難しい。
if(){
処理
}else{
処理
}
あとインドにはプログラマーが沢山いると聞いたことがあるんですが
どうなんでしょうか?
(キーボードが黄色く黄ばんでそう。)
0889デフォルトの名無しさん
NGNGコテハンで、コピペとは恐れ入ったよ。
***すれ立てるまでもない質問はここで 第23刷***
http://pc3.2ch.net/test/read.cgi/tech/1034088067/754
0890manko_chinko ◆GLc2rpKRNM
NGNG> (キーボードが黄色く黄ばんでそう。)
やはりキーボード叩くときも左手は使わないんでしょうか。
0892アフォルトの名無しさん
NGNG威張るな。
コピペだろうがそうでなかろうが、888 が痛い事に変わりは無く。
0893アフォルトの名無しさん
NGNG> あとインドにはプログラマーが沢山いると聞いたことがあるんですが
>>890
> やはりキーボード叩くときも左手は使わないんでしょうか。
スレ違い。
0895デフォルトの名無しさん
NGNGunix上でc言語を使っているんですが、
ユーザーからの入力受付のscanfを使うと
パスワードを入力したときに人に見られてしまいます。
簡単に*マークに変える方法はないでしょうか?
もしくは、人にばれないようにする方法はないでしょうか?
0896デフォルトの名無しさん
NGNGcursese
0897デフォルトの名無しさん
NGNGscanfを使わないところから始めよう
0898デフォルトの名無しさん
NGNGcursesでnoecho()すr
0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNG090160cm浮き上がるストレート
NGNG#include <stdio.h>
#include <conio.h>
int main(void)
{
char buf[256];int p,key;
for(p=0;p<=255;p++) buf[p]=0;
printf("パスワードを入力してください\n");
for(p=0;;)
{
if(kbhit()!=0)
{
key=getch();
if(key==8&&p!=0)
{
p--;
buf[p]=0;
printf("\b \b");
}
else if(key==13&&p!=0) break;
else if(key!=8&&key!=13)
{
buf[p]=key;
printf("*");
p++;
}
}
}
printf("\n入力されていたパスワード\n%s\n何かボタンを押してください 終了します",buf);
getch();
return 0;
}
0902デフォルトの名無しさん
NGNGUNIXだっていってんだろうが。
それと8だとか13だとかわかりにくい数字を書くな。
0903デフォルトの名無しさん
NGNGmemset(buf, 0x00, sizeof(buf)/sizeof(char))かな。
せめてbzero使え。
0904デフォルトの名無しさん
NGNGsizeof(buf)/sizeof(char)
なにこれ?素直にsizeof bufでいいじゃない。
1で割っても割られる数は変わらない。
0905903
NGNGs%/sizeof(char)%%でよろ。
0906名無しさん@カラアゲうまうま
NGNGもちっとマシなコードを書け。
0907デフォルトの名無しさん
NGNGそういうあんたはどうなんだ?
と言いたいところだけど、実際この人うまいコード書くからなぁ・・・
0909デフォルトの名無しさん
NGNG祖父の遺言でbzeroは使えません
0910デフォルトの名無しさん
NGNG保証されている。
charが8bitであることは保証されていないが、1バイトであることは保証されている。
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG七行プログラミング part2
http://pc3.2ch.net/test/read.cgi/tech/1018840143/649
0914デフォルトの名無しさん
NGNG●持っていないので今は読めないが、覚えておくよ。
0915デフォルトの名無しさん
NGNG参考になるページはあるでしょうか?
0916デフォルトの名無しさん
NGNGこのスレをpop3で検索してごらん?
0917デフォルトの名無しさん
NGNG>>915に来るぞ…。
0918デフォルトの名無しさん
NGNGしまった!
ごめん
俺が悪かった
http://x68000.startshop.co.jp/~68user/net/
0920名無しさん@カラアゲうまうま
NGNG> と言いたいところだけど、実際この人うまいコード書くからなぁ・・・
どこでバレたんだ!?と思ったけど、
>>913
このハンドルは一人じゃないよ。
901は、マジックナンバーとかビジーループとか端末制御コード決めうちとか
同じ判定を二度繰り返すところとか、気に入らんところが多かったので。
0921デフォルトの名無しさん
NGNG最近ゲー作板にも出没してて突っ込みレスでスレが流されてる
0922デフォルトの名無しさん
NGNG> このハンドルは一人じゃないよ。
つまり、どこかの板のデフォルトハンドルってこと?
0923デフォルトの名無しさん
NGNG0924アフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNG0926アフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNGお願いします教えてください
あと、駄目なところの解決方法もよければ教えてください
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
printf("○\n");
return 0;
}
0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNGint main()
{
printf("\\");
return 0;
}
0935デフォルトの名無しさん
NGNGバックスラッシュ?
0936デフォルトの名無しさん
NGNGわかったから、機種、OS書け。
0937930
NGNGx10です
0938デフォルトの名無しさん
NGNG#define RADIUS (10)
int main(){
int x, y, dx, dy;
for(y = 0; y < RADIUS*2; y++){
dy = RADIUS-y;
for(x = 0; x/2 < RADIUS*2; x++){
dx = RADIUS-x/2;
if(dx*dx +dy*dy < RADIUS*RADIUS){
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
return 0;
}
0939930
NGNGまじめに答える気がないのならレスしないでくださいよ。
0940デフォルトの名無しさん
NGNG> まじめに答える気がないのならレスしないでくださいよ。
>>938 が今までで一番まともだと思うが ?
0941デフォルトの名無しさん
NGNG0942くの一
NGNG0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG0947デフォルトの名無しさん
NGNGもしや外出? >>941
0948デフォルトの名無しさん
NGNG10代目になります。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNGアタシが立ててくるわ
0953デフォルトの名無しさん
NGNG長らく続いていたけどもう存在意義が無くなってきたので今回で終わりにしよう。
0954デフォルトの名無しさん
NGNGよろしく。
0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
NGNG0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNGそうでもないと思うが。
初心者な質問しかこないというのはあるな。
0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGそれで本格的なプログラミングができるまでに成長できるんですか?
0963デフォルトの名無しさん
NGNGそれ使えば囲碁プログラムくらいなら作れるぞ。
0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG0966うんもっこ
NGNGフィボナッチ数列の値、anを計算し、表示し、終了するプログラムを教えてください。
ただしa1=1、a2=1、an+2=an+1+anです。範囲以外の数値を読み込んだら、1以上100以下の整数値を
入力せよというメッセージを表示して、入力を待つ
0967デフォルトの名無しさん
NGNGint fibonacii( int n ) {
int a = 1, b = 0;
while( n-- > 0 ) {
int t = a;
a += b;
b = t;
}
return b;
}
あとは自分で
0968デフォルトの名無しさん
NGNGやれやれ。
0969920
NGNG> http://pc3.2ch.net/test/read.cgi/tech/1026793823/644 は 920 か?
ちゃうねん。
0970
NGNGf(x)=1.1x^4+2.6x^3+0.5x^2-2.0x+1.0
のx=0.8のときの関数値f(0.8)を計算するプログラムを作ってください。
0971デフォルトの名無しさん
NGNGprintf("%f\n", 1.1*x*x*x*x + 2.6*x*x*x + 0.5*x*x - 2.0*x + 1.0);
0972新スレ
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1035211039/-4
0973新スレ
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1035211039/l50
0975名無しさん@カラアゲうまうま
NGNG* 755@「C/C++の宿題なら俺にやらせろ!」の解答例。
*/
#include <stdio.h>
unsigned long
powmod(unsigned long x, unsigned long y, unsigned long z)
{
unsigned long r;
for (r = 1; y; y >>= 1) {
if (y & 1) r = r * x % z;
x = x * x % z;
}
return r;
}
int main()
{
printf("%lu\n", powmod(12345, 6789012, 34567));
return 0;
}
0976デフォルトの名無しさん
NGNG何故ここに・・・
0977デフォルトの名無しさん
NGNG0979名無しさん@カラアゲうまうま
NGNGちょっとしたいじわる。
つっても、もう少し単純な方法で満足しちゃったようだから意味ないけど。
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNG>どっちもない。
>B言語はあったが。
矛盾してるぞ。
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNGプリントフォーマット
0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNGB言語=ベーシック
だろ。アホ誌ね >>982
0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992おいっす
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG必読書スレは知ってるのに、ただ会話したいがために
質問するとは姑息な野郎だよ。
0996デフォルトの名無しさん
NGNG0997質問は別スレに&rlo;ょちてっ逝&lro;
NGNG本の事なら ↓ に逝ってちょ
推薦図書/必読書のためのスレッド PART 6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/l50
C の事なら ↓ に逝ってちょ
C言語ならアタシに聞きなさい<36>
http://pc3.2ch.net/test/read.cgi/tech/1035211039/l50
0998デフォルトの名無しさん
NGNG1001はもらった!
0999デフォルトの名無しさん
NGNG10001001
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。