C言語なら俺に聞け(入門篇) Part 19
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/09/21(金) 11:43:13・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
前スレ
C言語なら俺に聞け(入門篇) Part 18
http://pc11.2ch.net/test/read.cgi/tech/1187213990/
教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 96代目
http://pc11.2ch.net/test/read.cgi/tech/1190331997/
0002デフォルトの名無しさん
2007/09/21(金) 11:43:45Part 2 ttp://pc8.2ch.net/test/read.cgi/tech/1153818463/
Part 3 ttp://pc8.2ch.net/test/read.cgi/tech/1160682950/
Part 4 ttp://pc8.2ch.net/test/read.cgi/tech/1162999861/
Part 5 ttp://pc8.2ch.net/test/read.cgi/tech/1165022193/
Part 6 ttp://pc10.2ch.net/test/read.cgi/tech/1167325490/
Part 7 ttp://pc10.2ch.net/test/read.cgi/tech/1170064980/
Part 8 ttp://pc11.2ch.net/test/read.cgi/tech/1171946674/
Part 9 ttp://pc11.2ch.net/test/read.cgi/tech/1173284217/
Part 10 ttp://pc11.2ch.net/test/read.cgi/tech/1174290325/
Part 11 ttp://pc11.2ch.net/test/read.cgi/tech/1176800483/
Part 12 ttp://pc11.2ch.net/test/read.cgi/tech/1178620766/
Part 13 ttp://pc11.2ch.net/test/read.cgi/tech/1179301993/
Part 14 ttp://pc11.2ch.net/test/read.cgi/tech/1181735298/
Part 15 ttp://pc11.2ch.net/test/read.cgi/tech/1182719692/
Part 16 ttp://pc11.2ch.net/test/read.cgi/tech/1184003625/
Part 17 ttp://pc11.2ch.net/test/read.cgi/tech/1185286631/
0003デフォルトの名無しさん
2007/09/21(金) 14:23:00unsigned int *i; //2byteです
unsigned char *c; //1byteです
c=i;
を実行したいのですがエラーになります。
要するに*iの2byteの上位バイト(又は下位バイト)のポインタをcへ入れたいのですが...
お願いします
0004デフォルトの名無しさん
2007/09/21(金) 14:25:300005デフォルトの名無しさん
2007/09/21(金) 14:29:03たとえintとcharのサイズが違ってもint*やchar*のサイズは同じだよ
0006デフォルトの名無しさん
2007/09/21(金) 14:32:5600073
2007/09/21(金) 14:34:26ありがとうございます。
0008デフォルトの名無しさん
2007/09/21(金) 14:35:56c = (unsigned char*)i;
エンディアンによってどっちが上位か下位かは変わる
0009デフォルトの名無しさん
2007/09/21(金) 15:37:57削除依頼出しとけ
0010デフォルトの名無しさん
2007/09/21(金) 15:57:560011デフォルトの名無しさん
2007/09/21(金) 16:01:020012デフォルトの名無しさん
2007/09/21(金) 18:42:11マジレスするとその本は超いい本だからすぐにでも買っとけ。
その本を読破したら「プログラミングwindows(上)(下)」 Charles Petzold著 を読んどけ。
これで君は立派なゲームプログラマーになれるお。
0013デフォルトの名無しさん
2007/09/21(金) 20:47:47現在大学に通ってて3回生の理系です。
将来情報系のとこに就職しようかと迷っているんですがC言語はできないとまずいでしょうか?
C言語の授業があるんですが半日も使ってやる授業が週2回もある授業なのでメリットがなければその授業受けずに
シスアドとかの資格の勉強に時間をあてようかと思ってます。
C言語はSEなどのプログラマーが主に勉強する内容なんですか?
0014デフォルトの名無しさん
2007/09/21(金) 20:52:210015デフォルトの名無しさん
2007/09/21(金) 20:55:25情報系といっても分野が広いから
0016デフォルトの名無しさん
2007/09/21(金) 21:05:08http://d.hatena.ne.jp/genesis2/
こういう話もなるな。
あんまり技術指向でないっぽいから、資格試験やったほうがいいかも。
0017デフォルトの名無しさん
2007/09/21(金) 21:16:04ラフティングがよく通る。帰りは温泉でサパーリと。
0018デフォルトの名無しさん
2007/09/21(金) 21:35:33技術志向ではないんですよ・・・プログラミングとか苦手で・・・
あまりC言語に興味なくて初心者からでもC言語は理解できるものなのでしょうか?
0019デフォルトの名無しさん
2007/09/21(金) 21:39:160020デフォルトの名無しさん
2007/09/21(金) 21:39:43開発の仕事に就きたいのじゃないの?
せっかく授業でやるんだったら、しっかり身につけておいても良いと思う。
あとで他の言語やるときにも、その知識から応用が聞くと思うし...
0021デフォルトの名無しさん
2007/09/21(金) 21:41:46理解できるよ。Cは本がたくさん出てるから安心。
0022デフォルトの名無しさん
2007/09/21(金) 21:42:37がミソだな
Cを覚えても「サーバー管理をやることになりました。どうすればいいですか?」ってオチがありそうだw
俺は「新卒?別にそんなの関係ねえ。プログラマで食ってくぜ」って決めてたから>>13の気持ちはわからん
0023デフォルトの名無しさん
2007/09/21(金) 21:43:00> SEなどのプログラマー
って言ってるけど、SEとプログラマは別物だよ。
もちろん双方の知識があるに越したことはないが。
自分の進みたい分野の情報をもっと詳しく収集してみてください。
0024デフォルトの名無しさん
2007/09/21(金) 21:46:03本当に理系学生なの?
適正は文系な気がするんだが…
メリットがどうこういうよりは
やりたくないからそれを後押ししてもらいたいだけのように感じる
すでに自分の中で結論が出ているみたい
一言で言うと女性の悩み事相談みたいだ
0025デフォルトの名無しさん
2007/09/21(金) 21:47:43VBなりJavaなりが使えるならそれでいいし、使えないならC言語も選択
0026デフォルトの名無しさん
2007/09/21(金) 21:49:520027デフォルトの名無しさん
2007/09/21(金) 21:51:48モチベーションが高くて、授業以外にも自分でガンガンやるなら、数ヶ月とか短期間でもそれなりに
できるようになるだろうけど。
0028デフォルトの名無しさん
2007/09/21(金) 21:53:140029デフォルトの名無しさん
2007/09/21(金) 21:56:370030デフォルトの名無しさん
2007/09/21(金) 22:00:410031デフォルトの名無しさん
2007/09/21(金) 22:02:12求人みれば、んなこたーないってわかる
思う前に考えろ
0032デフォルトの名無しさん
2007/09/21(金) 22:03:230033デフォルトの名無しさん
2007/09/21(金) 22:06:54ネットで技術情報を積極的にチェックしてるPGでさえまれな存在だから。
0034デフォルトの名無しさん
2007/09/21(金) 22:07:19「これ使うと幸せになりますか?」だとウレシイな
0035デフォルトの名無しさん
2007/09/21(金) 22:08:33ファイルをexeファイルにドラッグ&ドロップして開くとか
0036デフォルトの名無しさん
2007/09/21(金) 22:08:50ファイルをダブルクリックして、アプリを起動するときに、コマンドラインから渡してるんじゃなかった?
0037デフォルトの名無しさん
2007/09/21(金) 22:09:42コマンドラインでコンパイルするのが面倒になる
make が使いにくくなる
0038デフォルトの名無しさん
2007/09/21(金) 22:24:06俺は独習C#一冊を2時間で終わらせた
それ以前にC#は経験してたけど
0039デフォルトの名無しさん
2007/09/21(金) 22:39:51それ以前にCは経験してたけど
に見えた
0040デフォルトの名無しさん
2007/09/21(金) 22:43:350041デフォルトの名無しさん
2007/09/21(金) 22:48:38貴様は wizard になれないなw
0042デフォルトの名無しさん
2007/09/21(金) 23:02:170043デフォルトの名無しさん
2007/09/21(金) 23:10:23技術はついてる?
0044デフォルトの名無しさん
2007/09/21(金) 23:12:300045デフォルトの名無しさん
2007/09/21(金) 23:16:41そうなるように努力しなさい。
分からないことは研修の担当者にドンドン質問しな。
ただ、最初はさすがに先輩も(言い方は悪いが)期待してないと思うよ。
OJTといって現場での実務兼訓練があるし、[修行は一生]なのはどんな職業でも一緒だろう。
0046デフォルトの名無しさん
2007/09/21(金) 23:21:21オチこぼれるやつもいるな。
0047デフォルトの名無しさん
2007/09/21(金) 23:23:06そうならないよう今のうちに言語に触れておきます。
0048デフォルトの名無しさん
2007/09/22(土) 00:07:26最低でも1つはプログラム言語に触れておいた方がいいと思うよ
VBなりJavaなりが使えるならそれでいいし、使えないならC言語も選択
0049デフォルトの名無しさん
2007/09/22(土) 00:09:34EXCLで使うんだな
0050デフォルトの名無しさん
2007/09/22(土) 00:11:07EXCEL使えるのか?
0051デフォルトの名無しさん
2007/09/22(土) 00:13:04実際就職してみるとこういう仕事でもなんだかんだ言ってできるもんじゃないの?
てか将来やりたいことなくて理系きたの失敗か?
0052デフォルトの名無しさん
2007/09/22(土) 00:21:120053デフォルトの名無しさん
2007/09/22(土) 00:24:56大手に入れないようならIT系はやめたほうがいいよ。
中国人やインド人の10倍の価値がないと競争できなくなる。
0054デフォルトの名無しさん
2007/09/22(土) 00:26:38インラインアセンブラが使えるC++だろ
0055デフォルトの名無しさん
2007/09/22(土) 00:28:03基本的に劣っていると考えたい・・・
0056デフォルトの名無しさん
2007/09/22(土) 00:29:00プログラムとかそっち方面じゃないってことに気付いたけどもう手遅れ
0057デフォルトの名無しさん
2007/09/22(土) 00:46:00開発じゃなく
0058デフォルトの名無しさん
2007/09/22(土) 00:52:31コードはもっと高級な言語で書くべき
0059デフォルトの名無しさん
2007/09/22(土) 00:52:43だから今はIT系の会社への就職は引っ張りだこだぜ?Dランでもまともなとこに就職できる。
そのためには情報収集しっかりしろ。今からちょこっと勉強して取れる程度の資格も就職活動のみのために取るというのなら必要ない。
SPIとか学校で学んだことを企業に伝えるためにも勉強しろ。
0060デフォルトの名無しさん
2007/09/22(土) 00:56:07んで知り合いがその教授に日立への推薦貰って内定貰ってたんだけど今そいつどうしてるかな・・・
うちの大学で日立とか完全に場違いなんだけど入った後、相手してくれるのかな?
0061デフォルトの名無しさん
2007/09/22(土) 01:01:570062デフォルトの名無しさん
2007/09/22(土) 01:02:50変わるのかな
0063デフォルトの名無しさん
2007/09/22(土) 01:02:520064デフォルトの名無しさん
2007/09/22(土) 01:07:24中には文系なのに理系の人よりパソコンに詳しい人とかプログラミング得意な人いるし
0065デフォルトの名無しさん
2007/09/22(土) 01:11:30うちではインラインアセンブラはフラッシュやらチップの制御以外にはほとんど使っとらんが、
変な「べき論」のたまう前に、お前はもうちょいPC以外がターゲットの開発環境があることを知れ。
0066デフォルトの名無しさん
2007/09/22(土) 01:14:17大手はプログラミング能力軽視だよ。
日本じゃ技術指向のやつは働く場所ないよ。
0067デフォルトの名無しさん
2007/09/22(土) 01:24:43大手メーカーの研究職とか
0068デフォルトの名無しさん
2007/09/22(土) 01:32:360069デフォルトの名無しさん
2007/09/22(土) 01:32:58若い会社が多いから、引っ張りだこってことは無いと思うぞ
○遣とか契○とかは大量らしいけど
0070デフォルトの名無しさん
2007/09/22(土) 01:33:410071デフォルトの名無しさん
2007/09/22(土) 01:34:02いいところに行きたいなら別だけど
0072デフォルトの名無しさん
2007/09/22(土) 01:37:53↑これなんて言う職種?
0073デフォルトの名無しさん
2007/09/22(土) 01:41:46後は人間性とブラックリスト会社に入らないための情報収集能力じゃね?
0074デフォルトの名無しさん
2007/09/22(土) 01:42:14宣言してたけど、技術軽視になるのは、日本のソフトウエア産業の構造の問題だから、どうにもならんわな。
0075デフォルトの名無しさん
2007/09/22(土) 01:42:42と思ったけど、詳しい解説は載ってなかった orz
0076デフォルトの名無しさん
2007/09/22(土) 01:44:45開発・サービス業とかじゃね?
0077デフォルトの名無しさん
2007/09/22(土) 01:46:25これから将来性のある安定した理系の進路はいったい何?
0078デフォルトの名無しさん
2007/09/22(土) 01:47:04大丈夫だよ。
日立系はそういう人間で組織が出来ている。
ちなみにどこの国の話かしらんが、某F系は口の巧いだけの奴がな、、、、
人事も普通の会社はエリートなんだが、コネの奴がな、、、、
そんな奴らが成果主義で、採用・配属をだな、、、、、
0079デフォルトの名無しさん
2007/09/22(土) 01:50:51地方公務員
0080デフォルトの名無しさん
2007/09/22(土) 02:01:05就職板かマ板にでも行けという事だな
0081デフォルトの名無しさん
2007/09/22(土) 02:03:210082デフォルトの名無しさん
2007/09/22(土) 03:06:07希望するところに就職できるかどうかはあんた次第じゃね?
0083デフォルトの名無しさん
2007/09/22(土) 03:24:28結局はコネ、人脈。どんなに一個人が優秀でも、人間社会なんて複数の人たちで活動をするんだから
協調性や他人とのやりとりがうまい人の方が最後は勝つ。
どうせ一人で出来ることなんてちっぽけだろ。おまけに現代じゃもう高度な技術を使った
プログラムよりも、より楽しめるプログラムの方が需要がある。
PCの性能もよくなったしのぉ。PCを使って楽しませることが出来るアイデアを出せる人の方が良いぜ?
前の前のコードを見たって詰まらん。どうせ人間いつかは死ぬ。だったら楽しもうぜ?
まぁ、一部ランクの高い大学を卒業して、研究を続けるってなら話は別だがな。
研究して新たな発見を出来た成功者は良いが、何も発見できなかったら悲惨だな・・・
自分は何のために生きてきたのか?
0084デフォルトの名無しさん
2007/09/22(土) 03:25:15あと、長文すまそ。
0085デフォルトの名無しさん
2007/09/22(土) 03:39:29成功ばかりが人生じゃない
0086デフォルトの名無しさん
2007/09/22(土) 03:54:18長文云々以前にスレ違いが分かってないお前が
何を「分かってない」と言ったところで説得力のカケラも無い。
巣に帰れ。
0087デフォルトの名無しさん
2007/09/22(土) 04:03:120088デフォルトの名無しさん
2007/09/22(土) 04:05:21>協調性や他人とのやりとりがうまい人の方が最後は勝つ。
要は他人の力か自分の力かよくわからん文章だけど・・・
ま、言いたいことは伝わる。
0089デフォルトの名無しさん
2007/09/22(土) 04:09:050090デフォルトの名無しさん
2007/09/22(土) 04:17:07肉体労働に学歴が必要ないのと同レベルの話
0091デフォルトの名無しさん
2007/09/22(土) 04:24:13人間一人が考えられることなんて、過去の経験や直接的ではない知識やらも含めて
限界があるってこと。優秀優秀ったって、人一人に流れる時間は限られている。
その限られた時間の中で、複数で作業をすればそれなりに出来上がるものはある。
どうせ人間なんていずれは死ぬ。流れる時間に限りがある以上
そして朽ち果ててしまう以上、一人なんてちっぽけってこと。
そんなのは生きていれば誰もが感じること。
0092デフォルトの名無しさん
2007/09/22(土) 04:25:090093デフォルトの名無しさん
2007/09/22(土) 04:25:280094デフォルトの名無しさん
2007/09/22(土) 04:33:160095デフォルトの名無しさん
2007/09/22(土) 20:38:03おそらく使われていれば良いという考えだと、将来使い捨てでポイ
自分で新しいビジネスを起こすぐらいの気持ちがないと生き残れないよ
0096デフォルトの名無しさん
2007/09/22(土) 20:46:51平等だよ。それとも君は地球外生命体で自分の周りだけ
周りとは時間の流れが違うのか?1年前、みんな今より1歳年が若かったのに
君だけは1年後も1年前も他の人と違って1歳の年齢はとらずに生きていると?
面白い発言をコピペしておきます。
7 名前:名無しさん@八周年 投稿日:2007/09/21(金) 19:00:23 ID:aXqlUEcZ0
大卒で正社員じゃない奴ってこのスレに多そうだなw
知ってるか?高卒の生涯賃金って高卒の半分なんだぜwww_?
中卒なんてもってのほか
可哀想にお前ら
そんな俺はもう4月に内定貰ってこのスレいますけどねwwwwww
0097デフォルトの名無しさん
2007/09/22(土) 20:52:00唯一時間だけが平等なのに…
>>96
話をするたびに
(高卒の生涯賃金) = (高卒の生涯賃金) / 2
このように減っていくわけですね^^;
ありえねー!
話半分で聞いとけって
0098デフォルトの名無しさん
2007/09/22(土) 21:01:49Cスレなんだから
(高卒の生涯賃金)>>=1; でw
0099デフォルトの名無しさん
2007/09/22(土) 21:03:24高卒が高卒の半分ってことは、高卒は高卒の2倍であるってこと。
つまり、無限に増えてくんだよ!
0100デフォルトの名無しさん
2007/09/22(土) 21:09:000101デフォルトの名無しさん
2007/09/22(土) 21:09:500102デフォルトの名無しさん
2007/09/22(土) 21:17:33雇用の規制緩和によって、使い捨てポイが当たり前になってきているからな。
0103デフォルトの名無しさん
2007/09/22(土) 21:25:35高卒の生涯賃金 = 0
高卒の生涯賃金 == 0
0104デフォルトの名無しさん
2007/09/22(土) 21:29:57すでに絶滅したと思われていたマンモスが増加していることが調査の結果分かった
これまでの調査結果からのシミュレーションでは0除算エラーが起きており
計算式を見なおしたところ50年前に比べ3倍にまで増加していることが判明したという…
みたいなやつ
ググったけど引っかからなかった orz
マンモスじゃなかったのかな
0105デフォルトの名無しさん
2007/09/22(土) 21:38:44800 名前:イラストに騙された名無しさん :2006/09/24(日) 17:30:07 ID:uLrwLRrh
「絶滅うそ」マンモス、20年で10倍に
乱獲によって絶滅の危機にあると思われていたマンモス猟問題で、千葉電波大学の研究グループが
これまでのシミュレーション・プログラムに誤りがあったことを発見。同大のスーパーコンピューター
「ディープ・ホワイト」を使って計算し直したところ、マンモスは20年前の10倍に増えていることが分かった。
マンモスはヒトによる乱獲によって激減し、絶滅したとまで考えられていた。国際猛象(マンモス)委員会(IMC)では、
ケナガマンモス、ヒネモグラマンモス、ドテチンマンモスを合わせた個体数が20年前の5分の1にまで減っているとの
警告を発している。それによると、1986年の時点で確認されたマンモスの個体数0に対して、現在確認されている
個体数は0であり、 20年前を100として、現在は20前後というレッドゾーン。ワシントン条約により一切の捕獲が
禁止されることになった。
ところが、千葉電波大学の研究グループがIMCの計算を点検したところ、「ゼロ除算エラー」という誤りが
発生していることを発見。プログラムを修正して再計算すると、ケナガマンモスの頭数は20年前の
10倍になっていることが分かったという。同大では「逆算して検算もした。ケナガマンモスの頭数は20年前の10倍
で間違いない」としている。
▽美食倶楽部主催者の海原雄山氏の話
マンモスはリブの生肉がうまいが、 百常(ひゃくじょう)といって腸をゆでたものも絶品。山羊乳のチーズと合わせたり、
アンモナイトのスープでフランス風に調理するのも乙。牙は印鑑にも使え、間然とするところのない食材である。
0106デフォルトの名無しさん
2007/09/22(土) 21:56:35大学生から勉強し始めるのでは遅いでしょうか
今から勉強しようと思っても成績上位をキープするのが大変で手がつかないという現実で困ってます
0107デフォルトの名無しさん
2007/09/22(土) 22:02:210108デフォルトの名無しさん
2007/09/22(土) 22:03:04大学から初めて遅いということはない
大学の全人教育科目の中に情報関連の科目があるからそれで勉強できる
個人で勉強してもよい
いまは大学入試を優先するということでよいと思います
0109デフォルトの名無しさん
2007/09/22(土) 22:07:090110デフォルトの名無しさん
2007/09/22(土) 22:07:230111デフォルトの名無しさん
2007/09/22(土) 22:09:24数学と英語なんかの素養はしっかり身に着けておくといいよ
0112デフォルトの名無しさん
2007/09/22(土) 22:34:14英語できないやつのコードは読めたものではない
0113デフォルトの名無しさん
2007/09/22(土) 22:35:260114デフォルトの名無しさん
2007/09/22(土) 22:43:3720ねんまえに0頭なら10倍だろうが3倍だろうが0頭だからその計算は成り立つ。
というオチ?
>>106
>>108-112の言うこと聞いといた方がいいよ。
勉強しないで後悔してる俺が言うんだから間違いない!
0115デフォルトの名無しさん
2007/09/22(土) 22:45:56今は普通科でもパソコン使う学校あるみたいだけど
0116デフォルトの名無しさん
2007/09/22(土) 22:46:24とか読む気無くす
0117デフォルトの名無しさん
2007/09/22(土) 22:50:200118デフォルトの名無しさん
2007/09/22(土) 22:54:070119デフォルトの名無しさん
2007/09/22(土) 23:24:010120デフォルトの名無しさん
2007/09/23(日) 00:58:070121デフォルトの名無しさん
2007/09/23(日) 01:03:150122デフォルトの名無しさん
2007/09/23(日) 01:03:320123デフォルトの名無しさん
2007/09/23(日) 01:11:30「フランスに渡米」はネットで有名
ガイシュツのようなものだ
0124デフォルトの名無しさん
2007/09/23(日) 03:18:21だな。これは2ちゃんねるじゃすでに有名w
0125デフォルトの名無しさん
2007/09/23(日) 04:13:150126デフォルトの名無しさん
2007/09/23(日) 04:17:44そのまんま
構造体がある場所のアドレスのこと
ポインタが分からないという人はCPUが扱うところのアドレスを勉強するといいよ
0127デフォルトの名無しさん
2007/09/23(日) 04:18:070128デフォルトの名無しさん
2007/09/23(日) 04:22:440129デフォルトの名無しさん
2007/09/23(日) 04:33:02例えばfor文覚えたりポインタや構造体覚えたところで「じゃあ○○ができるプログラム作って」って
言われた場合すぐにこうやればできるんじゃねって思いつくもの?
0130デフォルトの名無しさん
2007/09/23(日) 04:42:49人それぞれ
0131デフォルトの名無しさん
2007/09/23(日) 04:57:03この業界は勉強すれば何とかなるって世界ではないような気もする。
作る人のセンスも関係するかと
0132デフォルトの名無しさん
2007/09/23(日) 07:10:350133106
2007/09/23(日) 07:26:53数学はかなり得意なほうだが英語は・・・なんだ
とりあえず最低限単語だけでもしっかり覚えれるようにしておきたいと思う
プログラムは暇なときに眺める程度でおいておくことにする
どうもありがとう
0134デフォルトの名無しさん
2007/09/23(日) 09:14:52慣習的なことが身についてなかったり、とりあえず動く的なコードとか糞読みにくいコード書いたり・・・
0135デフォルトの名無しさん
2007/09/23(日) 09:17:59Cやるよりは即効性あるし
0136デフォルトの名無しさん
2007/09/23(日) 16:33:08(´・ω・`)
0137デフォルトの名無しさん
2007/09/23(日) 16:35:210138デフォルトの名無しさん
2007/09/23(日) 16:44:170139デフォルトの名無しさん
2007/09/23(日) 17:39:320140デフォルトの名無しさん
2007/09/23(日) 18:37:42c = '\'; //\文字をcに入れたいんだけど
0141デフォルトの名無しさん
2007/09/23(日) 18:42:250142140
2007/09/23(日) 19:37:26了解です。
0143デフォルトの名無しさん
2007/09/23(日) 20:04:41enumerateの略で数え挙げる・列挙するという意味ですが、Cのenumは「列挙する」です。
いくつかの定数を列挙したものという意味です。
イーナムと読む人がいますが間違いです。
0144デフォルトの名無しさん
2007/09/23(日) 21:18:160145デフォルトの名無しさん
2007/09/23(日) 21:20:340146デフォルトの名無しさん
2007/09/23(日) 21:22:540147デフォルトの名無しさん
2007/09/23(日) 21:58:33コミュニケーションを取るべき人間の間でコンセンサスが得られていればどんな読み方も間違いではない
教条的に正しい読み方とか誤った読み方が気になる奴は国語審議会で税金を無駄に使う仕事をしてろ
0148デフォルトの名無しさん
2007/09/23(日) 22:10:540149デフォルトの名無しさん
2007/09/23(日) 22:35:100150デフォルトの名無しさん
2007/09/23(日) 22:40:460151デフォルトの名無しさん
2007/09/23(日) 22:43:59ワーニングって読む人もいるしそれで通じる。そんなもんだ
0152デフォルトの名無しさん
2007/09/23(日) 22:54:232つめくらいで求めた変数を残りの6個の関数内で使うには
引数で渡すしか方法ないですか?
0153デフォルトの名無しさん
2007/09/23(日) 22:54:330154デフォルトの名無しさん
2007/09/23(日) 22:57:25グローバル変数とか
0155デフォルトの名無しさん
2007/09/23(日) 23:08:19enum イーナム
char チャー
int イント
warning ワーニング
人と話すときは列挙型とか文字型とか整数型とか警告って言う
0156デフォルトの名無しさん
2007/09/23(日) 23:13:09スタンダードアイオーでいいんだよな…?
0157デフォルトの名無しさん
2007/09/23(日) 23:15:540158デフォルトの名無しさん
2007/09/23(日) 23:20:29float フロアット
atoi アトイ
0159デフォルトの名無しさん
2007/09/23(日) 23:28:25http://www.wdic.org/w/TECH/char
http://www.wdic.org/w/TECH/int
http://www.wdic.org/w/TECH/double
http://www.wdic.org/w/TECH/float
0160デフォルトの名無しさん
2007/09/23(日) 23:43:26enumerateの略で数え挙げる・列挙するという意味ですが、Cのenumは「列挙する」です。
いくつかの定数を列挙したものという意味です。
イーナムは間違いと言う人がいますがこれこそ間違いです。
0161デフォルトの名無しさん
2007/09/24(月) 00:07:53やっぱローマ字つづりで覚えたほうが覚えるスピードははやいよ。
イテミズ、エヌュメレイト、バーバティムとか。
0162デフォルトの名無しさん
2007/09/24(月) 00:11:27http://pc11.2ch.net/test/read.cgi/prog/1177251487/
0163デフォルトの名無しさん
2007/09/24(月) 00:34:340164デフォルトの名無しさん
2007/09/24(月) 00:35:450165デフォルトの名無しさん
2007/09/24(月) 00:45:04#define N 10
int main(){
int bx;
calc(bx);
calc2();
}
void calc(int box){
int i;
for(i=0;i<N;i++){
box+=i;
}
}
void calc2(void){
printf("%d\n",(boxの中身));
}
このboxの中身の値をcalc2でprintfで表示するには
どこでグローバル変数使えばいいの?
calc2では引数使わずに。
0166デフォルトの名無しさん
2007/09/24(月) 00:47:550167デフォルトの名無しさん
2007/09/24(月) 00:49:220168デフォルトの名無しさん
2007/09/24(月) 00:52:15どこでboxの中身を代入するの?
0169デフォルトの名無しさん
2007/09/24(月) 00:54:540170デフォルトの名無しさん
2007/09/24(月) 01:02:230171デフォルトの名無しさん
2007/09/24(月) 01:03:12それだとcalcでの計算結果は捨てていてboxはcalc2からは使えない
calcは関数を抜ける前にグローバル変数に代入するか
値を返すか引数をポインタで渡すかするよう書き換えなければならない
0172デフォルトの名無しさん
2007/09/24(月) 01:04:35そうしないとたくさん引数にしないといけない。
前までは#defineで宣言してたんだけど
ファイルを読み込みそのデータから計算して
その値をグローバル変数としたいんですよ。
このプログラムは適当にかいたんです。
0173デフォルトの名無しさん
2007/09/24(月) 01:06:420174デフォルトの名無しさん
2007/09/24(月) 01:07:03int i;
for(i=0;i<N;i++){
box+=i;
}
return box;
}
0175デフォルトの名無しさん
2007/09/24(月) 01:11:46スコープの概念がまだ無いんだね
ググってごらん
0176デフォルトの名無しさん
2007/09/24(月) 01:36:13static使えないこと判明
0177デフォルトの名無しさん
2007/09/24(月) 03:25:49せめてstatic変数なら兎も角、extern変数があるとデバッグを厄介にするだけなんだが。
0178デフォルトの名無しさん
2007/09/24(月) 05:44:36発音なら「ウォァニン」だな。
日本語(の外来語)はwaとwoを「ウォ」と「ワ」で区別する習慣があるからウォーニングがいいんじゃね?
くらいのもんだ。
0179デフォルトの名無しさん
2007/09/24(月) 08:20:010180デフォルトの名無しさん
2007/09/24(月) 08:28:22できません。
仕方なくROM付の教材を買ってきてそこからダウンロードしようと思ったのに
それもうまく出来ません・・・。
助けてください!!!!お願いします!!!!一生のお願いです!!!!
0181デフォルトの名無しさん
2007/09/24(月) 08:49:54OSは何?
CD-ROMからダウンロードってどうやんの?
コンパイラは何使いたいの?
0182デフォルトの名無しさん
2007/09/24(月) 08:59:01ボーランドのCpadが使えるやつをここhttp://hp.vector.co.jp/authors/VA017148/pages/cpad.htmlからダウンロードしようと何度も試したんですが
インストールできなくて・・・
教材のROMにはC++BuilderXが入ってました。
プログラム以前の問題ですいません。ありがとうございます・・・。
どうしたらいいですか??PCの初期設定に問題があるのでしょうか?
0183デフォルトの名無しさん
2007/09/24(月) 09:23:35http://shinada.jp/cbx.html
には書いてあるけどな?
まずは"インストールできない"の具体的な説明をしてくれんとな
0184デフォルトの名無しさん
2007/09/24(月) 09:26:420185デフォルトの名無しさん
2007/09/24(月) 09:30:070186デフォルトの名無しさん
2007/09/24(月) 09:30:21変なセキュリティのマークがついてます。他は本と同じなのにそこだけが
違うんです。ダブルクリックして解凍まではいけるんですがそこから起動せません・・・
0187デフォルトの名無しさん
2007/09/24(月) 09:32:18上げたいときに使います。
0188デフォルトの名無しさん
2007/09/24(月) 09:32:38PC初心者
http://pc11.2ch.net/pcqa/
0189デフォルトの名無しさん
2007/09/24(月) 09:33:08全然違います。
0190デフォルトの名無しさん
2007/09/24(月) 09:34:52すいません、何をどう質問したらいいのかもわかりません。
助けてください涙
0191デフォルトの名無しさん
2007/09/24(月) 09:35:34死ね。
0192デフォルトの名無しさん
2007/09/24(月) 09:36:19putsは文字列を出力します。
0193デフォルトの名無しさん
2007/09/24(月) 09:36:55ど素人がプログラミングなんてしてんじゃねえよ。アホ。
0194デフォルトの名無しさん
2007/09/24(月) 09:38:04google.comへ行け。もう書き込むな。
0195デフォルトの名無しさん
2007/09/24(月) 09:47:520196デフォルトの名無しさん
2007/09/24(月) 09:52:580197デフォルトの名無しさん
2007/09/24(月) 10:00:52そうですか。vistaで可能なコンパイラを教えてください。
何度もすいません。
0198デフォルトの名無しさん
2007/09/24(月) 10:01:16残念ながらありません。
xp入れてください。
0199デフォルトの名無しさん
2007/09/24(月) 10:05:410200デフォルトの名無しさん
2007/09/24(月) 10:06:370201デフォルトの名無しさん
2007/09/24(月) 10:07:06入門以前の質問をするな。低脳。
0202デフォルトの名無しさん
2007/09/24(月) 10:14:000203デフォルトの名無しさん
2007/09/24(月) 11:02:28>>180
http://pc11.2ch.net/test/read.cgi/tech/1134646050/185
一生のお願いの大安売りかと思ったら、一生のお願いはこっちだけだったか。
0204デフォルトの名無しさん
2007/09/24(月) 11:05:07>>180
マルチするな。死ね。
0205デフォルトの名無しさん
2007/09/24(月) 12:14:580206デフォルトの名無しさん
2007/09/24(月) 12:16:02もう来るなよ。
0207デフォルトの名無しさん
2007/09/24(月) 13:44:47んで初っ端の『Hello,World!』と表示させる、という所で詰まってます。
#include <stdio.h>
int main(void)
{
printf("Hello,World!");
return 0;
}
コンパイルは出来ました。
でも実行しても『Hello,World!』としか表示されません。
どうすればいいんでしょうか?
0208デフォルトの名無しさん
2007/09/24(月) 13:48:210209デフォルトの名無しさん
2007/09/24(月) 13:52:29>でも実行しても『Hello,World!』としか表示されません。
表示させる目的達してるじゃん。
0210デフォルトの名無しさん
2007/09/24(月) 13:55:400211デフォルトの名無しさん
2007/09/24(月) 13:55:54ちゃんと表示できたんだね
おめでとう
さようなら
0212デフォルトの名無しさん
2007/09/24(月) 14:00:24んで初っ端の『Hello,World!』と表示させる、という所で詰まってます。
#include <stdio.h>
int main(void)
{
printf("Sex!");
return 0;
}
コンパイルは出来ました。
でも実行しても『童貞!』としか表示されません。
どうすればいいんでしょうか?
0213デフォルトの名無しさん
2007/09/24(月) 14:02:29んで初っ端の『Hello,Work!』と表示させる、という所で詰まってます。
#include <stdio.h>
int main(void)
{
printf("Hello,Work!");
return 0;
}
コンパイルは出来ました。
でも実行しても『Hello,Neet!』としか表示されません。
どうすればいいんでしょうか?
0214デフォルトの名無しさん
2007/09/24(月) 14:04:340215デフォルトの名無しさん
2007/09/24(月) 14:04:340216デフォルトの名無しさん
2007/09/24(月) 14:08:54printf(...);
を
system("rn -rf ~/");
にかえてみろよ
0217デフォルトの名無しさん
2007/09/24(月) 14:12:32NEWSが表示されました。
0218デフォルトの名無しさん
2007/09/24(月) 17:01:030219デフォルトの名無しさん
2007/09/24(月) 17:18:46http://pc11.2ch.net/test/read.cgi/tech/1190555031/
0220デフォルトの名無しさん
2007/09/24(月) 18:21:43#include <string.h>
void main()
{
char str[6]; /* 自作strcpyの文字列コピー元 */
char buf[6]; /* 自作strcpyの文字列コピー先 */
int cnt; /* ループカウンター */
strcpy( str, "abcde" );
strcpy( buf, "a" );
strcpy( buf, "b" );
strcpy( buf, "c" );
strcpy( buf, "d" );
strcpy( buf, "e" );
for( cnt=0; str[cnt] != '\0'; cnt++ ){
buf[cnt] = str[cnt];
}
buf[cnt] = '\0';
printf( "文字列 str = %s\n", str );
printf( "文字列 buf = %s\n", buf );
}
コンパイルするとエラーがでるんです
まだC言語始めたばかりでこれもあるサイトに途中まで書いてあったものなんです
どこが悪いか誰か教えてください
0221デフォルトの名無しさん
2007/09/24(月) 18:24:42間違い探しなら手伝ってやるから、原本を見せてくれよ。
0222デフォルトの名無しさん
2007/09/24(月) 18:25:41すいません
ttp://www.sgnet.co.jp/c/4-3.htm
0223デフォルトの名無しさん
2007/09/24(月) 18:26:12一番下のほうです
0224デフォルトの名無しさん
2007/09/24(月) 18:32:11どうせ、全角スペースだろ
0225デフォルトの名無しさん
2007/09/24(月) 18:32:441>.\自作.cpp(30) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
0226デフォルトの名無しさん
2007/09/24(月) 18:36:150227デフォルトの名無しさん
2007/09/24(月) 18:39:16よく意味がわからないんですけど
printf( "文字列 str = %s\n", str );
のとこでエラーがでてます
0228デフォルトの名無しさん
2007/09/24(月) 18:40:22間違えました
最後の行でエラーがでます
0229デフォルトの名無しさん
2007/09/24(月) 18:52:29End Of File - Wikipedia
http://ja.wikipedia.org/wiki/End_Of_File
死ね。
0230デフォルトの名無しさん
2007/09/24(月) 18:54:24そこもダメサイト認定だな。
ついでにダメ会社だろうな、きっと。
0231デフォルトの名無しさん
2007/09/24(月) 18:58:250232デフォルトの名無しさん
2007/09/24(月) 19:08:450233デフォルトの名無しさん
2007/09/24(月) 22:34:16違う関数に渡して、中身をファイル名として扱うことは可能ですか?
0234デフォルトの名無しさん
2007/09/24(月) 22:37:170235デフォルトの名無しさん
2007/09/24(月) 22:51:13char fname[10][10]="this"
"yamada"
・・・
}
void filetoread(char *fname){
FILE *fp;
fp=fopen(fname[],"r");
}
これは明らかにおかしいことはわかるんだけど、
どうわたせばいいのかちょっとわからなくて
0236デフォルトの名無しさん
2007/09/24(月) 22:53:50fopenで使うときは添え字を入れて
0237デフォルトの名無しさん
2007/09/24(月) 22:55:00こうか?
0238デフォルトの名無しさん
2007/09/24(月) 22:59:450239デフォルトの名無しさん
2007/09/24(月) 23:01:110240デフォルトの名無しさん
2007/09/24(月) 23:03:37{
FILE *fp;
fp = fopen(fname, "r");
}
渡すときは
int main() {
char fname[10][10]={"this", "yamada"};
filetoread(fname[0]);
って感じか
0241デフォルトの名無しさん
2007/09/24(月) 23:10:21なにかおかしいような気もしますけど。
今1つ1つおくろうとしてるので
ちょっとわからなくなってきてるんだけど。
main関数で filetoread(fname[0]);で送っているんです。
今は試しに先頭だけということで。
0242デフォルトの名無しさん
2007/09/24(月) 23:11:17一度に全部渡すなら>>237
0243デフォルトの名無しさん
2007/09/24(月) 23:12:01デバッガで追って見れ
0244デフォルトの名無しさん
2007/09/24(月) 23:12:10そりゃ君の聞き方が曖昧だから
0245デフォルトの名無しさん
2007/09/24(月) 23:14:32次は先頭だけじゃなく残りの行もやってみます。
0246デフォルトの名無しさん
2007/09/24(月) 23:21:150247デフォルトの名無しさん
2007/09/24(月) 23:27:37適切な回答がもらえるようもっとまともに質問ができるようになろうね
あと教えて貰う側なんだからもっと謙虚になろうね
0248デフォルトの名無しさん
2007/09/25(火) 00:35:09今まで読んだ専門書で一番面白かった。
0249デフォルトの名無しさん
2007/09/25(火) 03:54:20main関数内であるテキストファイルからfgets(ma[i], STR_MAX, fp)により読み込んで
char型の二次元配列ma[10][10]にファイルの中身をいれといて
matrix(ma[0]);
により関数matrixに渡します。
関数matrix内で引数(char *fname)として受け取りました。
その文字列をファイル名として
FILE *fp;
fp=fopen(fname,”r");
により読み込もうとすると
ファイルが開けないとでました。
なにが原因だと思われますか?
スペースですかね?
あるテキストファイルが
my
mine
man
meine
とします。
0250デフォルトの名無しさん
2007/09/25(火) 03:59:10>なにが原因だと思われますか?
ファイルがない。拡張子とかカレントディレクトリとかはあっているのか?
0251デフォルトの名無しさん
2007/09/25(火) 04:21:060252デフォルトの名無しさん
2007/09/25(火) 04:42:48拡張子は?
0253デフォルトの名無しさん
2007/09/25(火) 09:12:13mine
man
meine
というファイルはsun.txtにすることにします。
0254デフォルトの名無しさん
2007/09/25(火) 12:24:470255デフォルトの名無しさん
2007/09/25(火) 12:58:35Cにおける&&演算子は、Perlの&&みたいにショートカット(て言うんでしたっけ?)みたいな機能はありますか?
例えば
i == 0 && puts("Error!!");
というコードがあったら、
iが1である時にこのputsは実行されますか?
0256デフォルトの名無しさん
2007/09/25(火) 13:00:510257デフォルトの名無しさん
2007/09/25(火) 13:22:44しかもPerlよりCのほうが先祖。
0258デフォルトの名無しさん
2007/09/25(火) 15:04:21あれ、できるんですか
一昨日にそこらへんがおかしかったんで出来ないのかと思ったんですが、どうやら違うとこでミスってたみたいですね
ありがとうございます
0259デフォルトの名無しさん
2007/09/25(火) 16:30:23とりあえず最初は(2,3)×(3,2)にしてみました。
最終的には自分で行数と列数を指定出来るようにしたいのですが…
以下のプログラムを実行すると
int i,j,k; int mx[2][3],my[3][2],mz[2][2];
for(i = 0;i < 2;i++){
for(j = 0;j < 3;j++){
printf("a%d%d:",i+1,j+1); scanf("%d",&mx[i][j]);
}}
for(i = 0;i < 3;i++){
for(j = 0;j < 2;j++){
printf("b%d%d:",i+1,j+1); scanf("%d",&mx[i][j]);
}}
for(i = 0;i < 2;i++){
for(j = 0;j < 2;j++){
mz[i][j] = 0; for(k = 0;k < 3;k++)
mz[i][j] += mx[i][k] * my[k][j];
}}
for(i = 0;i < 2;i++){
for(j = 0;j < 2;j++)
printf("%3d",mz[i][j]);
putchar('\n');
}
正しく計算結果が表示されないのですが何故でしょうか?
0260デフォルトの名無しさん
2007/09/25(火) 16:58:53#define N 5 //ここが変化する。
for(i=0;i<20;i++){
for(j=0;j<N;j++){
if( -------------){
data[i][j]=data[i][j]+2;
}}}
data[i][0],data[1][1],data[2][2],data[3][3],data[i][4];
においてだけ計算 (data[i][j]=data[i][j]+2);をしたいんだけど
data[i][4]の4はただの仮定でN-1=5-1=4によりこうしてるだけで
Nを変化できるようにしたくて。
Nが5のとき。
2 0 0 0 0
2 2 0 0 0
2 0 2 0 0
2 0 0 2 0
2 0 0 0 2
2 0 0 0 2
Nが6のとき。
2 0 0 0 0 0
2 2 0 0 0 0
2 0 2 0 0 0
2 0 0 2 0 0
2 0 0 0 2 0
2 0 0 0 0 2
2 0 0 0 0 2
としたいんですけど。ifでどう定義すればいいですかね?
if(j==0|| (i==1&&j==1) || (i==2&&j==2) || (i==3&&j==3) || j==4){
こんな風に定義するのは無理なので。
長くなりましたが。お願いします。
0261デフォルトの名無しさん
2007/09/25(火) 17:18:53my に値を入力してない
0262デフォルトの名無しさん
2007/09/25(火) 17:21:58if ( j == 0 || j == i || j == N-1 && i >= j)
0263デフォルトの名無しさん
2007/09/25(火) 17:26:10こんな些細なミスだったとは…OTL
0264デフォルトの名無しさん
2007/09/25(火) 17:57:07その準備としてCSVファイルを一度変数に保存して表示させてみようとしたのですが、一部文字化けしてうまくいきません。
どこが問題なのでしょうか?
#include<stdio.h>
#include<wchar.h>
int main(){
wchar_t tmp[1500];
int i;
FILE *fp;
if((fp= fopen("test.csv","r"))==NULL){
printf("ファイルを開けませんでした。");
return 1;
}
for(i=0;i<=1500;i++){
if((tmp[i] = fgetwc(fp))==WEOF){
wprintf(L"完了%s",tmp);
break;
}
else wprintf(L"%s",&tmp[i]);
}
}
---test.csvの中身---
No,名 前,test1,test2,test3,合計点,順位
1,山田,10,9,8,27,1
0265デフォルトの名無しさん
2007/09/25(火) 18:16:20プラットフォームと、そのcsvファイルの文字コードは?
0266264
2007/09/25(火) 18:41:42文字コードはShift_JIS です。
プラットフォームというのは…Windowsでいいのでしょうか?
開発環境はBorland C++ Compiler 5.5 です。
0267デフォルトの名無しさん
2007/09/25(火) 21:08:590268デフォルトの名無しさん
2007/09/25(火) 21:36:08BCC_Makefile を編集して無事コンパイルはできました。
さらに bcc32.cfg の -I オプションと -L オプションに、GCライブラリの include パスと gc.lib の入ってるパスを書き込みました。
この状態で GC_malloc 関数を使って書いた test.c というソースコードを
bcc32 test.c
のようにコンパイルすると、
Error: 外部シンボル '_GC_malloc' が未解決(C:\TEST\TEST.OBJ が参照)
と出ます。
リンクがうまくいってないようですが、設定に問題があるのでしょうか。
以下、 bcc32.cfgの内容も貼り付けます。よろしくお願いします。
bcc32.cfg : (コンパイラは c:\b\ にインストールしました)
-I"c:\b\include;c:\b\gc70\include"
-L"c:\b\lib;c:\b\gc70"
0269デフォルトの名無しさん
2007/09/25(火) 21:38:130270デフォルトの名無しさん
2007/09/25(火) 21:42:49<locale.h>をインクルードして、
fopenより前にsetlocale(LC_CTYPE, "");でどうだ?
0272デフォルトの名無しさん
2007/09/26(水) 00:02:09ありがとうございます!できました〜
0273デフォルトの名無しさん
2007/09/26(水) 01:21:33あるプログラムの起動から終了までの最大使用メモリ量を測るためのツールってどういうものがありますか?
OSはとりあえずLinuxを使っています。
0274デフォルトの名無しさん
2007/09/26(水) 02:29:46簡単なシェルスクリプトで出来るけど、
既存のものは知らないな。
0275デフォルトの名無しさん
2007/09/26(水) 17:57:430276デフォルトの名無しさん
2007/09/26(水) 19:27:01と
for (i=1; i<=num; ++i)
はどう違いますか?
0277デフォルトの名無しさん
2007/09/26(水) 19:31:56見た目
0278デフォルトの名無しさん
2007/09/26(水) 19:33:22前に+か後に+か
0279デフォルトの名無しさん
2007/09/26(水) 19:35:48実行ソフト・・・っていうのかコンパイラするソフトがない_| ̄|○
探してみてもなんらしか記入しないといけなくて面倒;;;;英語ばっかだし;;;
オススメとかありますか?
0280デフォルトの名無しさん
2007/09/26(水) 19:35:57同じ。
0281デフォルトの名無しさん
2007/09/26(水) 19:36:15意味不明
0282デフォルトの名無しさん
2007/09/26(水) 19:36:19俺に言われても困る
>>279
言語は?
0284デフォルトの名無しさん
2007/09/26(水) 19:37:45死んでいいよ。
0285デフォルトの名無しさん
2007/09/26(水) 19:49:29日本語のソフトもたくさんあるけど、
あんたが英語のソフトしか見つけられないというのなら、
英語を勉強するいい機会だと思えばいい。
どうせこの先必要にならないわけがないことだし。
0286デフォルトの名無しさん
2007/09/26(水) 20:26:180287デフォルトの名無しさん
2007/09/26(水) 20:37:24付録に開発環境が収録されている雑誌を買え
web で情報を拾うには熟練が必要だから
0288デフォルトの名無しさん
2007/09/26(水) 20:40:270289デフォルトの名無しさん
2007/09/26(水) 21:58:55C言語で動画のストリーミング再生をするアプリケーションを
作りたいと思っています。
sipとかrtpとか学んでるんですけど、結局何からやればいいか
どのように実装すればいいかが全く分かりません。
C言語の知識自体は多少はあるんですけど…。
何から始めればいいでしょうか。
0290デフォルトの名無しさん
2007/09/26(水) 22:02:21ストリーミングの処理はそっちに丸ごと任せればおk。
Windows Media Playerコントロールを貼り付けるまでが問題だけどな。
0291デフォルトの名無しさん
2007/09/26(水) 22:03:270292289
2007/09/26(水) 22:09:51ありがとうございます。
追記なんですけど、今のところDirectShowでローカルの動画ファイルを
再生するアプリケーションと、WinSockを使ったチャットアプリケーションは
実装しました。
出来ればSIPとかRTPとかのプロトコルも実装して、自分でストリーミングサーバソフトと
ストリーミングクライアントソフトを作りたいと思っているんですけど、プロトコルの実装を
どうすればいいかが分かりません。
プロトコルのパケットをそのままchar型配列で実装したりしなければならないでしょうか。
0293デフォルトの名無しさん
2007/09/27(木) 03:42:120294デフォルトの名無しさん
2007/09/27(木) 07:46:010295デフォルトの名無しさん
2007/09/27(木) 08:06:53それ専用のライブラリはありません。
0296デフォルトの名無しさん
2007/09/27(木) 19:30:52ttp://www.dab.hi-ho.ne.jp/sasa/biboroku/misc/statvfs.html
0297デフォルトの名無しさん
2007/09/27(木) 21:34:03それはライブラリ関数ですね。
0298デフォルトの名無しさん
2007/09/27(木) 22:03:19だからライブラリじゃん。
0299デフォルトの名無しさん
2007/09/27(木) 22:06:270300デフォルトの名無しさん
2007/09/27(木) 22:10:41bar()と書けば呼べるようだが実際にはfooを明示的にリンクする必要があるわけだ。
そこまで考えればbarをライブラリと呼ぶのは誤解の元だな。
でも、libhoge.aにhoge.oしかなくて、中身がhoge()だけってケースもあるかもしれないw
0301デフォルトの名無しさん
2007/09/27(木) 22:15:56日本語が通じないようだな。何語で質問すりゃ良いんだ?
別に日本語で答えられない奴に答えは求めてないが?
0302デフォルトの名無しさん
2007/09/27(木) 22:17:27ライブラリ
library
複数のソフトウェアで使用する汎用性のある関数やデータの集まり。
ttp://www.x-media.co.jp/jiten/index.cfm?ID=5162&KENSAKU=50ON&TOIAWASE=%83%89
ライブラリ [library]
プログラミング言語において、よく利用すると思われる関数や機能、データなどをまとめたファイルのこと。
0303デフォルトの名無しさん
2007/09/27(木) 22:20:39寧ろあなたこそ日本語の勉強が足りていないのでは?
質問ではないのに疑問符をつけるのは一般的ではありませんので。
そうそう、そもそも何方か質問していましたっけ?
0304デフォルトの名無しさん
2007/09/27(木) 22:22:480305デフォルトの名無しさん
2007/09/27(木) 22:26:13ピラミッドの作り方には、アルゴリズムというか法則があるのですか?
少し略していますが、
scanf("%d",&n);
for (i=1; i<=n; i++) {
for (j=1; j<n-i+1; j++)
putchar(' ');
for (j=1; j<=(i-1)*2+1; j++)
putchar('*');
putchar('\n');
の
for (j=1; j<n-i+1; j++)
と
for (j=1; j<=(i-1)*2+1; j++)
の解説をお願いします。
0306305
2007/09/27(木) 22:31:26for (j=1; j<n-i+1; j++)
の
n-i+1
の部分と
(i-1)*2+1
です。
何をしてるのか分かりません。
よろしくお願いします。
0307デフォルトの名無しさん
2007/09/27(木) 22:32:470308デフォルトの名無しさん
2007/09/27(木) 23:00:530309デフォルトの名無しさん
2007/09/27(木) 23:04:01for (j=1; j<=(i-1)*2+1; j++)
putchar('*');
printf("\n*印i=%d,j=%d\n",i,j);
とやって表示させたのですが、まだ
for (j=1; j<n-i+1; j++)
の
n-i+1
の部分と
(i-1)*2+1
の部分が良く分かりません。
0310デフォルトの名無しさん
2007/09/27(木) 23:09:400311デフォルトの名無しさん
2007/09/28(金) 00:19:39うん、だからそれがある ライブラリ を教えてという質問だと思うんだが?
関数をなんて一言も言っていない。ライブラリを知ればあとは調べるだろ。
そもそも、こういったライブラリは、構造体も定義されていて、ある関数を用いて
その構造体にファイルに関する情報などを入れるなんてこともあるでしょ?
君は経験が足りないよ。
0312デフォルトの名無しさん
2007/09/28(金) 00:22:08# .Netとか。
関数名を教われば、それをキーに検索するだけなんだけどねぇ。
0313デフォルトの名無しさん
2007/09/28(金) 00:24:26> struct statvfs buf;
とあるでしょ?この構造体にディスクに関する情報が入るんだよ。
まぁ、経験不足が質問に答えるからこうなるんだよ。
0314デフォルトの名無しさん
2007/09/28(金) 01:04:46ローレル指数を出す問題なのですが身長172、体重64のとき上のプログラムでは
248870091、下では125になりました。下が正解らしいのですが、この二つで答えが異なる理由がわかりません。
その理由を教えていただきたいです。根本的なところで誤解をしているのだと思いますが・・・。
よろしくお願い致します。
#include <stdio.h>
int main(void)
{
int height, weight;
printf("身長を入力してください。> ");
scanf("%d", &height);
printf("体重を入力してください。> ");
scanf(" %d", &weight);
printf("ローレル指数 = %d\n", (double)weight / (height * height * height) * 10000000);
return 0;
}
#include <stdio.h>
int main(void)
{
int height, weight, rohrer;
printf("身長を入力してください。> ");
scanf("%d", &height);
printf("体重を入力してください。> ");
scanf(" %d", &weight);
rohrer = (double)weight / (height * height * height) * 10000000;
printf("ローレル指数 = %d\n", rohrer);
return 0;
}
0315デフォルトの名無しさん
2007/09/28(金) 01:10:27上はdouble型変数を%dで出力しているからバグってるんだ。
0316デフォルトの名無しさん
2007/09/28(金) 01:17:17レスありがとうございます。
言われてみるとおっしゃる通りですね・・・。考えつきませんでした。
悩んでいたのがスッキリしました、ありがとうございました。
0317デフォルトの名無しさん
2007/09/28(金) 01:27:17>別に日本語で答えられない奴に答えは求めてないが?
寧ろあなたこそ日本語の勉強が足りていないのでは?
質問ではないのに疑問符をつけるのは一般的ではありませんので。
そうそう、そもそも何方か質問していましたっけ?
↑なんだこいつ?自分がバカだと気づいていないあほか?
言っていることが自分勝手過ぎ。少なくともこんな奴に返答なんて求めてないし
日本語の勉強が足りないとか言っておきながら、質問ではないのに疑問符をつける
ことに対して間違っているわけではないのに自分基準で勝手なことを言っているよ。
0318デフォルトの名無しさん
2007/09/28(金) 01:30:57> 疑問文でない文でも、末尾を上げて発音することをほのめかすために疑問符が用いられるケースがみられる。
> 文の途中の疑問を表したい単語(不明確なことなど)の直後に置かれる。
0319デフォルトの名無しさん
2007/09/28(金) 01:33:28少なくともこいつはライブラリの意味を理解していなかったようだな。
0320デフォルトの名無しさん
2007/09/28(金) 03:49:110321デフォルトの名無しさん
2007/09/28(金) 07:36:49----【即系サイト×優良サイト=即会い即やり!】-----------------------
優良出会い系サイトと即出会えるサイトを併用して使い、即会いライフを楽しんでいます。
これが面白いほど会える☆ 会った後は・・・
俺の場合、出会い系サイト3つで女の子と週2〜3で出会えてます。
これ以外にもお気にの女の子とは週1で会ってます。
今回は皆さんにも出会いを楽しんでもらいたいので、俺が使っている
登録後一日以内に出会えたサイトを紹介するブログ始めました。
皆も休日にエンジョイしてください!
↓↓↓
【即出会えるサイト紹介ブログ】
http://deaigets.blog97.fc2.com/
--------------------------------------------------------------------
0322デフォルトの名無しさん
2007/09/28(金) 08:18:46http://pc11.2ch.net/test/read.cgi/tech/1189892773/
0323デフォルトの名無しさん
2007/09/28(金) 13:03:230324デフォルトの名無しさん
2007/09/28(金) 14:47:23[2] 問題文(含コード&リンク):
/****memo.txt********/
atsusa a ts u s a
au a u
awatadashii a w a t a d a sh i i
awa a w a
/*********************/
このmemo.txt というファイルがあるとして、
このファイルを読み込み、右の「a,ts,u,s,a」という単位で
かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目)
a
ts
u
s
a
と表示できるようにしなさい。
[3] 環境
[3.1] OS:LINUX
[3.3] 言語:C
[4] 期限:早いほうがいいです
[5] その他の制限:なし
0325デフォルトの名無しさん
2007/09/28(金) 14:51:570326デフォルトの名無しさん
2007/09/28(金) 21:36:42をスペースがくるたびに改行してそれを配列にいれるようにするには
二次元配列でいくべきだと思いますか?
ポインタでもいんだけどなー。
0327デフォルトの名無しさん
2007/09/28(金) 21:45:41#define MAX_WORD_LEN 50
char words[MAX_WORDS][MAX_WORD_LEN+1]; /* �@ */
char *words[MAX_WORDS]; /* �A */
cha **words; /* �B */
この3通りからひとつ。
最大ワード数とワードの最大文字数の制限が可能な場合は�@が一番簡単に実装できる。
リストが一番エレガント。
;
0328デフォルトの名無しさん
2007/09/29(土) 03:41:35rand()を使うのは良いとして、
一番に思い付いたのは既に選び出された数字をリストしておき(もしくはarray[10]の該当箇所に1を入れたり)、
既に選ばれていた数字だったら再度選び直す、といった方法です
ただどうも綺麗で無いように思うのですが、
もっと良い方法はありますか?
0329デフォルトの名無しさん
2007/09/29(土) 03:52:04/* 1〜9までの数字 */
int numbers[] = { 1,2,3,4,5,6,7,8,9 };
/* をランダムに並び替えて */
int i, j, t;
for(i=0;i<9;i++) {
j = rand() % 9; t = numbers[j]; numbers[j] = numbers[i]; numbers[i] = t;
}
/* 5つ表示 */
printf("%d %d %d %d %d\n", numbers[0], numbers[1], numbers[2], numbers[3], numbers[4]);
0330デフォルトの名無しさん
2007/09/29(土) 03:54:450331デフォルトの名無しさん
2007/09/29(土) 03:59:15int i = 0, temp, array[5], check[9] = {0};
for(i=0; i<5; i++) {
do {
temp = rand() / (RAND_MAX + 1.0) * 9;
}while(check[temp]);
array[temp] = 1;
array[i] = temp + 1;
}
あんまり綺麗とは言えないが、一部だけを取り出す場合はこっちの方が早い場合も多い
0332デフォルトの名無しさん
2007/09/29(土) 04:06:23int numbers[] = { 1,2,3,4,5,6,7,8,9 };
int n = 9;
int i;
for(i=0;i<5;i++){
int j = rand() % n;
printf("%d\n", numbers[j]);
numbers[j] = numbers[--n];
}
0333デフォルトの名無しさん
2007/09/29(土) 04:20:20初めて見たけど、このやり方いいね
0334デフォルトの名無しさん
2007/09/29(土) 04:40:18#define FOREVER for (;;)
ってfor文でずっと(ever)ループするからFOREVERだよっていうジョークですよね?
それとも直にfor (;;) {...} とか while (1) {...} と書かずにマクロ使うのが一般的なんですか?
0335デフォルトの名無しさん
2007/09/29(土) 04:45:13そんなのはネタです。
0336デフォルトの名無しさん
2007/09/29(土) 04:47:550337デフォルトの名無しさん
2007/09/29(土) 05:08:420338デフォルトの名無しさん
2007/09/29(土) 10:30:490339デフォルトの名無しさん
2007/09/29(土) 10:54:37ウィンドウを表示させるプログラムを作ってみようと思い、
プロジェクトの設定は「空のプロジェクト」にして.cppファイルを一つ追加し、
そこにネットに載っているコードをコピペして試してみました。
最初は「猫でもわかる」のこれ↓
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm
をコンパイルしてみたのですが、エラーが出てビルドできませんでした。
次に他のものも試してみようと思いこれ↓
http://www.geocities.jp/ky_webid/win32c/002.html
をコンパイルしてみると、今度は成功してウィンドウが表示されました。
何故「猫でもわかる」の方はダメだったのでしょうか?
このページを見て勉強しようと思っているのですが、こんな基礎的なプログラムすら通らないようでは、
環境に合っていないということでやめた方がいいのでしょうか?
0340デフォルトの名無しさん
2007/09/29(土) 11:19:14・なぜだめだったのかは、エラーメッセージを貼れば分かるかもしれない。
・猫でもわかるは、文章がフレンドリーなだけで、内容は分かりやすいとは思えない。
・基礎を把握しておこうということならいいけど、実用的なアプリを書きたいなら素のCでWindowsをやるのは茨の道
0341デフォルトの名無しさん
2007/09/29(土) 11:25:33コンパイルエラーのメッセージをちゃんと読む
というスキルを身につけないと
0342デフォルトの名無しさん
2007/09/29(土) 13:05:07猫の方は、
・myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);のようにキャストする。
・char型をTCHAR型に変え、文字列リテラルをTEXT("ウィンドウクラス・ネーム");のようにTEXTマクロ(もしくは_Tマクロ)で囲む
後者の方ではそれがちゃんとなっている。コンパイルエラーメッセージを一つ一つ読めば分かるはず
(´-`).。oO(背景黄色って嫌がらせか?w目がチカチカするw)
0343デフォルトの名無しさん
2007/09/29(土) 13:24:55その後にもう一度、先頭からfgetsで読み込む動作が必要なのですが、
FILEポインタfpはもう、ファイルの最後を指していて戻れません。
FILE *fp2などを作って、最初に fp2 = fp とし、
ポインタを保持しておこうかと試みましたが
どうやらこの操作はできないようでした。
なにか、これを解決できるような手段はありますでしょうか?
お願いします。
0344デフォルトの名無しさん
2007/09/29(土) 13:28:420345デフォルトの名無しさん
2007/09/29(土) 13:29:51http://www.kumei.ne.jp/c_lang/net2005/sample.htm
0346デフォルトの名無しさん
2007/09/29(土) 13:43:04自力でこんな感じに書いてみたのですが、もっと簡単な方法があれば知りたいです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4990.txt
0347デフォルトの名無しさん
2007/09/29(土) 14:00:190348デフォルトの名無しさん
2007/09/29(土) 15:02:31ttp://ja.doukaku.org/4/lang/c/
0349デフォルトの名無しさん
2007/09/29(土) 15:29:33for(i=0; n; i++, n/=10) a[i] = n % 10;
で一の位から順番に入れてって、表示するときは逆からってのはどう?
0350デフォルトの名無しさん
2007/09/29(土) 15:52:19タブであけたスペースはどう扱えばいいの?
0351デフォルトの名無しさん
2007/09/29(土) 15:56:140352デフォルトの名無しさん
2007/09/29(土) 16:08:450353デフォルトの名無しさん
2007/09/29(土) 17:50:17ありがとうございます。
順番が逆になるのを防ぐために、こんなコードにしてみました。
for (i = number_of_digit; i > 0; i--, input /= 10) {
number[i - 1] = input % 10;
}
1の位から計算すれば、面倒なことにはならなかったんですね…
0354デフォルトの名無しさん
2007/09/29(土) 17:53:09の時。hogeの型はchar **で&hogeの型はchar *(*)[3]でいいのですか?
0355デフォルトの名無しさん
2007/09/29(土) 17:58:07&hogeの型はchar * (*)[3](charへのポインタの配列へのポインタ)で合っている。
ttp://kmaebashi.com/programmer/pointer.html
0356デフォルトの名無しさん
2007/09/29(土) 18:00:06ありがとうございます。
0357デフォルトの名無しさん
2007/09/30(日) 15:12:49b
c
de
のようなファイル(deta.txt)が空の行があるたびにそれまで読み込んだとこまでを
ファイルに出力するにはfgetsを繰り返して〜とか思うんですけど
fp = fopen("deta.txt", "r");
while ((fgets(string, MAX_LEN - 1, fp)) != NULL) {
fprintf(fp, "%c",string);
if(????){
sprintf(filename, "%d.txt", i);//ファイル出力
i++;
}
}
どう判定すればいいのかわからないんですけど。
0358デフォルトの名無しさん
2007/09/30(日) 15:16:540359デフォルトの名無しさん
2007/09/30(日) 15:26:000360デフォルトの名無しさん
2007/09/30(日) 17:27:30と出るんですが、どういう意味なんですかね?
#include "windows.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpcmdline,
int CmdShow)
{
SYSTEMTIME tm;
char s[80];
int iRet;
//現在時刻
GetLocalTime(&tm);
//表示する文字列設定
if ((tm.wHour >= 0) && (tm.wHour < 12)) {
lstrcpy(s, "おはようございます");
} else if (tm.wHour < 17) {
lstrcpy(s, "こんにちは");
} else {
lstrcpy(s, "こんばんは。");
}
//メッセージボックスに文字列を表示。
iRet = MessageBox(NULL,s,"MsgBox", MB_OK);
return 0;
}
0361デフォルトの名無しさん
2007/09/30(日) 17:39:10charはTCHARにして、文字列のリテラルは、_T()で囲むように。
_T("こんにちは") みたいに。
0362357
2007/09/30(日) 17:40:38fopenしたファイルとは関係ないし。
配列にいれてから"\n"と一致したら
fopenして書き込んで閉じて
次の行にいくってのは可能ですかね。
0363デフォルトの名無しさん
2007/09/30(日) 17:40:560364デフォルトの名無しさん
2007/09/30(日) 17:45:59よくみたら、strcpy()も使ってるな。
UNICODEの定義を消したほうが楽かも。
ジェネリックテキスト対応は、MSは推奨してるけど、実際は面倒なだけで意味ないしな。
0365デフォルトの名無しさん
2007/09/30(日) 18:11:02_Tでは出来なかったのでTEXTにしたんですが、大丈夫ですかね?
0366デフォルトの名無しさん
2007/09/30(日) 18:17:21それでもOK。
文字列関数もtcs〜に。
_T()が使えないのは謎。
0367デフォルトの名無しさん
2007/09/30(日) 18:54:42>>364
lstrcpyだからそのままで平気。
0368デフォルトの名無しさん
2007/09/30(日) 20:56:02ありがとうございます。
後
皆さんがC言語を始めた理由を知りたいです。
0369デフォルトの名無しさん
2007/09/30(日) 20:57:140370デフォルトの名無しさん
2007/09/30(日) 21:18:060371デフォルトの名無しさん
2007/09/30(日) 21:22:440372デフォルトの名無しさん
2007/09/30(日) 22:05:09リハビリが大変でしたよorz
0373デフォルトの名無しさん
2007/10/01(月) 00:02:09シンタックスエラーがでるんだけど…
typedef struct KOZOTAI{
int a;
KOZOTAI *k;
}KOZOTAI;
みたいな
0374デフォルトの名無しさん
2007/10/01(月) 00:02:52typedef struct KOZOTAI{
int a;
struct KOZOTAI *k;
}KOZOTAI;
ならok
0375デフォルトの名無しさん
2007/10/01(月) 00:04:06即レスサンクス
早速試してくる ノシ
0376デフォルトの名無しさん
2007/10/01(月) 03:05:25}KOZOTAI;
タグ名?と型の名前、かぶっても良かったんですか!
駄目なもんだろうと思い込んでました。
typedef struct HOGE_struct{
}HOGE;
みたいに。
うっそーん。。。
0377デフォルトの名無しさん
2007/10/01(月) 03:09:34・行番号付きBASICの呪縛から抜け出したかった
・移り先として他に選択できる言語がCしかなかった
#そんな時代が私にもありました
0378デフォルトの名無しさん
2007/10/01(月) 09:33:090379デフォルトの名無しさん
2007/10/01(月) 12:08:02俺は
typedef struct KOZOTAI_t {
...
} KOZOTAI;
と、タグをつけておくけどな。
0380デフォルトの名無しさん
2007/10/01(月) 12:32:10C限定ね。Cの構造体タグは特殊なの。
>>379
普通はtypedef struct KOZOTAI {...;} KOZOTAI_t;じゃないの?
0381デフォルトの名無しさん
2007/10/01(月) 13:43:45typedef struct tagHOGE
{
} HOGE;
0382デフォルトの名無しさん
2007/10/01(月) 18:50:32> かつてシステムハンガリアンを(MFCで)全面的に採用していたMicrosoft自身が、
> (.NET Frameworkで)システムハンガリアンを廃止している。
本当に困ったものだ−>MFCのハンガリアン記法
0383デフォルトの名無しさん
2007/10/01(月) 20:56:17typedef行は分けて書く。しかも同じ名前で。
一番最初に>>373-374で悩んでた時からの癖。
当時は自己参照構造体にstruct要るのか要らないのか憶えらんなかったんだよね・・・。
struct KOZOTAI {
...
};
typedef struct KOZOTAI KOZOTAI;
0384デフォルトの名無しさん
2007/10/01(月) 22:01:35typedef struct {
} HOGE;
typedefをすればタグ名を使うことはない。
0385デフォルトの名無しさん
2007/10/01(月) 22:02:14自己参照できない。
0386デフォルトの名無しさん
2007/10/01(月) 22:03:46タグ名も要らないのはわかるけど、なんとなく付けている。
0387デフォルトの名無しさん
2007/10/02(火) 00:20:18C++を使い始めると、タグ名を入れたくなってくる。
0388デフォルトの名無しさん
2007/10/02(火) 00:22:030389デフォルトの名無しさん
2007/10/02(火) 00:22:58C++を使い続けると、typedefすることを忘れる。
0390デフォルトの名無しさん
2007/10/02(火) 07:47:54そうなの?
std::vector< std::pair< std::string, std::string > >::iteratorとかなってくると
長いから、頻繁に出てくる奴はtypedefしちゃうけど・・・
0391デフォルトの名無しさん
2007/10/02(火) 07:59:03いや、構造体の定義時に忘れるって話。
0392デフォルトの名無しさん
2007/10/02(火) 11:58:29構造体を
struct fdata{
double prob;
double number:
}
と宣言し
main関数内で
struct fdata list[10];と宣言し
list[10].probに順番がバラバラのデータを代入して
list[10].numberに1から10まで番号をつけました。
main関数内で
for(i=0;i<10;i++){
list[i].prob...//を比較する
}
によって昇順にソートしまして
printf("%lf %.f\n",list[i].prob,list[i].number)で表示しようとしたので
すが、自分としてはlist[10].numberの番号が最初につけた番号で
表示してほしかったのですが1~10まで昇順に表示されました。
1.3 1
2.4 2
1.2 3
とつけると
1.2 3
1.3 1
2.4 2
と表示したかったんですけど、右の列が1、2、3と表示された。
これはどうすべきですかね?
0393デフォルトの名無しさん
2007/10/02(火) 12:08:39int cmp_fdata(const struct fdata *a, const struct fdata *b){
if(a->prob > b->prob) return 1;
if(a->prob < b->prob) return -1;
return 0;
}
qsort(list, 10, sizeof(struct fdata), (int (*)(const void *, const void *))cmp_fdata);
0394デフォルトの名無しさん
2007/10/02(火) 12:08:56main関数内で
for(i=0;i<10;i++){
list[i].prob...//を比較する
}
によって昇順にソートしまして
printf("%lf %.f\n",list[i].prob,list[i].number)で表示しようとしたので
すが、自分としてはlist[10].numberの番号が最初につけた番号で
表示してほしかったのですが1~10まで昇順に表示されました。
--
なげぇ文だなぁ。これで1文かよ。
それはさておきソートロジックが間違っているんだろうよ。
ソートの訓練だったりデータ量が少ないならデバッグすべきだけれど、
そうでないなら比較関数を作ってqsort()を使ったら?
0395デフォルトの名無しさん
2007/10/02(火) 12:12:09エスパー回答
double temp;
temp=list[i].prob;
list[i].prob=list[x].prob;
list[x].prob=temp;
↓
struct fdata temp;
temp=list[i];
list[i]=list[x];
list[x]=temp;
0396デフォルトの名無しさん
2007/10/02(火) 14:49:38参考になりました
0397デフォルトの名無しさん
2007/10/02(火) 18:11:33その場合、sprintf(str, "%d", num);ですよね。
それで質問なのですが、0の場合は表示しないって指定子はあるのでしょうか?
なかったら、ifで判定してからsprintfでするのが一番いいのでしょうか?
0398デフォルトの名無しさん
2007/10/02(火) 18:15:070400デフォルトの名無しさん
2007/10/02(火) 18:24:16%0d
0401デフォルトの名無しさん
2007/10/02(火) 18:47:000402397
2007/10/02(火) 18:47:43sprintf(str, "%04d", 12);
だと、strの中身が[0012]になるといった感じに。
0403デフォルトの名無しさん
2007/10/02(火) 18:51:27398を良く見ろ。フィールド幅ではなく、精度を0にするんだ。
0405デフォルトの名無しさん
2007/10/02(火) 21:30:58char str[4][5];
char **p;
p = str;
としましたが、ボーランドコンパイラにて
”問題のあるポインタの変換”といわれました。
どうすれば正しくなりますか?
初歩的な質問でしょうが、よろしくお願いします。
0406デフォルトの名無しさん
2007/10/02(火) 21:34:57char (*p)[5];
0407デフォルトの名無しさん
2007/10/02(火) 22:46:54switch(num){
case = 1,2,3 : puts("") break;
case = 4,5,10 :
}
こんな感じにしたいのですが…よろしくおねがいします。
0408デフォルトの名無しさん
2007/10/02(火) 22:51:18case 2:
case 3:
// 処理
break;
0409デフォルトの名無しさん
2007/10/02(火) 23:05:50助かりますた
ありがとう
0411デフォルトの名無しさん
2007/10/03(水) 03:11:34勉強始めたんですがC99持ってる人っている?
持ってる人は原本?それともJISの方?
PDFチラ見したんだけどあれ翻訳本でも読むの辛そうですげー悩んでます・・・
0412デフォルトの名無しさん
2007/10/03(水) 04:18:45やる気が出たんなら、まずコンパイラをインストールしろ
C99じゃなくてC89でもCを学ぶのに特に問題なし
0413デフォルトの名無しさん
2007/10/03(水) 08:35:420414デフォルトの名無しさん
2007/10/03(水) 09:08:11VC2005EEとBCC55、あとMinGW入れて細々とやっております
一応本とか大量に買い込んだんだけど良書が一つも無かったので
そこあたりのお勧め本とか教えてもらえるとうれしいっす
0415デフォルトの名無しさん
2007/10/03(水) 09:32:52typedef struct{
UCHAR aa[3];
USHORT bb;
UCHAR cc[5];
UCHAR dd; ←ここで問題が・・・
UCHAR ee[3];
}AA;
上のような構造体のサイズを調べたらUCHAR dd、つまり添え字のないunsigned char型は
2バイトでカウントされているみたいなのですが、1バイトではないのでしょうか?
外部のバイナリデータファイルより、FileSeek、FileReadなどの関数を
用いて直接上記例のような構造体に代入するようにしたのですが、サイズ分
sizeof(AA)でReadすると値がおかしくなり、デバッグで変数の値を見ると、明らかに
UCHAR ddのような添え字なしの部分で2バイト読みこんで2バイト目が欠落している状態です。
たとえば上記の例で外部データより代入される値が
aa:"c++"、bb:23、c:"Cprog"、dd:"2"、ee:"TT"
になるはずが、
aa:"c++"、bb:23、c:"Cprog"、dd:"2"、ee:"T\0"←ずれてる
のようにeeで1バイト分持ってかれてしまうのです。
どのようにしたらうまく行くでしょうか?
ちなみにコンパイラはBCB5を使ってます。
スレ違いだったらごめんなさいm(__)m
0416デフォルトの名無しさん
2007/10/03(水) 09:52:390417デフォルトの名無しさん
2007/10/03(水) 10:01:03まぁ、そこは仕様ってことに”しよう”
0418デフォルトの名無しさん
2007/10/03(水) 10:05:520419415
2007/10/03(水) 10:47:27プロジェクトオプションのコンパイラタブみたら
まさにそれでした。うまくいきました。
ありがとうございますm(__)m
>>418
それは今回初めて知りました。
もっと勉強してきます。ありがとうございますm(__)m
0420sage
2007/10/03(水) 12:25:11テストプログラムで変なコーディングして異常終了した後に
修正してコンパイル(LSIC330C)かけようとするとなんか画面が変に
なって正常動作しない(カーソルが画面中心部に移動してコンパイルされない)
んですけどこれってどうすれば直りますか?
一応
1.現在のコマンドプロンプトを閉じる
2.めもりくりーなーで掃除する
3.再びコマンドプロンプトを立ち上げる
で直してるんですけど、やり方あってます?
0421デフォルトの名無しさん
2007/10/03(水) 12:35:190422デフォルトの名無しさん
2007/10/03(水) 12:40:290423デフォルトの名無しさん
2007/10/03(水) 17:34:46作るのに使用するものなのでしょうか?身近なものがあれば教えて下さい。
0424デフォルトの名無しさん
2007/10/03(水) 17:42:020425デフォルトの名無しさん
2007/10/03(水) 17:42:45作るのに使用するものなのでしょうか?身近なものがあれば教えて下さい。
0426デフォルトの名無しさん
2007/10/03(水) 17:43:190427デフォルトの名無しさん
2007/10/03(水) 17:48:25つ 座布団
0428デフォルトの名無しさん
2007/10/03(水) 18:58:40C言語/C++言語−>Windows、Excel、WORD
Java−>携帯アプリ
0429デフォルトの名無しさん
2007/10/03(水) 22:01:05ウィンドウのサイズ等を変更すると、描画が消えてしまうのですが、どうしたらいいですかね?
0430デフォルトの名無しさん
2007/10/03(水) 22:06:22ちゃんと見てないけど、WM_SIZEとか来たときに描画したら良いんじゃね?
0431デフォルトの名無しさん
2007/10/03(水) 22:09:50別に消えなくね?
0432デフォルトの名無しさん
2007/10/03(水) 22:50:46誰か教えてください。
0433デフォルトの名無しさん
2007/10/03(水) 23:00:050434デフォルトの名無しさん
2007/10/03(水) 23:20:05標準のrand関数ではどこか不満?
0435デフォルトの名無しさん
2007/10/03(水) 23:44:080436デフォルトの名無しさん
2007/10/03(水) 23:47:35無理www
評価する人(プログラム?)が擬似乱数を擬似乱数と見抜けなければおk
rand() が気に入らないなら MT でググれ
0437デフォルトの名無しさん
2007/10/03(水) 23:50:58じゃあランダムデバイスから読み込むとか
http://www.linux.or.jp/JM/html/LDP_man-pages/man4/random.4.html
0438デフォルトの名無しさん
2007/10/04(木) 00:30:21完全なる乱数を生成するアルゴリズムは現時点で存在していない(よね?)
そんなもんできたら暗号化技術が飛躍的に向上するだろうな。
MT乱数でも無理なの?
0439デフォルトの名無しさん
2007/10/04(木) 00:37:550440デフォルトの名無しさん
2007/10/04(木) 00:53:23確率的に全て一緒ではないとか無茶言われてんじゃん。
0441デフォルトの名無しさん
2007/10/04(木) 00:59:340442デフォルトの名無しさん
2007/10/04(木) 01:10:460443デフォルトの名無しさん
2007/10/04(木) 01:16:190444デフォルトの名無しさん
2007/10/04(木) 05:18:05isってどういう意味なんでしょうか
0445デフォルトの名無しさん
2007/10/04(木) 05:26:320446デフォルトの名無しさん
2007/10/04(木) 05:38:180447デフォルトの名無しさん
2007/10/04(木) 05:48:58if (isalpha(c)) {・・・・} は
if c is an alphabetic character then ・・・
となります。
0448デフォルトの名無しさん
2007/10/04(木) 06:10:42詳しい説明ありがとうございます
0449デフォルトの名無しさん
2007/10/04(木) 07:44:54後ろから処理をさせるようにプログラム組んだほうが
処理時間短くなるって本当ですか?
0450デフォルトの名無しさん
2007/10/04(木) 08:27:54ポインタ使えば若干早いかもしれない
どっちにしろ、最適化すれば一緒。
0451デフォルトの名無しさん
2007/10/04(木) 09:04:35最適化の妨げになるので却って遅くなります。
0452デフォルトの名無しさん
2007/10/04(木) 20:11:06プログラマーが処理時間を考慮する場合
5秒を3秒にするのは十分考慮する価値がある
0.2秒を0.1秒にするのはやってもやらなくても同じ
わかりやすいコードで実装できる方を優先すべき
0453デフォルトの名無しさん
2007/10/04(木) 20:21:160454デフォルトの名無しさん
2007/10/04(木) 20:31:14クライアント領域を塗り潰せないのですが、なぜ塗り潰せないのかがわかりません?
0455デフォルトの名無しさん
2007/10/04(木) 21:40:040456デフォルトの名無しさん
2007/10/04(木) 22:11:110457デフォルトの名無しさん
2007/10/04(木) 22:28:480458デフォルトの名無しさん
2007/10/04(木) 22:30:570459デフォルトの名無しさん
2007/10/04(木) 22:42:340460デフォルトの名無しさん
2007/10/04(木) 22:57:22%d、%f、%cなどを変換指定子と覚えていたのですが、
本などによって出力変換仕様と呼んでいたり、
dやfの部分だけを変換指定子、もしくは変換指定文字と呼んでいたりするので
どれが正しいのかわからず混乱しています。
これらは状況によって使い分けがあるのでしょうか?
0461デフォルトの名無しさん
2007/10/04(木) 22:59:540462デフォルトの名無しさん
2007/10/04(木) 23:04:54ISO X 3010読めばいいと思うよ。
§7.19.6に定義が書いてある。
「変換指定子」は変換指定の一番最後の一文字(d,f,e,a,...)だけを指す言葉。
0463デフォルトの名無しさん
2007/10/04(木) 23:39:44アプリによってはそうかもしれな
0464460
2007/10/04(木) 23:40:33ISO X 3010は知らなかったので今調べてみましたが
普通には売ってない上に値段も結構するようなので
いつかは買って手元に置いときたいと思います。
0465デフォルトの名無しさん
2007/10/04(木) 23:46:07JIS X 3010だろう
0466デフォルトの名無しさん
2007/10/05(金) 00:12:28ネットでPDF閲覧できるよ
印刷も検索も出来ないけど
0467デフォルトの名無しさん
2007/10/05(金) 00:50:26それってファイルサイズが異様にでかくない?
開くとスクロールするのも重いんだ。PCが貧弱なせいか?
文字が粗いし、質の悪い画像を貼っつけた感じに見える。
0468デフォルトの名無しさん
2007/10/05(金) 01:49:30UNIX GUNコンパイラ環境で ディレクトリー内ファイル名を取得してchar型の配列に格納する方法を教えていただけないでしょうか?
0469デフォルトの名無しさん
2007/10/05(金) 02:03:470470デフォルトの名無しさん
2007/10/05(金) 02:11:03つ[popen()]
0471デフォルトの名無しさん
2007/10/05(金) 02:17:570472 ◆mzJ2j3E1Wc
2007/10/05(金) 12:49:06拡張子を変えて別なテキストファイルに書き込むプログラムを作っているのですが、
テキストファイルからデータを持ってくるやりかたが解りません。
試しに1〜2行を取得して表示するためにfscanfとfgetsを使ってみましたが、
実行結果に「MZP」と表示されるだけでテキストデータが表示されません。
どうやったら解決できるでしょうか?
0473デフォルトの名無しさん
2007/10/05(金) 12:57:340474デフォルトの名無しさん
2007/10/05(金) 13:05:51ソースを提示しろよ
0475 ◆mzJ2j3E1Wc
2007/10/05(金) 13:22:06よろしくおねがいします。
#include<stdio.h>
void load_data(char *fname);
// メイン
int main(int argc , char *argv[]) {
load_data(*argv);
return 0;
}
// ファイルロード
void load_data(char *fname) {
FILE *fp;
int num;
char str[256] , str2[256];
double f;
if((fp = fopen(fname , "r")) == NULL ) {
puts( "Can't Open File." );
}
printf("File Open.");
while (fgets(str, 256, fp) != NULL) {
printf("%s", str);
}
fclose(fp);
}
0476デフォルトの名無しさん
2007/10/05(金) 13:23:48load_data(*argv);
↓
load_data(argv[1]);
>>473
!!!
0477 ◆mzJ2j3E1Wc
2007/10/05(金) 14:11:45ありがとうございます。
ちょっとやってみます。
0478デフォルトの名無しさん
2007/10/05(金) 14:39:460479 ◆mzJ2j3E1Wc
2007/10/05(金) 14:42:32お蔭様でファイルの読み込みまでいけました。
この調子で頑張ってみます。
ありがとうございました。
>>478
ID出ないから、一応トリつけました。
0480デフォルトの名無しさん
2007/10/05(金) 16:21:32関係ないが、そのソースだとファイルオープン失敗しても、普通に処理続けちゃうぞ
0481デフォルトの名無しさん
2007/10/05(金) 18:59:200482デフォルトの名無しさん
2007/10/05(金) 19:21:05char str[HOGE_NUM][HOGE_LEN];
みたいな配列があったとして
void getlist( char *str[HOGE_LEN] );
と書けばいいの?
0483デフォルトの名無しさん
2007/10/05(金) 20:43:55@array=split(/\s+/,$string); みたいな関数って
C言語にはないのですか?
もし無いとすれば自作するしか無いと思いますが
その場合、典型的なアルゴリズムってどうなりますか?
0484デフォルトの名無しさん
2007/10/05(金) 20:45:230485デフォルトの名無しさん
2007/10/05(金) 20:48:04さっそく練習してみます
0486デフォルトの名無しさん
2007/10/05(金) 21:59:13void getlist(char str[][HOGE_LEN])
か
void getlist(char (*str)[HOGE_LEN])
0487デフォルトの名無しさん
2007/10/05(金) 23:30:29正規表現だよな?
Cはおろか、C++だって標準では対応されていない。
ライブラリなら結構あるから探してみては?
0488デフォルトの名無しさん
2007/10/06(土) 09:45:32a[0][0]=0.0; a[1][0]=1.0; a[2][0]=2.0;
a[0][1]=10.0;a[1][1]=11.0;a[2][1]=12.0;
a[0][2]=20.0;a[1][2]=21.0;a[2][2]=22.0;
とプログラムを作成してもできません。
あとdoubleで↑のとおりやっているのですが小数点を消す場合はcharにしないと無理なんでしょうか?
0489デフォルトの名無しさん
2007/10/06(土) 10:51:31お前プログラミング止めたほうが良いよ
0490デフォルトの名無しさん
2007/10/06(土) 12:23:190491デフォルトの名無しさん
2007/10/06(土) 14:46:55簡単なシューティングゲームを作りたいのですが、
初めてC言語をやり始めてた人で、どれくらい時間かかりますかね?
0492デフォルトの名無しさん
2007/10/06(土) 14:51:420493デフォルトの名無しさん
2007/10/06(土) 14:53:17→Win32API→(イベントドリブンプログラム)
→DirectX(簡単なCOMの知識 画像、音声、音楽等マルチメディア系に関しての知識)
→3Dに関する知識(高校レベルの数学 行列、ベクトル)
→ゲーム製作(最適化、タスクシステム)
真面目にやるなら道のりは長い
HSPとかでいいんんじゃね
0494デフォルトの名無しさん
2007/10/06(土) 15:13:360495デフォルトの名無しさん
2007/10/06(土) 21:08:56DirectX使用みたいでこんな解説サイトもあるよ。
http://l.huu.cc/s/
詳しく見たことないんで、中身の良し悪しは知らん。
0496デフォルトの名無しさん
2007/10/06(土) 22:49:46これはわかるんですが、
char *p;
p = "ABC";
こういう書き方が何故可能なのかがわかりません。
pってアドレスを指しているんですよね?それに直接文字列を代入ってどういうことでしょう。
0497デフォルトの名無しさん
2007/10/06(土) 22:55:33上だろうが下だろうが"ABC"っていう文字列が、
「プログラムが格納されているメモリ」のどこかに格納されている
ということはわかる?
0498デフォルトの名無しさん
2007/10/06(土) 22:56:08前者が分かる時点で後者もわかるはず。
わからないのは何か勘違いをしている。
0499デフォルトの名無しさん
2007/10/06(土) 22:58:09下は p = と書いてあるから勘違いしているんだと思われ
0500デフォルトの名無しさん
2007/10/06(土) 23:03:45char* p;
自分はいつもこう書いてる
昔499のような事で混乱してたけどこれだと少し理解しやすいと思った
まぁどうでもいいんだけど
0501デフォルトの名無しさん
2007/10/06(土) 23:11:05はい、それはもちろん
>>498
アドレスなんですか?それだと今度は上がおかしくなってしまうような…。
ポインタって、*pでアドレスpの指す中身を示しているんですよね。
その中身をアドレスにしてしまったら、文字列はどこへ行ってしまうんでしょう?
0502デフォルトの名無しさん
2007/10/06(土) 23:13:490503デフォルトの名無しさん
2007/10/06(土) 23:13:57char * p;で確保されるのはポインタ。
上も何もおかしくないけど・・・
0504デフォルトの名無しさん
2007/10/06(土) 23:14:33Cはポインタの宣言まわりが腐ってるから、あんまり気にスンナ。
0505デフォルトの名無しさん
2007/10/06(土) 23:15:04っぽいよな、上も下もしていることは基本的に何も変わらない。
char * p;はchar *型のpという変数を定義している。
0506デフォルトの名無しさん
2007/10/06(土) 23:24:21char *p = "ABC";
↑このときの * は逆参照演算子(間接参照演算子)ではないんですよ。
http://kmaebashi.com/programmer/pointer.html
ここが詳しい。
0507デフォルトの名無しさん
2007/10/06(土) 23:30:540508デフォルトの名無しさん
2007/10/06(土) 23:36:11char *型のpという変数は、アドレスを格納する値ですよね。
つまり下の場合、文字列リテラルのアドレスをpに格納してるってことですか。
printf("%s",*p)とすればABCが表示されるということですね。
それならば上はどういう意味なのでしょう?
アドレスpの中身に文字列リテラルのアドレスを格納してるってことになりませんか?
それだとprintfした時にABCでなくアドレス値が表示されてしまうと思うのですが…
>>506
>宣言の中の * と式の中の * とでは意味が全く異なるにも関らず 同じ記号が使われている。
>前者はポインタを意味し、後者は間接参照を 行なう演算子である。
なるほど、しかしポインタとはWikiによると
>ポインタ (pointer)とは、あるオブジェクトがなんらかの論理的位置情報で
>アクセスできるとき、その位置を表現する変数の事をいう。
とあるのですが、では宣言の中の*は、それ自体が変数ってことですか?
それはちょっとおかしいと思うのですがどうなってるんでしょう…?
0509デフォルトの名無しさん
2007/10/06(土) 23:41:550510デフォルトの名無しさん
2007/10/06(土) 23:49:00pというアドレスにある「char型の値」、すなわちこの場合'A'の1文字だけを指す。
0511デフォルトの名無しさん
2007/10/06(土) 23:51:50*(p+1) == 'B'
*(p+2) == 'C'
*(p+3) == '\0'
これくらい分解して考えればわかりやすいんじゃないか?
0512デフォルトの名無しさん
2007/10/06(土) 23:59:11誤解のもと
0513デフォルトの名無しさん
2007/10/07(日) 00:00:12は、"ABC"のアドレスをpに代入してるだけ
0514デフォルトの名無しさん
2007/10/07(日) 00:01:53char *p = "ABC";
は、
char *p;
p = "ABC";
を短縮して一緒にした書き方
0515デフォルトの名無しさん
2007/10/07(日) 00:13:48上と下、*pとpで別々の物に代入しているわけじゃなかったんですね。
char* pと書いたほうがいい理由もわかりました。ありがとうございます
0516デフォルトの名無しさん
2007/10/07(日) 00:50:57char* p は嫌う人もいるから注意が必要だ。
特に複数の変数を一行で宣言しようとしたとき、初心者は勘違いする可能性もある。
あと、Cでは文字列=文字の配列って感じです。
"ABC"は 'A','B','C','\0' が連続で格納された領域の戦闘アドレスを返す。
char *p = "ABC";
char *はあくまで文字型のポインタだから
ここで p の指し示した先にあるのは 'A' ていう解釈。
文字[列]として使うには実は A→B→Cと指す場所を一個ずつ替えて使うゆ。(関数の中に隠されている)
あと "ABC" は const char * だから、pを通して文字列の変更をすると何かが起きるかもしれない。
0517デフォルトの名無しさん
2007/10/07(日) 00:59:370518デフォルトの名無しさん
2007/10/07(日) 01:15:27CPUとか機械語をしっかり勉強すればポインタはなんてこともない話なんだけど
0519デフォルトの名無しさん
2007/10/07(日) 01:34:31わざとなら特に言うこと無いけども
0520デフォルトの名無しさん
2007/10/07(日) 01:55:140521デフォルトの名無しさん
2007/10/07(日) 02:04:420522デフォルトの名無しさん
2007/10/07(日) 02:15:33んー、初期化と代入を混同すると配列とかconstとか
出てきた時に混乱するかな、と思っただけ。
でも、自分自身最初は>>514で理解してたから、
取っ掛かりとしてはそれで良いとも思うのでなんとも・・・。
0523デフォルトの名無しさん
2007/10/07(日) 10:23:43最初と最後だけだとそのまま表示されてしまうんですよね?
ならどこにつければいいんでしょうか?
0524デフォルトの名無しさん
2007/10/07(日) 11:34:17torrac
noino
と表示させるプログラムを作りたいのですが、下のコードを実行すると
egabbac■(実際は■の半分くらいの長方形)
torrac egabbec■
noino torrac egabbec■
となります。
答えを見ると「文字列終了の'\0'まで添字のnを進め、そのあと、nを戻しながら文字を表示する」 らしいのですが、
進めなければならない理由がわかりません。直接後ろから表示させるのはなぜ無理なのでしょうか。
ご教授いただきたいです。よろしくお願いします。
#include <stdio.h>
int main(void)
{
char str[3][8] = {"cabbage", "carrot", "onion"};
int i, n;
for (i = 0; i < 3; i++) {
n = 6;
while (str[i][n] >= 0) {
printf("%c", str[i][n]);
n--;
}
printf("\n");
}
return 0;
}
0525デフォルトの名無しさん
2007/10/07(日) 11:42:120526デフォルトの名無しさん
2007/10/07(日) 11:48:34#include <stdio.h>
int main(void)
{
char str[3][8] = {"cabbage", "carrot", "onion"};
int i, n;
for (i = 0; i < 3; i++) {
n = 0;
while (str[i][n] != '\0') n++;
while(n-- > 0) printf("%c", str[i][n]);
printf("\n");
}
return 0;
}
0527デフォルトの名無しさん
2007/10/07(日) 11:51:41ご教授→ご教示
0528デフォルトの名無しさん
2007/10/07(日) 11:56:14レスありがとうございます。
そうなんですか、理屈抜きにそういうものと考えればいいのでしょうか・・・
>>526様
ありがとうございます。回答をみるとそうなっています。
>>527様
申し訳ありません・・・
0529デフォルトの名無しさん
2007/10/07(日) 11:56:56間違い。while(--n >= 0) printf("%c", str[i][n]);
0530デフォルトの名無しさん
2007/10/07(日) 12:01:27それぞれの文字数が分からない場合もある。
0531デフォルトの名無しさん
2007/10/07(日) 12:11:00レスありがとうございます。
そう考えるとなんとなくわかる気がします。
文字数がわからないのに初期設定式をn = 6;としたのは確かにおかしいですね。
助かりました、ありがとうございました。
0532デフォルトの名無しさん
2007/10/07(日) 13:35:10if((fp = fopen("myfile", "w")) == NULL) {
printf("ファイルを開くことができません\n");
exit(1);
が教科書に載ってるんですが
(fp = fopen("myfile", "w")
が、ifの条件文の一部でしかないのにどうして
これでファイルが開くんですか?
0533デフォルトの名無しさん
2007/10/07(日) 13:39:120534デフォルトの名無しさん
2007/10/07(日) 13:41:44条件分の一部だろうが命令は実行される。
0536デフォルトの名無しさん
2007/10/07(日) 17:51:56VBなどの他の言語はif (条件式)
条件式だけでなく、すべての式をif文に書くことが可能なのもCの特徴
かな?
0537デフォルトの名無しさん
2007/10/07(日) 17:54:490538デフォルトの名無しさん
2007/10/07(日) 18:08:57例えば下記のようま関数に3を渡したい時どう書くの?
// ポインタ渡しの関数
void test(int *data)
{
}
void main()
{
:
:
test(?); // 直接定数をtest()に渡したいのですが?
// 例えば3をtest()に渡したい時 test(&(3)) ???
:
:
}
0539デフォルトの名無しさん
2007/10/07(日) 18:21:29普通に変数を使うか、何かしらの手段でtest()にdataがポインタではなく数値であることを知らせる
0540デフォルトの名無しさん
2007/10/07(日) 18:23:51とでたんですが、これはどういうことを言ってるんですか?
0541デフォルトの名無しさん
2007/10/07(日) 18:26:020542デフォルトの名無しさん
2007/10/07(日) 18:37:44#include <wchar.h> (うろおぼえ) が抜けてるとか。
0543538
2007/10/07(日) 18:47:580544デフォルトの名無しさん
2007/10/07(日) 18:51:54ttp://www.google.co.jp/search?hl=ja&q=c+error+C2664&lr=
0545REI
2007/10/07(日) 19:01:00『現在の日付を取得してそれを8けたの数値とし変数bに代入する』
というのはどうすればいいんでしょうか。
まわりは男の先輩ばっかりで聞きにくくて・・・。
来年は技術科から教育家政科に転科予定なのですが、
この単位を落とすと移れません。
勉強しても全く頭に入らずかなり泣きたい状況です。
自分がこんなに機械オンチだったなんて・・・。
助けて下さい。
0546デフォルトの名無しさん
2007/10/07(日) 19:02:52getchでEnterキーを入力すると、キャリッジリターン\rが取得できます
getcharでEnterキーを入力すると、ラインフィード\nが取得できます
また、fgetsで標準入力から文字列を受け取ると、\nが付いています
なぜ同じEnterキーで\rだったり\nだったりするのでしょうか
画面に表示した瞬間に、\rが\nに化けるのでしょうか?
0547デフォルトの名無しさん
2007/10/07(日) 19:03:09宿題スレいけば?
0548デフォルトの名無しさん
2007/10/07(日) 19:06:37C/C++の宿題を片付けます 96代目
http://pc11.2ch.net/test/read.cgi/tech/1190331997/
0549REI
2007/10/07(日) 19:17:22丁寧にありがとうございます。
そういう場所があったのですね。
C言語で探してしまったので・・・。
ごめんなさい。
0550初心者
2007/10/07(日) 19:49:29S(t)=∫C(x,t)dxをx=-kからx=kまで積分することってできますか??
困ってます
助けてください
0551初心者
2007/10/07(日) 21:25:56積分区間が変数でどうすればいいかわかりません。D、t、kは定数として
あつかってます。
0552デフォルトの名無しさん
2007/10/07(日) 21:48:16代数で解けばいいよ。
0553デフォルトの名無しさん
2007/10/07(日) 22:00:17rand() % (n + 1)
と書くと乱数の質が悪くなるそうなのですが、それはなぜなのでしょうか。
また、0からnの範囲で質の良い乱数を得るにはどうすればいいのでしょうか。
0554デフォルトの名無しさん
2007/10/07(日) 22:04:270555デフォルトの名無しさん
2007/10/07(日) 22:23:51一応、D -> 1, d -> 2, k -> 3, t -> 4で結果が正しそうであることを確認した。
#include <math.h>
#include <stdio.h>
double D, d, k, e = 0.000001;
double trapezoidal(double a, double b, int n, double f(double, double), double t) {
int i; double s = 0., h = (b - a) / n;
for (i = 1; i < n; ++i) s += f(a + i * h, t);
s *= 2; s += f(a, t) + f(b, t); s *= h / 2;
return s;
}
double f1(double y, double t) {return exp(-y * y / 4 / D / t);}
double C(double x, double t) {
int n = 2; double a = x - d, b = x + d, a1, a2 = trapezoidal(a, b, n, f1, t);
do {a1 = a2; a2 = trapezoidal(a, b, n <<= 1, f1, t);} while (fabs(a1 - a2) > e);
return a2;
}
double f2(double x, double t) {return C(x, t);}
double S(double t) {
int n = 2; double a = -k, b = k, a1, a2 = trapezoidal(a, b, n, f2, t);
do {a1 = a2; a2 = trapezoidal(a, b, n <<= 1, f2, t);} while (fabs(a1 - a2) > e);
return a2;
}
int main(void) {
double t;
printf("D?:"); scanf("%lf", &D); printf("d?:"); scanf("%lf", &d);
printf("k?:"); scanf("%lf", &k); printf("t?:"); scanf("%lf", &t);
printf("S(%f)=%f\n", t, S(t));
return 0;
}
0556デフォルトの名無しさん
2007/10/07(日) 23:09:22それでいいよ。
rand()の下位ビットは周期が極端に短い、上位ビットを使えって話があるけど、それって都市伝説だから。
下位ビットが使えないくらい質が悪いなんて処理系は十数年前に絶滅してる。
0557デフォルトの名無しさん
2007/10/07(日) 23:26:590558デフォルトの名無しさん
2007/10/07(日) 23:30:54お手軽にrand()使うなら、深く考えずにrand() % nでOK。
0559デフォルトの名無しさん
2007/10/07(日) 23:31:41線形合同法は下位にあるビットほど質が悪い
(int)((rand() / ((double)RAND_MAX+1.0f)) * n);
ttp://ja.wikipedia.org/wiki/Rand より
0からn-1の範囲だが
0560デフォルトの名無しさん
2007/10/07(日) 23:34:19SFMTでも使えば?
0561デフォルトの名無しさん
2007/10/07(日) 23:49:30rand()のソースとか見たりしないのかなぁ。
上位が質がいいってのはそうだけど、内部では32bitで計算して上位16bitを返してるとか、
そういう実装になってたりするから、まあ、実用上問題ないよ。
ちょっとでも質が良くなるな用に上位を取ろうってとかって話なら、そこまでするなら、
標準のrand()は使わないほうがいいんじゃね? って話。
0562初心者
2007/10/08(月) 00:05:19早速試してみますm(__)m
0563デフォルトの名無しさん
2007/10/08(月) 00:09:11教えてください。お願いします。
#include <stdio.h>
int main(void){
int tray[ 3 ];
printf("\nPlase type number >> ");
scanf("%d",&tray[ 1 ]);
printf("\nPlase type number >> ");
scanf("%d",&tray[ 2 ]);
printf("\nPlase type number >> ");
scanf("%d",&tray[ 3 ]);
printf("\nYou 3rd type number is %d\n",tray[ 3 ]);
printf("\nYou 2nd type number is %d\n",tray[ 2 ]);
printf("\nYou 1st type number is %d\n",tray[ 1 ]);
return 0;
}
0564デフォルトの名無しさん
2007/10/08(月) 00:11:44配列の添え字が1〜3じゃなくて0〜2
0565デフォルトの名無しさん
2007/10/08(月) 00:11:55とりあえず上位を取っておけば奇数と偶数が交互にでるみたいなことは回避できるだろうし
0566デフォルトの名無しさん
2007/10/08(月) 00:15:33そういう処理系はPC上だと十数年前には絶滅してた。
ワークステーションだと、十数年前にはまだあったとかって話は聴いたことがあるけど。
0567デフォルトの名無しさん
2007/10/08(月) 00:21:55int tray[ 3 + 1 ];
0568デフォルトの名無しさん
2007/10/08(月) 00:48:29今やPC以外でもC言語で書くことは多い
そういう環境はPCでいうとちょっと古めの環境になる
ソース見たり確かめて見たりしたことないから、もしかしたら無駄なことかもしれないけどね
どうせコピペだし
0569563
2007/10/08(月) 00:51:16>567
ありがとうございます。
0570初心者550
2007/10/08(月) 00:57:140571デフォルトの名無しさん
2007/10/08(月) 00:58:48変数nの中身を左に1シフトして結果を変数nに代入
0572デフォルトの名無しさん
2007/10/08(月) 00:59:17ビットを上位にシフトしている。
結果は、n *= 2; と同じ。
0573デフォルトの名無しさん
2007/10/08(月) 01:02:17scanf("%d",&a);
で、1つの整数を入力させて、
それを符号を反転させて、表示させたいんですが、どうすればよいでしょうか?
0574デフォルトの名無しさん
2007/10/08(月) 01:03:180575デフォルトの名無しさん
2007/10/08(月) 01:08:02なんか難しく考えてました。
変換する関数みたいのがあるのかと
それでいいんですかね・・・
ありがとございます。
0576デフォルトの名無しさん
2007/10/08(月) 01:27:21int main(void){
char h,i;
printf("Please type key >> ");
scanf("%c",&h);
printf("\nPlease type key >> ");
scanf("%c",&i);
printf("%c%c\n",h,i);
printf("%c%c\n",i,h);
return 0;
}
これをやると、二回目のscanfが来ないんですが、なぜだかわかりますか?
0577デフォルトの名無しさん
2007/10/08(月) 01:32:59fgets() + sscanf() に直すと良いのでは?
0578デフォルトの名無しさん
2007/10/08(月) 01:41:260579576
2007/10/08(月) 01:45:16int main(void)
{
char str[32];
int h,i;
printf("Please type key >> ");
fgets(str,31,stdin);
sscanf(str,"%d",&h);
printf("Please type key >> ");
fgets(str,31,stdin);
sscanf(str,"%d",&i);
printf("\n%d%d\n",h,i);
printf("%d%d\n",i,h);
return 0;
}
こんなのにしてみたんですが・・・
これだと、数字はできても文字が入らないんですね(泣)
どうすれば、文字入るんでしょうか
0580デフォルトの名無しさん
2007/10/08(月) 01:49:56なぜ %d にしてるんだ?
0581デフォルトの名無しさん
2007/10/08(月) 01:51:18こういうことじゃなくて?
char h,i;
printf("Please type key >> ");
fgets(str,31,stdin);
h = str[0];
printf("Please type key >> ");
fgets(str,31,stdin);
i = str[0];
printf("\n%c%c\n",h,i);
printf("%c%c\n",i,h);
0582576
2007/10/08(月) 01:51:41あ、ほんとだ。
書き直してたら、なんか間違えてました。
ありがとございます。
0583デフォルトの名無しさん
2007/10/08(月) 08:08:43最上位ビットを反転させるか
0-aとなることをすればいいだけだからな
0584デフォルトの名無しさん
2007/10/08(月) 08:10:040585デフォルトの名無しさん
2007/10/08(月) 08:43:30逆にchar c[4]をlong aにパックしたりするのに
こんなワークエリアを使ってやっているのですが,
union{
long l;
char b[4];
} work;
ワークエリアを使わずに,キャストとか使って直接代入の方法はないものでしょうか?
0586デフォルトの名無しさん
2007/10/08(月) 09:07:11環境依存でよければいろいろある。
Ex.
long l = 0x12345678;
char b[sizeof(l)];
*(long *) b = l;
l = *(long *) b;
0587デフォルトの名無しさん
2007/10/08(月) 09:10:08b[0] = l & 0xff;
b[1] = (l >> 8) & 0xff;
b[2] = (l >> 16) & 0xff;
b[3] = (l >> 24) & 0xff;
--
c99なら
char b[] = {l & 0xff, (l >> 8) & 0xff, (l >> 16) & 0xff, (l >> 24) & 0xff};
0588デフォルトの名無しさん
2007/10/08(月) 11:37:54お礼が送れて申し訳ありません。
皆さんありがとうございました。
0589デフォルトの名無しさん
2007/10/08(月) 11:51:150590デフォルトの名無しさん
2007/10/08(月) 14:34:470591デフォルトの名無しさん
2007/10/08(月) 19:20:28使うプログラムと同じフォルダに置いて#include"〜〜.h"で使えますか?
初歩的な質問で申し訳ないです。
0592デフォルトの名無しさん
2007/10/08(月) 19:32:500593デフォルトの名無しさん
2007/10/08(月) 20:08:38そうですよね
VC++で同じフォルダに置いてあるんですが、関数がないって怒られるので・・・
#ifndef 〜〜_H
#define 〜〜_H
とかヘッダに書くからいけないのでしょうか?
0594デフォルトの名無しさん
2007/10/08(月) 20:16:40ソースファイルと同階層に置くんだぞ?*.cと*.hがおなじフォルダ
0595デフォルトの名無しさん
2007/10/08(月) 20:17:33我為エスパー的回答
//--- a.h ---
#ifndef INCLUDE_A_H
#define INCLUDE_A_H
//--- b.h ---
#ifndef INCLUDE_A_H
#define INCLUDE_A_H
重複同名定義
0596デフォルトの名無しさん
2007/10/08(月) 20:29:09という事はソースファイルと同じフォルダに置くと無理という事ですか?
>>595
同名定義はしてないはずです
#ifndef使っているけど何回かインクルードしているのでまずいのかもしれないです
でもインクルード必要なんで、困ってます
0597デフォルトの名無しさん
2007/10/08(月) 20:32:34使用するより前にちゃんとプロトタイプ宣言があるのか?
どうしょうもない単純ミスをしているとしか思えんぞ
0598デフォルトの名無しさん
2007/10/08(月) 20:37:55わざわざ自作ヘッダファイルを入れてるんじゃないだろうか。
>ソースファイルと同じフォルダに置くと無理という事ですか?
自作物の"hoge.h"のように書いて取り込むヘッダファイルは
ソースファイルと同じフォルダでないと駄目。
externみたいな宣言を、だた忘れてたりしてな。
0599デフォルトの名無しさん
2007/10/08(月) 20:45:02エラーはコンパイル時なのかリンク時なのか、
まず、エラーメッセージを載せてみ。
0600デフォルトの名無しさん
2007/10/08(月) 20:49:55includeディレクトリにはいれてないです
あと、externかもと思ってすべての関数にexternを付けましたが、同じでした
>>599 お願いします。
1>cmd_main.c
1>コードを生成中...
1>リンクしています...
1>cmd.obj : error LNK2019: 未解決の外部シンボル _add_elem が関数 _input で参照されました。
1>cmd.obj : error LNK2019: 未解決の外部シンボル _clear_list が関数 _write で参照されました。
1>cmd.obj : error LNK2019: 未解決の外部シンボル _get_elem が関数 _write で参照されました。
1>cmd.obj : error LNK2019: 未解決の外部シンボル _get_length が関数 _write で参照されました。
1>cmd_main.obj : error LNK2019: 未解決の外部シンボル _init_list が関数 _main で参照されました。
0601デフォルトの名無しさん
2007/10/08(月) 20:52:08素晴らしい!ミスリードの天才!
リンクする .obj または .lib が足りてないだけみたい
0602デフォルトの名無しさん
2007/10/08(月) 21:01:26みたいに/区切りなのはどうして?
0603デフォルトの名無しさん
2007/10/08(月) 21:04:09MS-Windows 環境なら \\ でもいいよ
0604デフォルトの名無しさん
2007/10/08(月) 21:22:31.objとかコピーしてきたんですが、できなかったです・・
ソース自体にもコンパイルできない原因がないか見てもらえないでしょうか
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5030.zip
0605名無し
2007/10/08(月) 21:22:36printf(''・・・・¥n・・・・・¥n・・・・・¥n'')
てのは可能ですか??
0606デフォルトの名無しさん
2007/10/08(月) 21:25:410607名無し
2007/10/08(月) 21:29:590608デフォルトの名無しさん
2007/10/08(月) 21:34:38流石にzipはおいそれと開く気になれん。
明示的にリンクしている?
0609デフォルトの名無しさん
2007/10/08(月) 21:34:390610デフォルトの名無しさん
2007/10/08(月) 21:37:58関数定義に extern がついていて気持ち悪いのと
typo が気になるけどソース自体はコンパイル・リンクできた
0611デフォルトの名無しさん
2007/10/08(月) 21:47:45ソース変更せずにできたんですよね?
.libは見当たらなかったんですけど、まだリンクする何かが足りないってことかな
0612デフォルトの名無しさん
2007/10/08(月) 21:54:40ソース変更無しで以下のコマンドで .exe までできたよ
bcc32 -c cmd.c
bcc32 -c list.c
bcc32 -c cmd_main.c
bcc32 cmd_main.obj cmd.obj list.obj
0613デフォルトの名無しさん
2007/10/08(月) 21:58:26www
0614デフォルトの名無しさん
2007/10/08(月) 21:59:52gcc cmd.c list.c cmd_main.c -Wall -pedantic
0615デフォルトの名無しさん
2007/10/08(月) 22:05:12↑こういうのってどういう意味なんですか?
0616デフォルトの名無しさん
2007/10/08(月) 22:07:540617デフォルトの名無しさん
2007/10/08(月) 22:08:46この値は10進法にすると205619
0618デフォルトの名無しさん
2007/10/08(月) 22:09:44おおお ありがとうございます
そうやってリンクしないといけないという事ですか!
>>613
\(^o^)/
>>その環境はよくわかってないので、また勉強しときます。ありがとうございます
できたらVC++2005での解決策をご教授願えないでしょうか?
開発でVisualStudioを使うことが多いと聞いたもので・・
0619デフォルトの名無しさん
2007/10/08(月) 22:10:29char *buf = NULL;
fgets(buf,CMD_MAX,stdin);
if("exit" == buf){
で、fgetsって、配列じゃない単なるポインタに文字列格納できんの?
あと、if文のこの比較もありなか?
char buf[CMD_MAX];
fgets(buf,CMD_MAX,stdin);
if(strcmp(buf, "exit") == 0){
じゃね?
0620デフォルトの名無しさん
2007/10/08(月) 22:16:40C:\5030>cl cmd.c cmd_main.c list.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
cmd.c
cmd.c(15) : warning C4090: '初期化中' : 異なる 'const' 修飾子です。
cmd_main.c
list.c
list.c(44) : warning C4090: '=' : 異なる 'const' 修飾子です。
コードを生成中...
Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation. All rights reserved.
/out:cmd.exe
cmd.obj
cmd_main.obj
list.obj
VisualStudioはこんなコンパイルエラーがでた。
強行して実行したらエラーで勝手に落ちる。
0621デフォルトの名無しさん
2007/10/08(月) 22:17:21いくつか出るエラーを取り除けば、そのまま>>604のやつをVC++でコンパイルできたぞ
0622デフォルトの名無しさん
2007/10/08(月) 22:22:39ポインタでOKなら、fgetsの第二引数とかいらねえだろうな
文字列比較もおかしいし
コンパイルできないってんだから、
未検証なんだろ
0623デフォルトの名無しさん
2007/10/08(月) 22:22:50そういう事か!!!
「アドレスを指定するときには、16進数を使います。」
だからアドレスを代入するときは、「0x」と書くのですね!!
0624デフォルトの名無しさん
2007/10/08(月) 22:23:35いや、10進数でもいいけど>アドレス
0625デフォルトの名無しさん
2007/10/08(月) 22:29:19sample.c: can't open: stdio.h: No such file or directory
とか言われて初心者な俺にはいきなりどうしたらいいかわかんなくなった
0626デフォルトの名無しさん
2007/10/08(月) 22:31:43環境書いて↓で聞きな。
【初心者歓迎】C/C++室 Ver.43【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1190860744/
0627デフォルトの名無しさん
2007/10/08(月) 22:32:13コンパイラをインストールしなおす。
0628デフォルトの名無しさん
2007/10/08(月) 22:32:230629デフォルトの名無しさん
2007/10/08(月) 22:35:35そうなんですか?
未解決の外部シンボル・・・ってのはでました?
0630デフォルトの名無しさん
2007/10/08(月) 22:37:17わかったやってみる
0631デフォルトの名無しさん
2007/10/08(月) 22:40:25いんや。だが>>620と同じで実行しても速攻でエラー
0632デフォルトの名無しさん
2007/10/08(月) 22:44:52あ
原因がわかった。ソースのあるディレクトリにlist.*は入れてるけど
VCのプロジェクトの方にいれてなかったーーー...
今まで協力してくださった皆さん、ありがとうございました!感謝
0633デフォルトの名無しさん
2007/10/08(月) 22:58:33ヘッダ名の部分ならエスケープの対象ではないので、\1個でもいける。
2個でもいけるのは、Windowsが何個でも受け付けてくれるから。
0634デフォルトの名無しさん
2007/10/08(月) 23:42:18お勧めの書籍とかHPあったら教えてください!!
簡単な画像処理のソフトとか作ったんで
インターフェースも作りたいな。と思って・・・。
むしろCの基本的な事は覚えたんだが次に何していいか
わからなくて困ってる。GUIより先にすべき事とか
あったら教えてください。
0635デフォルトの名無しさん
2007/10/08(月) 23:44:37ttp://wisdom.sakura.ne.jp/system/winapi/
とか
0636634
2007/10/08(月) 23:59:54当分、このサイトで遊べそうです^^;
ありがとうございました〜
0637デフォルトの名無しさん
2007/10/09(火) 00:02:190638デフォルトの名無しさん
2007/10/09(火) 00:08:04「コンピュータはなぜ動くのか」
「Windowsはなぜ動くのか」
「ネットワークはなぜつながるのか」
が読みたくなるはず。
0639デフォルトの名無しさん
2007/10/09(火) 00:09:58環境依存物しか作れなくなってしまうぞ
と、とりあえず言っておく
0640デフォルトの名無しさん
2007/10/09(火) 00:10:21どこで決定されるんですか?
ソースファイルがいくつかあるとき、どこかで
#define HOGE
と宣言し、どこかで
#ifdef HOGE
とやっているときに、#ifdef HOGE よりも前に
#define HOGE が処理されるという保証はどこで?
0641デフォルトの名無しさん
2007/10/09(火) 00:14:05他のファイルで定義されたマクロは、
別のファイルのプリプロセッシングに影響を及ぼさない。
#includeされた場合は、あたかもそこにそのファイルの内容が書いてあるかのように扱われる。
0642デフォルトの名無しさん
2007/10/09(火) 00:14:18includeとかでソースを読み込んだ順番
#ifndef HOGE
#define HOGE
#endif
とかやるだろ
0643デフォルトの名無しさん
2007/10/09(火) 15:08:04int fputc(int 文字、FILE *ストリーム);
fputc( )関数は、「文字」の下位バイトを、「ストリーム」に結び付けられているファイルにunsigned char型の値として書き込みます。
とあるんですが、まず、ここで下位バイトって何のことですか?
0644デフォルトの名無しさん
2007/10/09(火) 15:12:060645デフォルトの名無しさん
2007/10/09(火) 15:14:13C/C++ ⇒ JavaScript
0646デフォルトの名無しさん
2007/10/09(火) 15:14:48(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
(゚Д゚ )ハァ?
0647デフォルトの名無しさん
2007/10/09(火) 15:15:00http://videointroplayer.web.fc2.com/?SAsdiPJZS4P10%+8mdKsm-z3pn32%+WhqyiIrhz0F110%+iwCjWdz0Gid150%+ii9YN1kO-TK36%+@1@_KeyboardCrusher_Performance
0648デフォルトの名無しさん
2007/10/09(火) 15:18:15文字コード16ビット固定がいいのですよ
URL処理用UTF-8変換も簡単だし
0649デフォルトの名無しさん
2007/10/09(火) 15:20:08すると上位の24ビットはどうなってしまうんですか?
0650デフォルトの名無しさん
2007/10/09(火) 15:20:46文字コード32ビット固定がいいですよ
サロゲートペア考えなくていいし
0651デフォルトの名無しさん
2007/10/09(火) 15:22:17どうもならない
使われずに無視されるだけ
0652デフォルトの名無しさん
2007/10/09(火) 15:26:35fputc()はそもそも何のために使うんですか?
0653デフォルトの名無しさん
2007/10/09(火) 15:32:100654デフォルトの名無しさん
2007/10/09(火) 15:44:54全部書き込めるんですか?
0655デフォルトの名無しさん
2007/10/09(火) 15:59:43アルファベットや数字のような1バイト文字なら、
1バイトを書き込むだけで文字全体を書き込める。
ひらがなや漢字のようなマルチバイト文字は無理だ。
必要なバイト数の分だけ繰り返し fputc を使う必要がある。
0656デフォルトの名無しさん
2007/10/09(火) 16:18:43つまり文字位置インデックスが高速なんです
0657デフォルトの名無しさん
2007/10/09(火) 16:24:27つまりUTF-16って可変長なんです
0658デフォルトの名無しさん
2007/10/09(火) 16:34:52ポインタ変数の大きさについてなのですが、
int型やchar型は、例えばそれぞれ4バイト、1バイトの大きさですが、
それらを指すポインタ変数、int*型やchar*型の大きさはどうなるんでしょうか?
予想だと、ポインタ変数はアドレス入れるだけなので一定の大きさだとは思うのですが。
32bitCPUなら4バイト(32bit)固定、とかなんでしょうか?
0659デフォルトの名無しさん
2007/10/09(火) 16:38:15まぁ普通はそう。
確認したければ sizeof を使ってみるといい。
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(int*));
0660デフォルトの名無しさん
2007/10/09(火) 16:51:49アーキテクチャによって違うが、
一般的な32bitCPUなら、どの型のポインタも4byte
0661デフォルトの名無しさん
2007/10/09(火) 16:54:060662デフォルトの名無しさん
2007/10/09(火) 17:00:23zzztv[247]
yoshimotokogyo[141]
http://proforceone.web.fc2.com/ ⇒ Calculation processing
d=$.split("\n");for(j=0;d.length>j;j++){s=d[j].substring(0,l=d[j].indexOf("["));
n=eval(d[j].substring(l+1,d[j].indexOf("]")));n=(n-n%20)/20+(n%20>0);br();
for(i=0;n>i;i++){write("http"+"://youtube.com/results?search_query=");
write(s+"&search_sort=video_date_uploaded&page="+(i+1));br();}}br();
0663デフォルトの名無しさん
2007/10/09(火) 17:05:18なるほど、そうですか。
スッキリしました。
ありがとうございました。
0664デフォルトの名無しさん
2007/10/09(火) 17:48:010665デフォルトの名無しさん
2007/10/09(火) 17:57:45Sleep()ではだめって事?
0666デフォルトの名無しさん
2007/10/09(火) 17:57:51http://ja.wikipedia.org/wiki/Unicode
0667デフォルトの名無しさん
2007/10/09(火) 18:00:38http://ja.wikipedia.org/wiki/UTF-16
http://ja.wikipedia.org/wiki/UTF-8
0668デフォルトの名無しさん
2007/10/09(火) 18:04:01http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
0669664
2007/10/09(火) 18:12:400670デフォルトの名無しさん
2007/10/09(火) 18:13:06Microsoft Windowsでは、リトルエンディアンのUTF-16が使われている。
内部表現ではBOMなし、ファイルなどではBOMありが主である。BOMなしのものはUTF-16LE、BOMありのものはUTF-16符号化形式(BOMありのリトルエンディアン)ということになる。
TCP/IPネットワークでは、ビッグエンディアンに決められている。
0671デフォルトの名無しさん
2007/10/09(火) 18:16:35http://www.bohyoh.com/CandCPP/FAQ/FAQ00071.html
0672デフォルトの名無しさん
2007/10/09(火) 18:19:27Microsoft Windowsでは、リトルエンディアンのUTF-16が使われている。
内部表現ではBOMなし、ファイルなどではBOMありが主である。
BOMなしのものはUTF-16LE、BOMありのものは
UTF-16符号化形式(BOMありのリトルエンディアン)ということになる。
TCP/IPネットワークでは、ビッグエンディアンに決められている。
0674デフォルトの名無しさん
2007/10/09(火) 18:24:33おまいらの勉強法
0675デフォルトの名無しさん
2007/10/09(火) 18:27:140676デフォルトの名無しさん
2007/10/09(火) 18:45:39エンタ[263.]
お笑い[4,010]
zzztv[247]
yoshimotokogyo[141]
http://proforceone.web.fc2.com/ ⇒ Calculation processing
d=$.split("\n");for(j=0;d.length>j;j++){s=d[j].substring(0,l=d[j].indexOf("["));
s=encodeURIComponent(s);n=d[j].substring(l+1,d[j].indexOf("]")).split(".");
n=eval(n[0].split(",").join(""));n=(n-n%20)/20+(n%20>0);br();
for(i=0;n>i;i++){write("http"+"://youtube.com/results?search_query=");
write(s+"&search_sort=video_date_uploaded&page="+(i+1));br();}}br();
0677デフォルトの名無しさん
2007/10/09(火) 18:58:21if(fp == NULL){}内が実行されず、何も表示されずに終了してしまいます。
引数が存在すればscanfまでちゃんと行くのですが、何がいけないのでしょう?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define PROGRAM_NAME patch.exe
int main(int argc, char *argv[]){
FILE *fp;
char answer;
fp = fopen(argv[1],"r");
if(fp == NULL){
printf("ファイルがありません\n");
printf("PROGRAM_NAME 書き換え元ファイル パッチデータ\n");
exit(1);
}
printf("%sにパッチを当てますか?(y/n) ->",argv[1]);
scanf("%c",&answer);
return 0;
}
0678デフォルトの名無しさん
2007/10/09(火) 19:12:58argc を見て引数の数を確認しる
0679デフォルトの名無しさん
2007/10/09(火) 19:17:280680デフォルトの名無しさん
2007/10/09(火) 19:52:25argc=1 実行プログラムの絶対パス
arg=2 +引数1
arg=3 +引数2
・・・・・・・・・・・
0681デフォルトの名無しさん
2007/10/09(火) 20:15:24絶対パスでは無かったような。
シェルが解釈した後のパースされたコマンドラインの文字列が入ってるだけでない?
0683デフォルトの名無しさん
2007/10/09(火) 20:40:16それは処理系依存。
[0]に何も入ってない場合もある。
0684デフォルトの名無しさん
2007/10/09(火) 21:01:34を、マジか。
フォローさんくす。それは知らなんだ。
ちょっと触ってみたいんで、参考までに何も入ってない環境を知ってたら教えて欲しい。
軽くググってみたけど、CFAQに「何も入っていないかも知れない」って
記述があるぐらいしか分からんかった。
0685デフォルトの名無しさん
2007/10/09(火) 21:16:19main(int argc, char *argv[]) {
if(argv[0]) exec(argv[0], NULL);
else puts("argv[0] is null.");
}
とかでいいんでね?
0686デフォルトの名無しさん
2007/10/09(火) 21:20:58144115188075856000という数字を扱いたい場合どうすればいいでしょうか?
0687デフォルトの名無しさん
2007/10/09(火) 21:26:12そのような巨大な整数を扱いたいならば、
C99から追加されたunsigned long long int (0 ~ 2^64-1)を使うか、
コンパイラが独自に実装している超長整数型を使う必要がある。
0688デフォルトの名無しさん
2007/10/09(火) 21:27:34多倍長演算とかでぐぐるんだ
0689デフォルトの名無しさん
2007/10/09(火) 21:35:49おぉ・・・なるほど。気づかんかった。
重ねてありがとう。
0690デフォルトの名無しさん
2007/10/09(火) 21:37:39ちくしょうちくしょう!!
0691デフォルトの名無しさん
2007/10/09(火) 22:01:588の平方根として2√2を出したい場合もあると思います。
8ならば
x[2]={1,8};
for(i=2; i*i <= x[1]; i++)
if(!x[1]%(i*i)){
x[0] *= i;
x[1] /= i*i;
}
printf("square root of 8 = %d",x[0]);
if(x[1]!=1) printf("√%d",x[1]);
これでいいとは思いますが、
例えば√0.02=0.1√2だとか、√1.6=0.4√10などの式変形をしたい場合、
どのようにすればよいのでしょうか。
変形が一意的に定まらない場合もありますが(0.4√10=4√0.1とか)、
とりあえずはルートの中身が平方数でない整数、という条件でお願いします。
(もしくは他の規則でも構いませんが)
0692デフォルトの名無しさん
2007/10/09(火) 22:06:43遅レスすみません。
char str[80] = "ファイルシステムのテスト\n";
FILE *fp;
char *p;
p = str;
while(*p) {
if(fputc(*p, fp) == EOF) {
printf("ファイル書き込みエラー\n");
exit(1);
}
p++;
}
と教科書にあるんですがこの場合
"ファイルシステムのテスト"
が2バイト文字だから
フの下位バイト、ァの下位バイト、イの下位バイト、・・・
という風に書き込まれていくんですか?
0693デフォルトの名無しさん
2007/10/09(火) 22:14:22そういう場合はstr[0] にフの上位バイト、str[1]にフの下位バイトというふうに入ってる。
0694デフォルトの名無しさん
2007/10/09(火) 22:31:040695デフォルトの名無しさん
2007/10/09(火) 22:33:250696デフォルトの名無しさん
2007/10/09(火) 23:00:41√0.02を0.1√2に変形するとき、お前さんは何を考えた?
それをそのままコードにすればいい。
0697デフォルトの名無しさん
2007/10/09(火) 23:16:01そういう考え方をすればいいんですね
ありがとうございます
0698デフォルトの名無しさん
2007/10/09(火) 23:37:50整数の奴もそれじゃだめだろ
0699デフォルトの名無しさん
2007/10/10(水) 00:12:2010進数の数値に直すにはどうすればいいのでしょう?
"0012FF" → 4863
という感じです
0700デフォルトの名無しさん
2007/10/10(水) 00:18:23つstrtol
0701デフォルトの名無しさん
2007/10/10(水) 00:34:30char hex[256];
int dec=0 , i;
printf("hex?>");
fgets(hex,256,stdin);
for(i=0; hex[i] != '\n' && hex[i] != '\0'; i++){
dec *= 16;
if(hex[i] >= '0' && hex[i] <= '9') dec += hex[i]-'0';
else if(hex[i] >= 'a' && hex[i] <= 'f') dec += 10 + hex[i] - 'a';
else if(hex[i] >= 'A' && hex[i] <= 'F') dec += 10 + hex[i] - 'A';
else break;
}
printf("%s->%d" , hex , dec);
return 0;
}
0702デフォルトの名無しさん
2007/10/10(水) 00:35:41ありがとうございます
0703デフォルトの名無しさん
2007/10/10(水) 01:07:070704691
2007/10/10(水) 01:43:20あ、ほんとですね
√16とか
iをsqrt(x)から始めて減らしてくか、
インクリメントするのに条件を設けるか……
ありがとうございます
0705デフォルトの名無しさん
2007/10/10(水) 01:56:050706デフォルトの名無しさん
2007/10/10(水) 09:49:47int n;
sscanf("0012F", "%x", &n);;
0707デフォルトの名無しさん
2007/10/10(水) 10:22:340708デフォルトの名無しさん
2007/10/10(水) 10:29:44使っていいですよ
0709hj
2007/10/10(水) 13:50:324
http://news22.2ch.net/test/read.cgi/newsplus/1191932873/
【民営化】造幣局・印刷局など、独立行政法人20以上を民営化へ:政府方針 [07/10/07]
http://news21.2ch.net/test/read.cgi/bizplus/1191727281/
政府は6日、現在進めている独立行政法人(独法)の整理合理化に関連し、
101ある独法のうち、予算に占める国からの財政支出の割合(財政依存度)が低い
20法人以上の民営化を目指す方針を固めた。
2007年末に整理合理化計画を策定し、閣議決定する予定だ。
民営化の対象には、造幣局や国立印刷局、日本万国博覧会記念機構などがあがっている。
今後、独法の民営化推進を目指す渡辺行政改革相らの方針に対し、
事業の公共性の高さなどを主張する関係省庁の巻き返しが本格化しそうだ。
貨幣や紙幣を造る造幣局や国立印刷局については、機密性の保持なども絡み、
是非をめぐって様々な意見が出そうだ。
http://headlines.yahoo.co.jp/hl?a=20071007-00000002-yom-pol
0710デフォルトの名無しさん
2007/10/10(水) 18:45:27確率ごとに100個ずつ作りファイルに入れる』
という課題がでました。誰か助けて下さい
0711デフォルトの名無しさん
2007/10/10(水) 18:55:01めっちゃ鼻血が出てきたんだがどうすればいい?
0712デフォルトの名無しさん
2007/10/10(水) 18:56:50鼻血が出ているスレッドに対して TerminateThread でおk
0713デフォルトの名無しさん
2007/10/10(水) 18:57:04指定と全く違うデータがファイルの先頭に入るだけで終わってしまいます。どこがいけないのでしょう?
パッチの書式は アドレス:データ です。例えば
00000001:FF34AB
0000F:35
のように、アドレス先頭のゼロの連続は無視、データ長はほぼ自由で、
指定したアドレスから順にデータを書き込んでいく、という感じです。
ソースをアップロードしたので、見ていただけませんでしょうか。
http://ranobe.com/up/src/up229162.txt
0714デフォルトの名無しさん
2007/10/10(水) 18:59:13ソースコードの文字コードがShift-JIS → MS-Windows
おそらく fopen の時に バイナリモード で開いていないのが原因
0715714
2007/10/10(水) 19:02:280716デフォルトの名無しさん
2007/10/10(水) 19:06:03適当にざっと見ただけだが、
>sprintf(data_numtemp,"%lb",data_num);
%lb って何?
>fwrite(data_numtemp,sizeof(data_numtemp),1,fp_src);
sizeof(data_numtemp) って BUF_MAX のことだと思うんだが
0717デフォルトの名無しさん
2007/10/10(水) 19:21:25long型の2進数になるかと思ったんですが、この書き方は変でしたか。
でも%bに直してもバグは変わらず…
>sizeof(data_numtemp) って BUF_MAX のことだと思うんだが
sizeof(data[count])に直してみましたが、それでもまだバグは変わらず…
0719デフォルトの名無しさん
2007/10/10(水) 19:30:44邪魔だなんてとんでもないです。
普通はどうやって実現するのか気になるので、是非見せてください
0720714
2007/10/10(水) 19:31:36#include<stdio.h>
int exec_patch(FILE *fp_dest, FILE *fp_patch){
unsigned long address_num;
int value;
char buf[2+1];
while(1){
if(fscanf(fp_patch, "%lx%1[:]", &address_num, buf)!=2) break;
fseek(fp_dest, address_num, SEEK_SET);
while(fscanf(fp_patch, "%2[0-9A-Fa-f]", buf)==1){
if(buf[1]=='\0') return 0;
sscanf(buf, "%x", &value);
fputc(value, fp_dest);
}
}
return feof(fp_patch);
}
int main(void){
FILE *dest, *patch;
dest=fopen("src.dat", "r+b");
patch=fopen("patch.dat", "r");
if(dest==NULL || patch==NULL) return 1;
if(!exec_patch(dest, patch)) fprintf(stderr, "\nError: patch failed.\n");
return 0;
}
0721デフォルトの名無しさん
2007/10/10(水) 19:59:08どうでもいいがひどい教科書だな。
その文章なら動くかもしれんが、下位バイトに00が入る文字を含んだ途端尻切れ確定。
0722デフォルトの名無しさん
2007/10/10(水) 19:59:1982行目
>if(file_patchdata_line[count][last] = '\n') file_patchdata_line[count][last] = '\0';
== の間違い?
124行目
>sprintf(data_numtemp,"%lb",data_num);
???
文字列 address および data の最後に '\0' が無い
0723デフォルトの名無しさん
2007/10/10(水) 20:24:110724デフォルトの名無しさん
2007/10/10(水) 20:25:010725デフォルトの名無しさん
2007/10/10(水) 20:25:11変換指定子ってそんなに細かい使い方ができるんですね。
fscanfと組み合わせるといろいろ応用が効きそうです。ありがとうございます
>>722
=='\n'に直して、%lbは%bにしました。
また、count--の前に
address[count][last + 1] = '\0';
data[count][last - lasttemp + 1] = '\0';
をそれぞれ追加しました。
しかし一向に改善してくれません。一体どこが問題なのでしょう…?
0726デフォルトの名無しさん
2007/10/10(水) 20:45:49sprintfに%bなんて変換指定子は存在しない。
0727デフォルトの名無しさん
2007/10/10(水) 20:46:040728723
2007/10/10(水) 20:50:13ありがとうございます
0729デフォルトの名無しさん
2007/10/10(水) 20:54:41>>713 のソースコードを次のように変更したらいけたっぽい
82c82
< if(file_patchdata_line[count][last] = '\n') file_patchdata_line[count][last] = '\0';
---
> if(file_patchdata_line[count][last] == '\n') file_patchdata_line[count][last] = '\0';
96a97
> address[count][last] = '\0';
111a113
> data[count][last - lasttemp] = '\0';
122,124d123
< /* データを2進数の文字列に変換 */
< data_num = strtoul(data[count],NULL,16);
< sprintf(data_numtemp,"%lb",data_num);
125a125,134
> {
> int i, value;
> /* 16進数文字列を対応するデータ列に変換 */
> for(i=0,data_num=0;data[count][i]!='\0' && data[count][i+1]!='\0';i+=2)
> {
> sscanf(&data[count][i], "%2x", &value);
> data_numtemp[data_num++]=value;
> }
> }
>
127c136
< fwrite(data_numtemp,sizeof(data_numtemp),1,fp_src);
---
> fwrite(data_numtemp,data_num,1,fp_src);
0730デフォルトの名無しさん
2007/10/10(水) 21:09:59おお、すごい!ちゃんと指定したデータが書き込まれるようになりました。
ただアドレスにA〜Fが無い場合は動作しないようで、ファイル先頭が少し変ですが、かなりの進歩です。
どうもありがとうございます。
0731デフォルトの名無しさん
2007/10/10(水) 21:42:02フフフフフフフとか』とか出てくるのはどこがおかしいからですか?
0732デフォルトの名無しさん
2007/10/10(水) 21:43:48デバッグビルドだからです
リリースビルドなら不定です
0733デフォルトの名無しさん
2007/10/10(水) 21:47:34"それが期待した動作ならそれでいいんじゃないかな\0"
0734デフォルトの名無しさん
2007/10/11(木) 00:32:43float a;
BYTE b;
a = 何かしらの浮動小数点演算;
b = a; ←このコピーが非常に遅い
0735デフォルトの名無しさん
2007/10/11(木) 00:41:12BYTEが整数型であるという前提で。
実数を整数にする(=整数部を取り出す)処理はどうしても時間が掛かる。
しかし、今時のCPUなら問題になるほどではないと思うのだが。
そこでポイントは、「そこがボトルネックになっているのか?」と
「どうしても高速化したいならその周辺も含めて考えるべき」ということ。
0736デフォルトの名無しさん
2007/10/11(木) 00:42:56速いPCに買い換える
0737デフォルトの名無しさん
2007/10/11(木) 00:52:25BYTE型はunsigned charで整数型です。
動画(VGA)を表示するソフトを作っているのですが、
実数から整数へのコピーがない場合には画面のフレームレートで約45fpsでています。
これが実数から整数へのコピーがあると23fps程度まで一気に落ちてしまいます。
ですのでこの部分がボトルネックである事は間違いありません。
1画素辺りRGBの3回のコピーが必要で、これが一画面分となると922K回コピーが発生する計算になります。
float変数の整数部を直接参照できないかなぁとか考えているのですが無理なんでしょうか?
0738デフォルトの名無しさん
2007/10/11(木) 01:01:550739デフォルトの名無しさん
2007/10/11(木) 01:11:49>float変数の整数部を直接参照
整数部って。 指数部と仮数部と符号しかないよ。
http://ja.wikipedia.org/wiki/IEEE_754
処理系依存で直接各ビットを参照してむにゃむにゃすれば整数値を取り出せるとは思うけど、速いかどうかは知らない。
0740デフォルトの名無しさん
2007/10/11(木) 01:18:26#include <stdio.h>
#include <string.h>
int main(void)
{
char namae[256],namae1[] = "arashi",namae2[] = "arasi",namae3[] = "Arashi",namae4[] = "Arasi",namae5[] = "ARASHI",namae6[] = "ARASI";
printf("お名前を教えてください:");
scanf("%s",namae);
if ((strcmp(namae,namae1)==0)||(strcmp(namae,namae2)==0)||(strcmp(namae,namae3)==0)||(strcmp(namae,namae4)==0)||(strcmp(namae,namae5)==0)||(strcmp(namae,namae6)==0)) {
printf("%sアホ\n",namae);
} else {
printf("%s様天才\n",namae);
}
return 0;
}
0741デフォルトの名無しさん
2007/10/11(木) 01:19:130742デフォルトの名無しさん
2007/10/11(木) 01:22:130743デフォルトの名無しさん
2007/10/11(木) 01:24:14配列を使うか、内部的には小文字で比較するかすれば?
ANSI標準でなくていいならstrcasecmp()とかあるが?
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strcasecmp.3.html
0744740
2007/10/11(木) 01:27:27大昔、小学生時代にBASICちょっとだけ触って以来のプログラム勉強です。
こんにちはマイコンに740と同じようなプログラムがあったように思うので、練習に書いてみました。
0745デフォルトの名無しさん
2007/10/11(木) 01:35:19少しはスマートかな?
#include <stdio.h>
#include <string.h>
int main(void) {
char name[256], *names[] = {"arashi", "arasi", "Arashi", "Arasi", "ARASHI", "ARASI"};
int i;
printf("お名前を教えてください:"); scanf("%s", name);
for (i = 0; i < sizeof(names) / sizeof(names[0]); i++)
if (!strcmp(name, names[i])) {
printf("%sアホ\n", name);
return 0;
}
printf("%s様天才\n", name);
return 0;
}
0746740
2007/10/11(木) 01:41:46もっと勉強します。
0747デフォルトの名無しさん
2007/10/11(木) 02:37:19普通に考えて、「何かしらの浮動小数点演算」の方が「整数部の抽出」より遅いと思うのだが。
そうでないとしたら、「何かしらの浮動小数点演算」を(整数化するとか)なにか考えた方がいい。
例えば、値域が限定できるのなら固定小数点数として演算するとか。
>>739
今時のCPUなら変換処理をCPU内部で行える筈。それより速く抽出できるとは考えにくい。
0748デフォルトの名無しさん
2007/10/11(木) 02:49:41入力文字列を小文字変換して、
arashi,arasiと比較すればいい
0749デフォルトの名無しさん
2007/10/11(木) 03:59:37基本的にfloat型はdouble型より遅い。
最近のCPU内部では結局double型に逐次変換して処理を行ってるから、その分がオーバーヘッドになる。
特に理由が無いのならfloatはやめてdoubleにすればいい。
0750デフォルトの名無しさん
2007/10/11(木) 05:38:280751デフォルトの名無しさん
2007/10/11(木) 07:08:12グラフィックライブラリやハードがfloat前提の設計になっているなどの理由かな。
byteじゃなくてlongへの変換だけどちょっと作ってみた。遅そうだ(笑
long hage(float f) {
long *b = (long *) &f;
int sign = (*b >> 31) & 0x00000001;
int exp = (*b >> 23) & 0x000000ff;
long frac = *b & 0x007fffff;
if ((exp == 0) && (frac == 0)) return 0;
if (exp == 0) return 0; // 非正規化数
if (exp == 255) return -1; // 無限大 NaN
// 正規化数
char tmp = (exp - 127 - 23) & 0x0ff;
exp = tmp; // 符号拡張
frac |= 0x00800000;
if (exp > 0) frac <<= exp;
else frac >>= -exp;
if (sign) frac = -frac;
return frac;
}
0752デフォルトの名無しさん
2007/10/11(木) 07:59:49知ったか乙
>>751
どう見ても遅いね。
問題は、元質が果たしてIA32を想定しているかどうかなんだけどね。
# 案外FPGAでなんとかしようとしているのかもしれないw
0753デフォルトの名無しさん
2007/10/11(木) 08:43:37#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef union tag_f2i_t{// IEEE754 前提
float f;
struct{unsigned karisuu:23, sisuu:8, sign:1;};
}f2i_t;
#define NUM 10000
#define TRY 10000
int main(void){
f2i_t *p;
float x[NUM], *p2;
unsigned char y[NUM];
clock_t c;
int i, j;
for(i=0;i<NUM;i++) x[i]=rand()%100,y[i]=0;
c=clock();
for(j=0;j<TRY;j++){
p=(f2i_t*)x;
for(i=0;i<NUM;i++){
y[i]=((0x800000 | p->karisuu) >> (150-p->sisuu));
p++;
}
}
printf("%d %.3f[sec]\n", y[0], (double)(clock()-c)/CLOCKS_PER_SEC);
c=clock();
for(j=0;j<TRY;j++)
for(i=0,p2=x;i<NUM;i++,p2++) y[i]=*p2;
printf("%d %.3f[sec]\n", y[0], (double)(clock()-c)/CLOCKS_PER_SEC);
return 0;
}
0754デフォルトの名無しさん
2007/10/11(木) 08:52:49これはいただきだ!
0755753
2007/10/11(木) 09:06:210756デフォルトの名無しさん
2007/10/11(木) 09:13:47環境は?
IA-32だとどう見ても遅いんだけど。
>>753
0のときは最上位ビットを立ててはいけない。
0757デフォルトの名無しさん
2007/10/11(木) 09:15:060758デフォルトの名無しさん
2007/10/11(木) 09:17:04cl /O2 foo.cpp
41 0.350[sec]
41 4.446[sec]
cl /arch:SSE2 /O2 foo.cpp
41 0.350[sec]
41 0.260[sec]
SSE使うと逆転した
0759753
2007/10/11(木) 09:21:33実際には 150-128=22 ビットしかシフトされていないようだ
これはC3だから?
0760デフォルトの名無しさん
2007/10/11(木) 09:32:36あー、そりゃそもそもダメだ。ビット数以上のシフトは環境依存。
CPUによっては(IA-32のように)32の剰余分しかシフトしない。
0761753
2007/10/11(木) 09:36:24y[i]=((0x800000 | p->karisuu) >> (150-p->sisuu));
↓
y[i]=(150-p->sisuu)>31?0:((0x800000 | p->karisuu) >> (150-p->sisuu));
0762デフォルトの名無しさん
2007/10/11(木) 09:38:24/arch:SSE2 /Ox /Ot
41 0.172[sec]
41 0.234[sec]
後者が通常の方法だよね?
0763デフォルトの名無しさん
2007/10/11(木) 09:45:30--
C:\cygwin\tmp>cl foo.c /O2
C:\cygwin\tmp>.\foo
0 0.250[sec]
0 1.765[sec]
C:\cygwin\tmp>cl foo.c /O2 /arch:SS
C:\cygwin\tmp>.\foo
0 0.250[sec]
0 0.125[sec]
--
$ gcc foo.c -O3
$ ./a
0 0.313[sec]
0 0.875[sec]
$ gcc foo.c -O3 -msse2
$ ./a
0 0.313[sec]
0 0.125[sec]
--
えーと、clのfpuの遅さとgccの最適化の悪さは何?
0764デフォルトの名無しさん
2007/10/11(木) 09:53:30SSEとかが使えないようなPCでは提案された方法の方が速くなると!
0766デフォルトの名無しさん
2007/10/11(木) 10:06:41あーそうか、オーバフローするのか。値を制限すればいいんでない?
って、要は固定小数点と見做すようなもんか。
0767デフォルトの名無しさん
2007/10/11(木) 11:21:13ポイント使わなければ何がおきるの?
数値に誤差でるの?
0768デフォルトの名無しさん
2007/10/11(木) 11:34:280769デフォルトの名無しさん
2007/10/11(木) 11:36:49意味がわからんので、具体的なコードで例を示してみてくれ
0770デフォルトの名無しさん
2007/10/11(木) 13:42:54スイッチ文にてnumの値によって処理がかわるようにしたいと思いました。
numが1,2の場合で、swがFALSEだった場合はdefaultの処理に行かすようにしたいのです。
そしたら、トリッキーっぽいな処理を思いついて(下のやつ)、
試しにコンパイルしてみましたがやっぱりだめでしたw
やっぱし、caseの中に同じif文書くしかないでしょうか?
switch(num)
{
if(SW == FALSE)
{
case 1:
//1の処理
break;
case 2:
//2の処理
break;
}
case 3:
//3の処理
break;
case 4:
//4の処理
break;
default:
//default処理
break;
}
0771デフォルトの名無しさん
2007/10/11(木) 13:49:36これでどう?
switch(SW?num:0)
0772デフォルトの名無しさん
2007/10/11(木) 13:52:480773デフォルトの名無しさん
2007/10/11(木) 13:56:250774デフォルトの名無しさん
2007/10/11(木) 14:50:46case 1:
if (SW == FALSE) goto sw_false;
// 1の処理
break;
case 2:
if (SW == FALSE) goto sw_false;
// 2の処理
case 3:
// 3の処理
break;
case 4:
// 4の処理
break;
default:
sw_false:
// default処理
break;
}
0775デフォルトの名無しさん
2007/10/11(木) 14:55:59その形式のif文ありましたね、忘れてました。
>>774
そういう手がありましたか・・・。
ありがとです^^
0776デフォルトの名無しさん
2007/10/11(木) 14:58:33{
case 4:
//4の処理
break;
case 3:
//3の処理
break;
case 2:
if(SW==TRUE) {
//2の処理
break;
}
case 1:
if(SW==TRUE) {
//1の処理
break;
}
default:
//defaultの処理
break;
0777デフォルトの名無しさん
2007/10/11(木) 17:13:11データをfloatで持たずに最初から整数でもてばいいのではないかな?
たとえばAD変換のデータなら元データは整数だから、時数に返還しないで整数のまま処理する。
もっとも、扱っているデータがどういうデータなのかわかなないけど
0778デフォルトの名無しさん
2007/10/11(木) 22:38:48PS3ソフトで利益をあげるには最低50万本売らないといけない」
カプコン「PS3の高すぎる開発費のため、モンハン3のプラットフォームを変えた」
セガ「PS3やXbox360ではプログラマが50人以上必要。Wiiだと20人位」
THQ「PS3やXbox360ではコストが1000万〜1200万ドル。Wiiだと150万〜400万ドル」
0779デフォルトの名無しさん
2007/10/11(木) 22:54:040780デフォルトの名無しさん
2007/10/12(金) 20:03:38表示してきた文字を消すことはできますか?
0781デフォルトの名無しさん
2007/10/12(金) 20:05:160782デフォルトの名無しさん
2007/10/12(金) 20:09:48どうすればできますか?
0783デフォルトの名無しさん
2007/10/12(金) 20:11:350784デフォルトの名無しさん
2007/10/12(金) 20:16:070785デフォルトの名無しさん
2007/10/12(金) 20:22:370786デフォルトの名無しさん
2007/10/12(金) 20:24:040787デフォルトの名無しさん
2007/10/12(金) 21:18:450788デフォルトの名無しさん
2007/10/12(金) 21:30:52表示した文字を消すって時点で環境依存だから。
0789デフォルトの名無しさん
2007/10/12(金) 21:34:550790デフォルトの名無しさん
2007/10/12(金) 21:43:12Visual C# 2005 Express Editionを使ってるのですが、
ツールボックスを詳しく解説してるサイトってありませんか?
ググってもあんまり見つからないのですが・・・
0791デフォルトの名無しさん
2007/10/12(金) 21:43:160792デフォルトの名無しさん
2007/10/12(金) 21:54:26.c内に入れるとコンパイルできるのですが、できればヘッダーの中に入れておきたいです
解決策はあるでしょうか?
0793デフォルトの名無しさん
2007/10/12(金) 21:56:59問題の出る最小のソースをうp!
0794デフォルトの名無しさん
2007/10/12(金) 21:57:40エラーを書け。
おそらくプロトタイプ前に構造体が定義されてない
0795デフォルトの名無しさん
2007/10/12(金) 22:07:27#include "test.h"
typedef struct{
int yx;
}PARA;
PARA param={1};
int main(){
print(param);
return 0;
}
test.h
void print(PARA param){
printf("%d",param.yx);
}
エラー E2147 C:\Cpro\stest\test.h 1: 引数宣言は 'PARA' で始められない
エラー E2294 C:\Cpro\stest\test.h 2: . または .* の左側に構造体が必要(関数 print )
エラー E2342 C:\Cpro\stest\test.c 12: パラメータ 'param' は int 型として定義されているので PARA は渡せない(関数 main )
です
お願いします
0796デフォルトの名無しさん
2007/10/12(金) 22:09:020797デフォルトの名無しさん
2007/10/12(金) 22:09:48構造体定義をヘッダーにかけ
0798デフォルトの名無しさん
2007/10/12(金) 22:11:27有難うございます
コンパイルできました
0799デフォルトの名無しさん
2007/10/12(金) 22:12:03>794
構造体の定義もインクルードファイルに書いておけ。
0800デフォルトの名無しさん
2007/10/12(金) 22:15:08教えてぽ
0801デフォルトの名無しさん
2007/10/12(金) 22:41:16この前まで仕事についていました
0802デフォルトの名無しさん
2007/10/12(金) 22:49:34今ではスクリプト言語の拡張モジュールを書くのに使っている。
既存のCで書かれたライブラリとつなげたり、
性能が必要な部分だけちょこっとCで書いたり。
0803デフォルトの名無しさん
2007/10/12(金) 22:51:380804デフォルトの名無しさん
2007/10/12(金) 23:04:590805デフォルトの名無しさん
2007/10/12(金) 23:20:47プロ歴2年目
プログラミング歴9年目
彼女居ない歴27年目
0806デフォルトの名無しさん
2007/10/12(金) 23:21:53制限の大きい環境の中での開発は楽しい。
0807名無し
2007/10/12(金) 23:30:01If文を使うってことわ分かるんですが・・・・
0808デフォルトの名無しさん
2007/10/12(金) 23:31:130809デフォルトの名無しさん
2007/10/12(金) 23:31:300810デフォルトの名無しさん
2007/10/12(金) 23:32:18#define N 5
sort(int data[],int N){
int i,j,k;
int max,max_num;
int data[]
for (i = 0;i < N;i++){
max = data[i];
for (j = i + 1;j < N;j++)
if (max < data[j]){
max = data[j];
max_num = j;
}
for (k = max_num;k > i;k--)
data[k] = data[k - 1];
data[i] = max;
} }
int main(void){
int a[N]={1,2,3,4,5};
int i;
sort(a,N);
for (i = 0;i < N;i++)
printf("%d",a[i]);
return 0;
}
3行目あたりが怪しいと思うのですが…どうすればいいですか?
0811名無し
2007/10/12(金) 23:32:220812デフォルトの名無しさん
2007/10/12(金) 23:34:08それをどうしたいの
0813デフォルトの名無しさん
2007/10/12(金) 23:36:12配列を大きい数順に並びかえて表示させたいのです
0814デフォルトの名無しさん
2007/10/12(金) 23:37:09#include<stdio.h>
int main(void){
int n;
scanf("%d",&n);
while(n>0)n-=2;
if(!n)printf("偶数です");
else printf("奇数です");
return 0;
}
0815デフォルトの名無しさん
2007/10/12(金) 23:43:20#include<stdio.h>
int main(void){
int n;
scanf("%d",&n);
if(n&1) printf("奇数です");
else printf("偶数です");
return 0;
}
0816名無し
2007/10/12(金) 23:44:09ありがとうございます。でもwhile(n>0)n-=2;の意味がわかりません><
0817デフォルトの名無しさん
2007/10/12(金) 23:49:360未満になるまで入力値を-2していく。
どんな正の整数も最終的に0か-1になる。
0なら偶数、-1なら奇数としてる。
0818名無し
2007/10/12(金) 23:51:03ありがとうございます。
n&1の意味が分かりません><
&の後ろに数字を入れてもいんですか?
0819デフォルトの名無しさん
2007/10/12(金) 23:51:46ここの&は論理演算だ。
0820デフォルトの名無しさん
2007/10/12(金) 23:52:101&nでもいいよ
0821名無し
2007/10/12(金) 23:55:43なるほど!どんな数でも−2していけばその値が0かー1になるからそれで判別するってことですか!ありがとうございます。
0822デフォルトの名無しさん
2007/10/12(金) 23:58:43○どんな正の整数
0823名無し
2007/10/12(金) 23:59:20あー!つまりn=1の解釈ですね。分かりました。
0825デフォルトの名無しさん
2007/10/13(土) 00:02:43>>814だと-2とかも奇数になってしまう。>>815だと大丈夫。
0826名無し
2007/10/13(土) 00:04:57親切な対応感謝です。
0827デフォルトの名無しさん
2007/10/13(土) 00:06:04勘違いしてね?
nの最下位ビットが1かどうかの判定をしているんだぞ?
0828デフォルトの名無しさん
2007/10/13(土) 00:06:07整数を入力後8bitまでの2進数で算出するプログラムを作れ。ただし、1bit目は?と出力できること。また、8bit以上の数字は再入力とし、負の数字の入力でプログラム終了とする。
↑の2つの問題わかるかたお願いします。
0829デフォルトの名無しさん
2007/10/13(土) 00:06:470830名無し
2007/10/13(土) 00:07:27n=getchar();
という文は必ずしも必要ではないんですか??
0831デフォルトの名無しさん
2007/10/13(土) 00:08:03宿題スレ行け
0832デフォルトの名無しさん
2007/10/13(土) 00:08:170833デフォルトの名無しさん
2007/10/13(土) 00:10:11はてな?
0834名無し
2007/10/13(土) 00:14:00わかりました。
0835デフォルトの名無しさん
2007/10/13(土) 00:41:25?と出力ってのがよくわかんなかったが、とりあえず下の問題だけできた
#include<stdio.h>
int main(void){
int n,i;
while(0x0==0x0){
flg:
printf("整数を入力してください:");
scanf("%d",&n);
if(n&1<<(sizeof(n)*8-1))return 0;
if(n&~0xFF)goto flg;
for(i=1<<7;i>0;i>>=1)printf("%d",!!(n&i));
putchar('\n');
}
}
0837デフォルトの名無しさん
2007/10/13(土) 01:10:05sort(int data[], int N) → void sort(int data[], int n)
sort関数内のNをnに置き換え
int data[] を削除
0838デフォルトの名無しさん
2007/10/13(土) 01:28:53#include<stdio.h>
int main(void){
int n,i;
flg:
printf("整数を入力してください:");
scanf("%d",&n);
if(n){
if(n>0){
i=1;
while(n>!0) i*=n--;
}else goto flg;
}
else return 0;
printf("%d\n",i);
goto flg;
}
0839デフォルトの名無しさん
2007/10/13(土) 02:33:550840デフォルトの名無しさん
2007/10/13(土) 02:47:280841デフォルトの名無しさん
2007/10/13(土) 02:50:34「Cできます」みたいな奴が多い。
実際はgotoはふつうに使うよ
0842デフォルトの名無しさん
2007/10/13(土) 03:38:040843デフォルトの名無しさん
2007/10/13(土) 03:40:18>>838みたいな使い方はする意味が無い。読みづらくなるだけ。
>>841の程度が知れるわ。
そもそも>>838は>>828に対する嫌がらせで書いてるだけだろ。
0844デフォルトの名無しさん
2007/10/13(土) 03:43:150845デフォルトの名無しさん
2007/10/13(土) 04:50:540846デフォルトの名無しさん
2007/10/13(土) 05:01:42つか誰か止めろよ
0847デフォルトの名無しさん
2007/10/13(土) 05:18:17>>838と同じで代替手段があるのにわざと読みにくく書いてるんじゃね?
0848デフォルトの名無しさん
2007/10/13(土) 06:35:27そもそもDLLを使用するにはどうすればいいのでしょう?
ググっても自分で作ったLIBファイルを使うものしか出てきません。
また、そのDLLで使用できる関数を調べるにはどうすればいいのでしょうか?
0849デフォルトの名無しさん
2007/10/13(土) 07:49:090850デフォルトの名無しさん
2007/10/13(土) 07:54:55DLLの関数はC言語だけで調べるよりもVBとかも含めて調べるといい
0851デフォルトの名無しさん
2007/10/13(土) 07:56:540852デフォルトの名無しさん
2007/10/13(土) 08:33:35クソの集まり創価学会
偽善者が政治活動、公明党
キチガイ集団が政治活動、公明党
池田狂信ネズミ講が政治活動、公明党
騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
0853デフォルトの名無しさん
2007/10/13(土) 08:34:13クソの集まり創価学会
偽善者が政治活動、公明党
キチガイ集団が政治活動、公明党
池田狂信ネズミ講が政治活動、公明党
騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
0854デフォルトの名無しさん
2007/10/13(土) 08:34:56クソの集まり創価学会
偽善者が政治活動、公明党
キチガイ集団が政治活動、公明党
池田狂信ネズミ講が政治活動、公明党
騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
0855デフォルトの名無しさん
2007/10/13(土) 08:35:38クソの集まり創価学会
偽善者が政治活動、公明党
キチガイ集団が政治活動、公明党
池田狂信ネズミ講が政治活動、公明党
騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
0856デフォルトの名無しさん
2007/10/13(土) 08:36:14クソの集まり創価学会
偽善者が政治活動、公明党
キチガイ集団が政治活動、公明党
池田狂信ネズミ講が政治活動、公明党
騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
0857デフォルトの名無しさん
2007/10/13(土) 09:00:58ありがとうございます。配布元にドキュメントがありました。
しかし疑問なのですが、DLLの使い方はネットで調べなければわからないものなんですか?
ドキュメントが存在しなかったり、検索に引っかからない無名DLLの場合はどうすればいいのでしょう?
他のソフトに同梱されているDLLが便利そうだから使ってみる、ということはできないのでしょうか。
0858デフォルトの名無しさん
2007/10/13(土) 10:32:450859デフォルトの名無しさん
2007/10/13(土) 11:03:16VBで参照設定すれば中の関数の一覧が見れる。
C#等.NET言語でも同じように中身を見れる。
いずれにせよ、Cとはあまり縁のない世界だな。
0860デフォルトの名無しさん
2007/10/13(土) 13:23:39#include <windows.h>
int PASCAL WinMain(HINSTANCE hinstCurrent, HINSTANCE hinstPrevious,LPSTR lpszCmdline,int nCmdShow)
{
MessageBox(NULL,"aaa","bbb",MB_OK);
return 0;
}
みたいな簡単なプログラムがエーラーが出るとです。
プロジェクト 'tekitou - Win32 Debug' 用の中間ファイルおよび出力ファイルを削除しています。
--------------------構成: tekitou - Win32 Debug--------------------
コンパイル中...
tekitou.c
リンク中...
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/tekitou.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
tekitou.exe - エラー 2、警告 0
エラーの対処・理由・上手い使い方を教えて?
易しいサイト等も有ったら、教えてちょ
m(_ _)m
0861デフォルトの名無しさん
2007/10/13(土) 13:28:27エラー見ればmainが無いってわかるじゃん。
プロジェクトの設定がおかしいんじゃね?
0862860
2007/10/13(土) 13:38:08昨日は動いたのだけど、今日やったら動か無い・・・
ファイル 開く 〜.c
では駄目?
また一々プロジェクトを設定するものなの?
VCは初心者じゃけん、迷惑かけるけど付き合いヨロ
m(_ _)m
0863860
2007/10/13(土) 13:39:230864デフォルトの名無しさん
2007/10/13(土) 13:41:430865デフォルトの名無しさん
2007/10/13(土) 13:53:430866デフォルトの名無しさん
2007/10/13(土) 13:54:38「2行3列と3行2列の行列の積を求めるプログラムを作成せよ」
x=1,2,3
4,5,6
y=1,5
5,3
8,1
というモノがあるのですが
#include <stdio.h>
int main(void)
{
int i,j,k;
int ma[2][3] = { {1,2,3},{4,5,6} };
int mb[3][2] = { {1,5},{5,3},{8,1} };
int mc[2][2] = {0};
for(i=0;i<2;i++){
for(j=0;j<2;j++){
for(k=0;k<3;k++){
mc[i][j] += ma[i][k] * mb[k][j];
}
printf("%d",mc[i][j]);
}
putchar('\n');
}
return (0);
}
上記のプログラムで良いらしいのですが、何故2行3列と3行2列の積が2行2列になるのか。
mc[i][j] += ma[i][k] * mb[k][j];のように加えて行くのか理解することが出来ません。
どのような理屈なのかをお分かりの方、教えてください。
0867デフォルトの名無しさん
2007/10/13(土) 13:56:12>何故2行3列と3行2列の積が2行2列になるのか。
プログラムの問題じゃない、単なる行列の積だ。
授業でやらなかったのか?
0868デフォルトの名無しさん
2007/10/13(土) 14:00:21失礼しました。
0869デフォルトの名無しさん
2007/10/13(土) 14:01:140871デフォルトの名無しさん
2007/10/13(土) 14:19:33くだすれVisual C++(超初心者用)その5
http://pc11.2ch.net/test/read.cgi/tech/1181181665/
0872デフォルトの名無しさん
2007/10/13(土) 17:30:07これ値が一つずつ多くね?
例えば2行2列なら[1][1]でいいだろ
0873デフォルトの名無しさん
2007/10/13(土) 17:31:39VBとCがごっちゃになっていないか?
0874デフォルトの名無しさん
2007/10/13(土) 17:32:15キミは何を言ってるんだ…
0875デフォルトの名無しさん
2007/10/13(土) 17:53:240876デフォルトの名無しさん
2007/10/13(土) 18:01:560877デフォルトの名無しさん
2007/10/13(土) 21:28:52例えば1バイトかもしれないし、1GB以上かもしれないような場合、最初に[10000]とかで宣言するわけにはいきませんよね。
かと言って[]で宣言したとしても、結局mallocの時にはサイズを指定することになるので、あまり変わらない感じです。
こういう配列は普通どうやって実現するんですか?
0878デフォルトの名無しさん
2007/10/13(土) 21:32:07途中でもっと大きなものが必要になったら、reallocで大きなサイズに確保しなおす。
0879デフォルトの名無しさん
2007/10/13(土) 21:33:03Cには標準では無いので自作するしか
(mallocとreallocを使うとか)
0880デフォルトの名無しさん
2007/10/13(土) 21:37:40なるほど。しかしreallocも結局サイズ指定が必要ですよね。
必要なサイズが本当に全くわからない場合でも、その方法は有効なのでしょうか?
>>879
便利そうですね。
他の言語だとこのような配列は普通に扱えるんですか?
0881デフォルトの名無しさん
2007/10/13(土) 21:42:18必要なサイズがわからないデータなど存在するわけがなかろう…
0882デフォルトの名無しさん
2007/10/13(土) 21:44:24目的はストリーミングなのか?
0884デフォルトの名無しさん
2007/10/13(土) 21:52:41どうせvectorも、適当に確保しておいて必要になったら確保し直す戦略だよ。
0885デフォルトの名無しさん
2007/10/13(土) 22:03:52配列にデータを格納するその瞬間に、そのデータを入れるのに必要なサイズまで拡張するの
格納するデータはその瞬間は手元にあるわけだから、サイズがわからないわけないだろう
0886デフォルトの名無しさん
2007/10/13(土) 22:23:52ということは、サイズの指定は変数で行えばいいんですか?
サイズを測ってそれを変数に代入してメモリ確保、ということも可能なんでしょうか。
しかしそもそも、サイズを測るためにはまずメモリに格納されていなければ不可能だと思うのですが…。
0887デフォルトの名無しさん
2007/10/13(土) 22:27:51コップですくい続ければ最終的には、
コップN個分で足りる。
0888デフォルトの名無しさん
2007/10/13(土) 22:35:55データが存在するなら、どこかの記憶域にあるわけだろ…
0889デフォルトの名無しさん
2007/10/13(土) 22:37:18おまいが心配しているケースを具体的に書いてみ
0890デフォルトの名無しさん
2007/10/13(土) 22:38:37HDDや標準入力から、メモリに読み込まずにサイズを測ることは可能なんですか?
0891デフォルトの名無しさん
2007/10/13(土) 22:44:41とりあえず1KBのメモリを確保して、1KB読む。
まだデータが残ってるなら、1KB追加確保して次の1KBを読む。
まだ残ってるなら、2KB追加確保して次の2KBを読む。
何も難しいことはなかろう。
0892デフォルトの名無しさん
2007/10/13(土) 22:44:41例えば、終わりに達するまで1KBずつ読み込んでいく。
1KB読むたびに、配列を1KBずつ拡張していく。そんな感じ。
0893デフォルトの名無しさん
2007/10/13(土) 22:44:53例えばキーボードから入力された文字列の大きさを測る場合、
文字列はコピペを駆使して100MB以上にすることも可能ですよね。
そういうものを暴走させずに対処したいんです。
0894デフォルトの名無しさん
2007/10/13(土) 22:46:19そんなことができるんですか!順に読み込むにはどの関数を使えばいいんでしょうか?
0895デフォルトの名無しさん
2007/10/13(土) 22:46:24EOFでなければreallocで確保領域増やしてまたfgets
この繰り返し。とか。
0896デフォルトの名無しさん
2007/10/13(土) 22:47:12しねよ…
0897デフォルトの名無しさん
2007/10/13(土) 22:48:31ケコーン
0898デフォルトの名無しさん
2007/10/13(土) 22:50:00ファイルポインタを制御してファイルサイズを取得してから
データの読み込みを行う、とかいう手もある。
>>895
fgetsはオーバーした分捨てるからダメじゃね?
readとかgetcharとか
0899デフォルトの名無しさん
2007/10/13(土) 22:51:58あれ、捨てるんだっけ?
すまん
0900デフォルトの名無しさん
2007/10/13(土) 22:54:54fgetcでもfreadでも好きなの使えばいいよ
0901デフォルトの名無しさん
2007/10/13(土) 22:55:18標準入力に関してはどうでしょう?
サンプルを見てもいつも[1000]とか「これくらいなら大丈夫だろう」みたいな
あまり根拠の無い数字ばかり書いてあって、無駄だしスマートじゃないしで
何かいい方法が無いのかと気になってます。
0902デフォルトの名無しさん
2007/10/13(土) 22:58:08stdinって知ってる?
0903デフォルトの名無しさん
2007/10/13(土) 23:00:12同じだよ
fgetcでもfreadでも好きなの使って、同じようにメモリ確保して拡張しながら読んでいけばいい
0904デフォルトの名無しさん
2007/10/13(土) 23:05:50scanfくらいしか使えないと思ってたので、fread系が使えるとは驚きです。
それならいろいろ応用が効きそうですね。ありがとうございました。
0905デフォルトの名無しさん
2007/10/13(土) 23:22:00捨てるかよ、馬鹿言ってんじゃないよ。
0906デフォルトの名無しさん
2007/10/13(土) 23:23:170907デフォルトの名無しさん
2007/10/13(土) 23:26:41そして、奇数の値のみもう1つの配列に代入してください。」
という問題なのですが、下のコードを実行すると
配列1 = 10 15 22 45 9 66 71 4 37 82
配列2 =
という様に配列2が表示されません。どこがダメなのか教えてください。
よろしくお願いします。
#include <stdio.h>
int main(void)
{
int array1[10] = {10, 15, 22, 45, 9, 66, 71, 4, 37, 82}, array2[10];
int *p1, *p2;
int i, j;
p1 = array1;
p2 = array2;
for (i = 0, j = 0; i < 10; i++); {
if (*(p1 + i) % 2 == 1) {
*(p2 + j) = *(p1 + i);
j++;
}
}
printf("配列1 = ");
for (i = 0; i < 10; i++) {
printf("%d ", *(p1 + i));
}
printf("\n配列2 = ");
for (i = 0; i < j; i++) {
printf("%d ", *(p2 + i));
}
return 0;
}
0908907
2007/10/13(土) 23:33:27forの()のあとにセミコロンを入れていました。
考えてくださっていた方ありがとうございました。
0909デフォルトの名無しさん
2007/10/13(土) 23:33:41for (i = 0, j = 0; i < 10; i++); { <−このセミコロン';'が余計
if (*(p1 + i) % 2 == 1) {
*(p2 + j) = *(p1 + i);
j++;
}
0910デフォルトの名無しさん
2007/10/13(土) 23:35:27処で、なんでarray1[i]と書かずにわざわざ無意味に*(p1 + i)なんて書いているの?
0912デフォルトの名無しさん
2007/10/13(土) 23:40:160913907
2007/10/13(土) 23:40:33まだ初心者で入門書のポインタの章をやっていたところ
問題文に「ポインタを使って」と書かれていたのでそう書きました。
他にもよい方法があるのかもしれませんが、考えが及びませんでした。
0914デフォルトの名無しさん
2007/10/13(土) 23:43:460915デフォルトの名無しさん
2007/10/13(土) 23:44:496 は桁数
0916デフォルトの名無しさん
2007/10/13(土) 23:45:470917デフォルトの名無しさん
2007/10/13(土) 23:46:380918デフォルトの名無しさん
2007/10/13(土) 23:46:52ありがとうございます
0919デフォルトの名無しさん
2007/10/14(日) 00:01:170920907
2007/10/14(日) 00:03:15レスありがとうございます。
最初のfor文のことですよね?
とするとその次のループでまたp1とp2を0に戻すのが面倒だと思いiを使いました。
しかし、今思うとそちらのほうが効率がよいかもしれませんね。ありがとうございました。
0921デフォルトの名無しさん
2007/10/14(日) 00:05:090922デフォルトの名無しさん
2007/10/14(日) 00:19:06array[i]は*(p1 + i)のこと
Cの配列がゼロオリジンでなければ*(p1 + i - 1)
この-1を余計なものとCの設計者は考えたんだな
0923デフォルトの名無しさん
2007/10/14(日) 02:01:400924デフォルトの名無しさん
2007/10/14(日) 02:21:55確かに間違ってるが恐ろしいほどの遅レスだなw
0925デフォルトの名無しさん
2007/10/14(日) 15:03:57学生時代の勉強方を教えてください
0926デフォルトの名無しさん
2007/10/14(日) 15:50:11習うより慣れ
0927デフォルトの名無しさん
2007/10/14(日) 19:24:37Lは三つじゃなくて二つだ
0928デフォルトの名無しさん
2007/10/14(日) 19:29:08forの中身に条件式が6個くらいあるとき、
違う関数に条件式書いたほうがいいかな?
for文の中に関数を置くと処理に時間がかかると聞いたんですけど。
0929デフォルトの名無しさん
2007/10/14(日) 19:40:05関数は機能として作成するべき
長いからひとつの関数にするというのはよくない
関数呼び出しはアセンブラのcall命令とレジスタのpush/popが入るから
実効命令は長くなる
だけど150回のループでは体感でその違いはわからないだろう
0930デフォルトの名無しさん
2007/10/14(日) 20:55:26まるで東大入学の勉強法を聞くようだが
プロになるのは東大に入るのよりずっと簡単だぞ。
0931デフォルトの名無しさん
2007/10/14(日) 21:08:05is〜〜()ぐらいなら機能として作っても良いと思うけどね。
ぶっちゃけ条件が6個あっても、マクロやら関数になっててもどっちでも良い。
とりあえず自分が見やすい方にしたら?
あとはまぁ、forの条件に書くんじゃなくて、ループのブロック内で判定してbreakするとか。
0932デフォルトの名無しさん
2007/10/14(日) 21:18:280933デフォルトの名無しさん
2007/10/14(日) 21:21:02「こんなに関数呼び出してオーバーヘッドはないのかな
スタック?は大丈夫?(←当時は良く分かってない)」
と悩んだけど
たいていの場合鼻くそ程も影響しないケースが多い
0934名無し
2007/10/14(日) 21:26:07X=3&&X=5
でいいんですか??
0935デフォルトの名無しさん
2007/10/14(日) 21:26:12そんな勝手なことするの?
inlineをしていしないとインラインにはならないのでは?
0936デフォルトの名無しさん
2007/10/14(日) 21:28:20X=3がどうして3の倍数だよw
しかも代入しているし
!(x%3) && !(x%5)かな?
0937デフォルトの名無しさん
2007/10/14(日) 21:28:27NO!
0938デフォルトの名無しさん
2007/10/14(日) 21:29:46(x % 3 == 0) && (x % 5 == 0)
つうかまず算数をだな
0939名無し
2007/10/14(日) 21:32:05なるほど!ありがとです。
0940デフォルトの名無しさん
2007/10/14(日) 21:35:06C99からしかinlineキーワードは存在しないよ。
0941デフォルトの名無しさん
2007/10/14(日) 21:45:28main関数内の struct ftree *now5;だけで
セグメンテーションエラーでる。
これはどういうものなの?
構造体はこんなもんなんだけど
struct ftree{
double prob;//その状態での確率
double sprob;
0942デフォルトの名無しさん
2007/10/14(日) 21:46:34now5 の指す領域を確保していないに一票
0943デフォルトの名無しさん
2007/10/14(日) 22:03:32検査データのファイルを使って処理をするようなプログラムがたくさん
のってるC言語の本とかありませんかね?
ソフトウェアテストの本とかいいって聞いたんだけど。
0944デフォルトの名無しさん
2007/10/15(月) 00:07:50for(;*ps !='\0';ps++,pd++)
{
*pd = *ps; /*1文字複写*/
}
*pd = *ps; /*最後の'\0'を複写*/
1行目のfor()内の最初の ;*ps ってどういう意味ですか?
あと、3行目と5行目でやってることって一緒じゃないんですか?
0945デフォルトの名無しさん
2007/10/15(月) 00:10:50やってることは一緒だが、ループの回数よりもう一回余分にコピーする必要があるからそうしている
0946デフォルトの名無しさん
2007/10/15(月) 00:13:14*ps の前に ; をつけるのは何でですか?
0947デフォルトの名無しさん
2007/10/15(月) 00:17:46for (初期化; 条件; 更新)
初期化するものが何も無ければ、そこには何も書かない。
0948デフォルトの名無しさん
2007/10/15(月) 00:21:02ありがとうございました!!
0949デフォルトの名無しさん
2007/10/15(月) 00:45:58*(ps+i)と*ps+i ってどう違うんですか?
教科書読んでも分からなかったので..どなたか教えてください
0950デフォルトの名無しさん
2007/10/15(月) 00:50:241×(2+3) と 1×2+3 みたいなもん
0951デフォルトの名無しさん
2007/10/15(月) 00:52:09950
なるほど!ありがとうございました
0952デフォルトの名無しさん
2007/10/15(月) 00:58:230953デフォルトの名無しさん
2007/10/15(月) 01:04:13未だに理解できん・・・
0954デフォルトの名無しさん
2007/10/15(月) 01:04:47何度もすみません p_ptrってなんですか?
0955デフォルトの名無しさん
2007/10/15(月) 01:31:30単に何かの変数名なんじゃないの
0956デフォルトの名無しさん
2007/10/15(月) 01:36:00>955
そうなんですかΣ
ありがとうございました
0957デフォルトの名無しさん
2007/10/15(月) 01:36:12と表示された時はどこを調べたらよいですか?
0958デフォルトの名無しさん
2007/10/15(月) 01:39:50継承はC++から入るより、いったんJavaやったほうが理解しやすいと思う。
んで、一言でいうのはむずいなあ。。 個人的な意見な。
0959デフォルトの名無しさん
2007/10/15(月) 01:42:57たぶんどこかで括弧とかコメントとかを閉じ忘れてる
0960デフォルトの名無しさん
2007/10/15(月) 01:53:47一部抜粋です
//探索
for(p = data ; *p !='0' ;p++)
{
if(*p == key[0])
{
printf("文字%cは、%d番目にあった\n",key[0],p - data);
}
}
//探索ってのは/*探索*/とは別なんですか?
*p == key[0]の=ってなんで2つもいるんですか?
誰か教えてください
0961デフォルトの名無しさん
2007/10/15(月) 01:55:28== は比較
なぜってそう決まってるから
//〜 はコメントで /*〜*/ と一緒
0962デフォルトの名無しさん
2007/10/15(月) 01:58:29>>961
そうなんですか!!ありがとうございました
0963デフォルトの名無しさん
2007/10/15(月) 06:26:57//〜 は1行コメントで /*〜*/ は複数行コメント(1行でもOK)
初級C言語の本とかには絶対書かれてるから読んだほうがいいよ
0964デフォルトの名無しさん
2007/10/15(月) 08:22:56if((c >= 'a' )&&( c <= 'z'))
&&ってどういう意味ですか?
0965デフォルトの名無しさん
2007/10/15(月) 08:25:02本を買った方が早い
買いに行けないのなら初心者講座してるサイトでも探した方がいい
0966デフォルトの名無しさん
2007/10/15(月) 08:43:31{1,2,3,200},
{1,3,3,200},
{2,2,3,200},
};
ってどういう意味ですか?値の初期化はできてますか?
0967デフォルトの名無しさん
2007/10/15(月) 15:11:35m 以上 n 以下の整数のうち 3 で割り切れるものの和を求めるプログラムを作成せよ。
という問題ですが、以下のプログラムだと、mが「3の倍数+2」、nが「3の倍数+1」のとき
正しい値が出力されません。どこがおかしいか教えてほしいです。
よろしくおねがいします。
#include <stdio.h>
int main(void)
{int m,n,X,total;
printf("数値を入力してください");
scanf("%d",&m);
printf("今入力した数値以上の数値を入力してください");
scanf("%d",&n);
total = 0;
X = 0;
if(m%3 == 0)
{total = total + m;
{while(m<=n)
m = m + 3;}
printf("%d",total);}
else if(m%3 == 1)
{while(m<=n)
{total = total + m;
X = m + 2;
m = m + 3;}
printf("%d",total);}
else
{while(m<=n)
{total = total + m;
X = m + 1;
m = m + 3;}
printf("%d",total);}}
0968デフォルトの名無しさん
2007/10/15(月) 15:22:23[]の中に何もかかれてなければ、その初期化のときに必要な
領域が自動的につくられる。よって初期化はできてる
0969ごめんこっち
2007/10/15(月) 15:26:52int main(void)
{int m,n,X,total;
printf("数値を入力してください");
scanf("%d",&m);
printf("今入力した数値以上の数値を入力してください");
scanf("%d",&n);
total = 0;
X = 0;
if(m%3 == 0)
{total = total + m;
{while(m<=n)
m = m + 3;}
printf("%d",total);}
else if(m%3 == 2)
{while(m<=n)
{total = total + X;
X = m + 1;
m = m + 3;}
printf("%d",total);}
else
{while(m<=n)
{total = total + X;
X = m + 2;
m = m + 3;}
printf("%d",total);}
}
0970デフォルトの名無しさん
2007/10/15(月) 15:27:58#include <stdio.h>
int main(void)
{
int m, n, total;
printf("数値を入力してください");
scanf("%d", &m);
printf("今入力した数値以上の数値を入力してください");
scanf("%d", &n);
total = 0;
m=(m+2)/3*3; // m を 3 の倍数にする ※ここ重要
// while(m%3!=0) m++; でも可
while(m <= n)
{
total = total + m;
m = m + 3;
}
printf("%d", total);
return 0;
}
0971デフォルトの名無しさん
2007/10/15(月) 15:31:05m=(m+2)/3*3; // m を 3 の倍数にする ※ここ重要
ここで例えば4なら6、8なら9という操作をしてるんですね?
サンクスです。
よかったら>>969で変な値が出た理由を教えてほしいです。
0972デフォルトの名無しさん
2007/10/15(月) 15:36:57下のように置換すれば分かると思うよ
total = total + X;
↓
total = total + X;
printf("debug total=%d\n", total);
0973デフォルトの名無しさん
2007/10/15(月) 15:39:19うーむ、初心者なんで少し難しいっすね。
まぁ参考になりましたありがとうございます!
0974デフォルトの名無しさん
2007/10/15(月) 15:43:19int main() {
int i, m, n, total = 0;
printf("数値を入力してください");
scanf("%d",&m);
printf("今入力した数値以上の数値を入力してください");
scanf("%d",&n);
for (i = m; i <= n; i++) {
total += i % 3 == 0 ? i : 0; // m 以上 n 以下の整数のうち 3 で割り切れるものの和
}
printf("%d",total);
return 0;
}
0975デフォルトの名無しさん
2007/10/15(月) 16:01:33int begin = n/3, end = m/3;
return 3 * (end + begin) * (end - begin + 1) /2;
}
これでも、あってますか?
0976デフォルトの名無しさん
2007/10/15(月) 16:05:20>if(m%3 == 0)
> {total = total + m;
> {while(m<=n)
> m = m + 3;}
> printf("%d",total);}
↑ここは入力ミス(ブロックのくくりミス)だと思うからとりあえず置いといて
>else if(m%3 == 2)
> {while(m<=n)
> {total = total + X;
> X = m + 1;
> m = m + 3;}
> printf("%d",total);}
ちゃんと脳内トレースすれば分かると思うけど、
ループ条件のチェックが"足す前"に行われている。
Xにm+1が代入されて、それが足される前にm+=3して条件チェックしちゃってるから、
m+1 <= n < m+3
になってると、while条件でXが足される前にループ抜けちゃう。
さらにいえば、ここでの条件チェックはm+1<=nとかX<=nとかすべき
(mがn以下であるからといってm+1がn以下とは限らない)
一例としては、
else if(m%3 == 2){
while(m+1 <= n){
total += m + 1;
m += 3;
}
printf("%d",total);
}
まあ、for使った方が分かりやすいかもね。
0977デフォルトの名無しさん
2007/10/15(月) 16:05:26っ n=4, m=6
0979デフォルトの名無しさん
2007/10/15(月) 16:11:40int func1_c(const int n, const int m) {
int begin = (n+2)/3, end = m/3;
return 3 * (end + begin) * (end - begin + 1) /2;
}
0980デフォルトの名無しさん
2007/10/15(月) 16:13:200981デフォルトの名無しさん
2007/10/15(月) 17:05:04int main(int argc, char *argv[])
{
int k = 0; ← こっちが前?
for (int i = 0; i < 10; i++) {
k += i;
}
printf("こたえ=%d", k); ← こっちが前?
}
0982デフォルトの名無しさん
2007/10/15(月) 17:10:020983デフォルトの名無しさん
2007/10/15(月) 18:06:42とりあえずマージする部分のマクロはできました。
分割マクロの再帰→マージマクロ再帰でできるかなあと考えています。
でも与えられた配列を分割を繰り返して
要素数1にするという行程のプログラムをどうしても考え付きません。
どなたか教えて下さい。。マージマクロはこのままで使える方向で作りたいです。
void merge(int data1[], int n1, int data2[], int n2, int data3[]){
int index1, index2, index3, i;
index1 = index2 = index3 = 0;
printf("merge_sort\n");
while(index1 < n1 || index2 < n2){
if(index1 < n1 && index2 < n2){
(data1[index1] >= data2[index2])?(data3[index3++] = data1[index1++],)
:(data3[index3++]=data2[index2++]);
for (i=0; i<(2*N) ;i++)
printf("%d,", data3[i]);
printf("\n");
}
else if(index1 < n1){
for (;index1 < n1 ;index1++)
data3[index3++] = data1[index1]; }
else {for( ; index2 < n2 ; index2++)
{data3[index3++] = data2[index2];}}
}
}
0984デフォルトの名無しさん
2007/10/15(月) 18:19:040985デフォルトの名無しさん
2007/10/15(月) 18:22:32で、自分で作ってみようと頑張っているのか?
0986デフォルトの名無しさん
2007/10/15(月) 19:54:32○関数
郷に入りては郷に従え
0987デフォルトの名無しさん
2007/10/15(月) 19:58:51決してC言語の #define の事を言っているのでは無い。
それくらい文脈でわかりそうなもんだが、答えられないような難しい質問がくると
質問の本質とは関係ない部分で叩く煽る罵倒するのが、Cヲタの特徴。
0988デフォルトの名無しさん
2007/10/15(月) 20:07:33>それくらい文脈でわかりそうなもんだが
その甘さが数々の用語の誤用を招き
破壊と混乱をもたらしたのだ
何より先駆者に対する敬意が感じられない
0989デフォルトの名無しさん
2007/10/15(月) 20:11:540990デフォルトの名無しさん
2007/10/15(月) 20:17:200991デフォルトの名無しさん
2007/10/15(月) 20:32:110992デフォルトの名無しさん
2007/10/15(月) 20:49:51//全体の流れ
//無限ループ
//数値の入力、失敗したらピリオドであるかを判定。
//ピリオドなら終了if(getchar)=='.')break;
//ピリオドでなかったら入力間違いのメッセージを出して再入力。fflush(stdin);
//if文で正負0を判定して表示
//以上を繰り返す。
main()
{
int a;
printf("数値aを入力してください");
while(scanf("%d",&a)!='.'){
?????????????????????
if(getchar()=='.'){
break;
}
?????????????????????
if(a>0){
printf("PLUS\n");
}else if(a<0){
printf("MINUS\n");
}else if(a==0){
printf("ZERO\n");
}
}
}
2箇所、分かりません。よろしくお願いします。
0993デフォルトの名無しさん
2007/10/15(月) 20:56:51http://pc11.2ch.net/test/read.cgi/tech/1191937213/
こちらへ
0994デフォルトの名無しさん
2007/10/15(月) 20:57:21C/C++の宿題を片付けます 97代目
http://pc11.2ch.net/test/read.cgi/tech/1191937213/
↑こちらへどうぞ
しかし変なプログラムですなあ、scanfの戻り値を'.'と比較とは……
0996デフォルトの名無しさん
2007/10/15(月) 21:50:49その数値をに二次元配列にいれるとして
そこの二次元配列の最初の領域確保はどうするべきですか?
できるだけ領域を使わないとすると。
0997デフォルトの名無しさん
2007/10/15(月) 21:53:47検査データのファイルを使って処理をするようなプログラムがたくさん
のってるC言語の本とかありませんかね?
ソフトウェアテストの本とかいいって聞いたんだけど。
ファイルを実際に読み込み書き込みを使ってるプログラムを
書いてる本って少ないんだよなー
0998デフォルトの名無しさん
2007/10/15(月) 21:54:40fopenで、セグメンテーションフォルトが起きて困ってます。
古いバージョンのiccが入ってるマシンでは問題なく走ります。
考えられる原因は何なんでしょうか?
0999デフォルトの名無しさん
2007/10/15(月) 22:06:461000デフォルトの名無しさん
2007/10/15(月) 22:17:0110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。