1 :
名無しさん@お腹いっぱい。 :
2000/11/14(火) 13:56 「C言語って何ですか」「switch文がよくわからない」 っていう超初級の質問から、 「ゲームまで作ろうと思ったらどんなスキルが必要なんですか?」 「結局どこまで覚えればいいの?」 てな+α質問まで。 初心者スレでさえ冷笑されるようなド素人からの質問も、受け付けます。 質問スレでさえ「入門書に帰れ」「そんな基本的なこと聞くな」とか 言われるウルトラ初心者はここで聞いてね。 俺以外でも、親切な人は教えてやってください。 マターリいこうよ。
そもそもプログラムってなんですか?
ネタスレと化すに10円。
Borland C++ Compiler とゃらをDL ιたけど、C++ぁんまり分かっτなくτ。 どっかょぃ勉強ぺぇι゛(τぃぅかリファιソスみたぃの(?))は無ぃでせぅか?
どうしても彼女が濡れません ローション代も馬鹿にならないのですがどうしたらいいでしょうか
ウルトラマンと帰ってきたウルトラマンの区別がつきません あと、彼らはいつも同じ格好ですが、あれは裸なのでしょうか? ウルトラ板で聞いたら「入門書に帰れ」「そんな基本的なこと聞くな」 といわれたのでここで質問します
>5 風呂にゆっくり浸かって体を暖めろ 更に風呂上がりに蒸しタオルでダイレクトに膣口を暖めろ 前戯で氷使ったりしてないだろうな?
>5 風呂にゆっくり浸かって体を暖めろ 更に風呂上がりに蒸しタオルでダイレクトに膣口を暖めろ 前戯で氷使ったりしてないだろうな?
11 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 00:49
あのーC言語の教本でいいの教えてください。 皆さん同じような質問百回くらい見たかもしれませんがお願いします。
12 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 00:55
黙秘権を行使します。
13 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 01:46
教えたいのは山々なんだけど、それ言っちゃうと後が怖いから教えない。
14 :
13 :2000/11/15(水) 02:07
Cの本は林はるぴこがいいよ!
15 :
こぶら.Japan :2000/11/15(水) 02:29
C/C++のこむぱいらは何がよいですか? お金が無いので無料の方が良いです。 本気なのでお願いします。 それからJDKを落としましたが、 C:\jdk1.3\demo\applets\Animator\example1.html―example4.html のアニメが表示されません。一体、どうなっているのでしょうか? わかる人親切に教えて下さい。 いつまでも待ってます。よろしくお願いします。
水って意外とすべりが悪いぞ。 俺ならべろんべろんに舐めまわして、(もちろん俺のも舐めてもらって) つばでべちょべちょにしてから、やるなー
>16 とりあえず童貞は氏ねよ。
この方法は俺が16の時に24のおねーさんに教えてもらった 方法なのだったりする。 童貞。いい響きだね。
妄想電波は逝ってくれ。
20 :
>15 :2000/11/15(水) 03:18
>いつまでも待ってます。 フォースを感じる。
Perlが意味不明でコマテます。 タスケテゾマホソ
22 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 04:05
流れを読めずにマジレスします。 パソコン初心者で購入2ヶ月目の者です。 最近、ネットにようやく慣れてきて、 プログラムというものに興味が出てきました。 で、プログラムもいろいろあるみたいですが、 初心者はどれから学び始めたらよいのでしょうか? もちろんココにいる皆さんのように、プログラムで メシを食べれるようになれるなんて思っていません。 あくまで、趣味としてです。 よかったら教えてください。
23 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 04:24
>>22 これは意見が分かれると思いますが、
Winでアプリケーションを作るなら、
VisualBasic
VisualC++
C++Builder
Delphi
のいづれかでしょうね。
個人的にはC++Builderがお勧め。
24 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 05:53
MFCに対してSDKでプログラミングって良く聞くんですが、 あれってどうやってプログラミングするんですか? DirectX SDKみたいに何かインストールしなきゃなんないんでしょうか? 俺が今持ってるのはVC6です。 あとSDKとセットでWin32APIなどと言うのも聞きますが どういうつながりがあるんでしょうか?
>>22 バッチファイル。DOSの勉強になるしな!
27 :
結城 :2000/11/15(水) 10:49
>11 Cの教本だったら、柴田望洋「明解C言語 入門編 例題演習」がオススメだよ。 問題演習って形だから、自分の理解が正しいかどうか、すぐにチェックできる。 なにより彼のはわかりやすい。 出版はソフトバンク。 これね。 俺はこれでCを覚えた。プロ向けの厳密な定義がないぶん、初心者が手を出すには 向いてるよ。 他の言語をやったことあるとか、もっと厳密な定義を知りたい、ってんなら他の本も オススメだけどね。 「改定C言語入門」(ビギナー編とか4種くらいあるやつ)もビギナー用で売られて るけど、俺には少し難しかった。 Cを一通りやった上で、Cを徹底して理解するにはいい本だけど(詳しいから)、 全くのビギナーなら逆に混乱すると思う。 こっちは1ランク上と見たほうがいい。 作るプログラムのレベルにもよるけど、そこそこのプログラムまでなら柴田っちの 本のレベルで充分。 それに不満を感じて、さらに上のスキルを求めたら別の本に手を出すといい。
28 :
結城 :2000/11/15(水) 10:51
29 :
結城 :2000/11/15(水) 11:08
30 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 11:12
デザインパターンの本が4800円もするんで、(手取り16万円) ウェブ上から独学したいんですけど、お勧めサイトってありますか?
31 :
結城 :2000/11/15(水) 11:13
>15 追記。 すまん。JAVAのエラーはよくわからない。 設定どおりに書けばうまくいくと思うんだけど……。 やり直してもエラー出る? アニメってのが何のことかわからんのだけど、 もしかしたらパソコン自身に動画の再生ソフトが入ってない、って オチの可能性はある。
32 :
結城 :2000/11/15(水) 11:18
>22 作るレベルによる。 本当のマジ初心者なら、最初はCの方がオススメだと思う。 覚える量は一番少ないし、教材も豊富だから。 それで、プログラムがどんなものか分かったら、目的に応じてLv アップしていけばいいと思う。
33 :
結城 :2000/11/15(水) 11:23
>24 すまん。俺のレベルを越えてしまった(早っ) 分かる人、教えてあげてほしい。 他の初心者スレでも聞いてみると効率いいかも。 あっちはレベル高いから。
34 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 11:51
>>32 そうかな。本当の初心者なら C はつらいだろう。
はっきりいって、プログラムを組んでみたいんだったら
スタンドアロンなアプリにこだわる必要はないと思うんで、
Java Applet などからはじめてもいいと思う。
>>11 とゆーか、そもそも「人工言語」というものに慣れていないの
なら、簡単な HTML や JavaScript を書いてみることをすすめる。
初心者は、結果がすぐ目に見えるような言語を使うほうが
やりやすいと思う。
35 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 12:43
やっぱり最初はCだろう。C言語って、めちゃ簡単だもん。
36 :
厨房プログラマー :2000/11/15(水) 13:09
VC++使ってます。 デバッグの仕方というかコツがわかりません。 本とかサイトとかありませんか?
37 :
名無し :2000/11/15(水) 14:44
>>22 VBから。その後C++をやる。
Cの知識無くてもC++勉強できる入門書があるはず。
多分。
俺はbasicから入った。
Basic → Assembler(8bit@` 16bit) → C → C++ → 有象無象
こんな感じ。
>>35 簡単ではないよ。
ちゃんとしたものを作ろうとしたら、リファレンス片手に作るし、
ある意味大変だよ。
俺もCは「難しい方」だと思う。 とはいっても簡単な言語なんかないから一日でぱっとわかるのない? とか思われてるとそんなもんねえと言うしかない。 まー、hspかjavascriptあたりをやってれば概念が使いまわせるしシステム飛ばすこともないだろ。 VBは超初心者には歯ごたえあるがこれでもいいと思う。 ゲーム作りたいってんならVBかhspじゃねーかな。
39 :
おれのばあい :2000/11/15(水) 14:58
N88BASIC -> QC -> TC -> MSC -> TCW -> ASM(色々) -> VC スクリプト系は、HTML@`JavaScript@`perl@`makefile..etc
40 :
37 :2000/11/15(水) 16:54
そういえば、VBって言うのは、Visual Basicの略。
入門書は本屋のPC書籍のコーナーに行けばどう言うわけかいっぱいある。
簡単そうな本を適当に選んでもそう間違いはないと思う。
>>15 Borland C++ Compiler 5.5(バージョンアップしたらしいがよく知らん。)
インプライズのサイト行ってダウンロード又は雑誌を購入。
英語でも良ければ、
英語圏のサイトのソフト集めているところで探せば
幾つか見つかるのではないだろうか。
41 :
結城 :2000/11/15(水) 17:25
これは、詳しい説明が要るかな。 >22 いろんな人のフォローはそれぞれに的確だよ。 ようは、38の言う「簡単な言語なんてない」、ってこと。一長一短。 どれか1個押さえておくと、他の言語もなんとなくわかるので、自分に 合いそうなのから挑戦してけばいいと思う。 俺の薦めたCは、「基本(入門書のレベル)だけなら」カンタンな言語。 複雑なのを作ろうとすれば、一気に面倒になる。 基本だけCで学んで、それからJAVAなりVBなりに行くのがオススメ だと思ってたんだけど、他の人のオススメ方法でもOK。 初心者だと言語の特徴もまだ知らないだろうし、大ざっぱに説明してみる。 間違ってたら突っ込み頼む>ALL
42 :
結城 :2000/11/15(水) 17:26
■Cの場合 ・「ハロー、これがプログラムです」とかの表示(DOS窓で) ・適正体重の計算。 (「適正=(身長-110)×0.9」の計算) ・入力した数値に応じて表示を変える。 ・そーゆー基本(+-×÷)を組み合わせた複雑な計算。 ・それに追加した条件分岐や、文字表示。 とかのレベルまでなら簡単。いわゆる「入門書」のレベル。 それ以上になると、膨大なデータの管理がめっちゃ面倒になってくるし、 C以外の予備知識も必要になって、大変。 ・長所:覚える量が少ない。 構造がカンタン。(最初は) 実行速度が速い。(本格的なソフトは、主にCで作られる) ・短所:複雑なものを作ろうとしたら、管理がめちゃ大変。 :CだけではWindowsソフトは作れない。DOS窓以外で 動作させるには、他の知識も必要。(Win32、DirectXなど) つまり、大変。
43 :
結城 :2000/11/15(水) 17:27
■Java。 昔ほど凄いものではなくなったが、そこそこ使える 長所:映像、音楽、ムービーを使うなら一番お手軽。 長い関数名や一見メンドウっぽいプログラム構造にさえ耐えられれば、 わかりやすく初心者向き。 HPに乗せられる。 けっこういろんなことが、手軽に出来る。 短所:遅い。死ぬほど遅い。 クラスが面倒に感じる。(関数名がやたら長い) 用途は主にHPとか家電。本格的なアプリは、実行速度の問題でムリ。
44 :
結城 :2000/11/15(水) 17:27
■HTML ホームページ作成用。(これってプログラム言語だっけ? 別物なイメージ) 似た部分があるので、マスターしておくとプログラムが理解しやすい。 長所:めちゃ簡単。(簡単なものから作っていくなら特に) HP作成という、結構使えるスキルが手に入る。 成果が簡単にわかる。ネットを見ればわかるように、色々なデザインが可能。 マスターしとくと、プログラムが理解しやすくなる。 短所:計算とか、自分で考えた機能の実行とか、プログラム本来の機能はないに等しい。 ってゆーか、たぶんHTMLはプログラムじゃない。
45 :
結城 :2000/11/15(水) 17:28
■VB (Visual Basic) すまん。実際には触ったことがない。風評で書くと、 長所:めちゃ簡単。とっつきやすい。 Windows環境が簡単に作れる。(Cだとめちゃ大変) 短所:遅い。 限界があるので、入門には良くても、いつか脱出しなくてはならない環境。 ■VC++ (VisualC++) たぶん最初からこれに手を出すのはやめた方がいい。混乱する。 けど、ある程度慣れてからなら、悪くない。 本格的なWindowsソフトを作れる環境。(だよね?) 以上。長くてスマソ。
>>22 HSPはホント簡単。
Cとかよりも簡単。
ゲーム作るのには最適。動作も遅くはないし。
47 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 23:02
48 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 23:13
>15 DOSプロンプトで cd C:\jdk1.3\demo\applets\Animator\example1.html c:\jdk1.3\bin\appletviewer example4.html で動かない? 他のサンプルは動いたのかな? example4.html だけが動かないん? ちなみにブラウザでそのファイルを開いても、 動かないよん(多分ブラウザのジャヴァ仮想マシンが JAVA2に対応してないから)
49 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 23:14
>15 DOSプロンプトで cd C:\jdk1.3\demo\applets\Animator\example1.html c:\jdk1.3\bin\appletviewer example4.html で動かない? 他のサンプルは動いたのかな? example4.html だけが動かないん? ちなみにブラウザでそのファイルを開いても、 動かないよん(多分ブラウザのジャヴァ仮想マシンが 古いから?対応してないから)
50 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 23:17
間違えちゃった cd c:\jdk1.3\demo\applets\Animator\ c:\jdk1.3\bin\appletviewer example4.html ね
51 :
超ウルトラ初心者22です :2000/11/15(水) 23:41
おぉ!! たった一昼夜でこんなに、
マジレスアドバイスありがとうございます。
感謝感謝です。
そうですか、やはり誰もがこれから勉強する!という
定番言語はないんですね。
こんなに親切に書いてくださったのだから、
まずは結城さんの書いて下さった説明をもとに、
皆さんが進めてくださったものに全部触れて行きたいと
思います。(これはいけないやりかたかな?)
もちろんちょっとづつかじるだけですけど。
実はオセロゲームを見つけて遊んでいるうちに、
どういう仕組み(プログラム)で動いてるんだろうと
好奇心の虫がムズムズしだしてきてしまいました。
http://www.bergersjo.com/Erik/othello.html なんか、時計を分解するガキと同じノリで恥かしいのですが、
思い切って尋ねてホントよかったです。
アリガトウゴザイマシタ。
52 :
au :2000/11/15(水) 23:54
53 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 23:59
おーさんきゅ! 引っかからなかったのはスペル間違いかも(恥)
54 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 00:08
>51 どういう風に動いてるのか覗いてみたくなるってのは、 結構モチベーションとしてはあるよね 趣味でやるなら、 いろいろ触って自分が惚れたのを使うのがベターでわ?
55 :
母を訪ねて名無しさん千里 :2000/11/16(木) 00:55
というかHSPってなんですか
56> フリーソフトのスクリプト言語だよ。 HotSoupProcessorで検索すれ。 プログラムのことが何もわかんない人でも、これなら "とりあえず"絵を表示したり音を鳴らしたりできるでしょ。 これがわかんないなら、プログラミングはあきらめたほうが いいかもしれない。
58 :
57 :2000/11/16(木) 01:07
>55 だね。ごめん
59 :
母を訪ねて名無しさん千里 :2000/11/16(木) 01:27
なんだよー割と好きだったのにー
>>5 ちっちゃいまま入れちゃえば平気
60 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 01:37
中古でVC買おうと思うんすけど登録できなくても 使えますよね?
61 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 02:04
VB5とVC5はWINCOWS98でも使えますよね?
62 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 02:30
VC++でMFC Appwizard使うのは邪道ですか?
63 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 03:39
ドロップしたファイルから、 ::ExtractIconでアイコンを取得したいのですが、 ショートカットだと、うまくいきません。 どうやるの? C++BUILDER版だと初歩的過ぎて誰も答えてくれなかった・・・。 お願いしマース。
64 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 03:59
C言語でゲームの作り方解説しているところ知りませんか?
>>61 使えるけど、OS巻き込んでcrashされると鬱なのでお勧めできない。
>>62 別に。使いたければ使え。
66 :
63 :2000/11/16(木) 06:08
ヘルプ眺めてたらわかったからもういいです。どうも。 ExtractAssociatedIconを使えばいいのですね。 こんなこともすぐわからないようじゃ。駄目駄目だね。 もっと精進しよっと。
67 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 07:10
入門書レベルは分かるんだけど 具体的にwindowsのソフトの作り方がわからないです。 フリーのCコンパイラじゃだめですか?
68 :
>67 :2000/11/16(木) 07:24
Win2000やMeになったら9xで動いたアプリが動作しないって話聞くんですが そういうものは結構頻繁に起きてるもんなんでしょーか? 原因なども教えてもらえるとありがたいです。
70 :
>69 :2000/11/16(木) 08:25
頻繁に起きます。 理由は、便利なソフトほどシステム深くを弄る為互換性に阻まれるという事ですね また、MSがターゲットにしたソフトが出来るだけ動かないか遅く動くような仕掛 があって、その仕掛けのせいで巻き添えを食う場合もあります。
71 :
名無しさん :2000/11/16(木) 10:05
72 :
>68 :2000/11/16(木) 10:07
2ちゃんねらーじゃなくても、 最近はBCC55からスタート。
73 :
>69 :2000/11/16(木) 10:16
板が違うのではないか?
74 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 10:24
>>69 バージョンアップをして儲ける為です。
それか互換を取れるように作ろうと思えば、出来なくもないのに
それをやらない怠惰なソフトハウスって事です。
75 :
67 :2000/11/16(木) 10:26
サンキューです。 BCC55の関数リファレンスみたいなのはないでしょうか? stdio.hで使えるような物しか分からずおてあげです。 また、フリーソフトなどを作る気があったら C++Builder買った方がいいんでしょうか? 教えて君でスマソ。
76 :
>75 :2000/11/16(木) 10:35
C/C++言語辞典買え。 APIバイブル買え。 つかその前にstdio.hだけと言う状況を改善しろ。
>stdio.hだけと言う状況を改善しろ。 warata!... but me too...
78 :
>67 :2000/11/16(木) 11:54
ほんの少しでも買うつもりがあるなら、トライアル版で試せばよかろう ”トライアル版てどこにあるの?”という質問なら、本屋に行って プログラム系の雑誌を探せ。 ところで、そのまえに68のソースコードを走らせて勉強してみたのか?
79 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 12:23
Cのことで質問です。 m1 m2 m3 m4 m5 m6 ..... とスペースで区切りを付けられた数のデータがあるんですけど、 例えば6番目のデータ m6 だけを取り出したいときなど、i 番目の データを取り出すにはどういう風に書けばいいのでしょうか? ご教授お願いします。
80 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 12:39
81 :
>79 :2000/11/16(木) 12:40
int i; int dt; int n=6; for(i=1;i<n;i++) fscanf(stdin@`"%d"@`&dt); fscanf(stdin@`"%d"@`&dt);
82 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 12:42
83 :
79 :2000/11/16(木) 12:46
>>80 -82さん
さっそくの返答ありがとうございます。
本で調べてやってみます。
84 :
79 :2000/11/16(木) 12:52
すません、実はC++で書いてるんですが、C++ならもっと簡単に 出来ますか? C++のリファレンスとか読んでても、使えそうなのがないような 気がしまして、Cとして質問したんですけど。
85 :
マジレスさん :2000/11/16(木) 14:24
こんなのじゃダメ? 82番さんと同じくstrtok使うやつ もっといい方法あると思うけどおもいつかない。 CStringのメンバにも使えそうな関数無いしね。 #include<iostream.h> #include<string.h> #include<stdlib.h> int GetToken( char* msg@` int offs ) { int cnt = 0; int ans = -1; char* ret = " \n"; // 区切り文字 char* tok = NULL; // strtokで元データが変更されるのを防ぐ為 int length = strlen( msg ) + 1; char* buff = (char*)malloc( length ); if( buff ) { strncpy( buff@` msg@` length ); ans = atoi( strtok( buff@` ret ) ); while( offs > cnt++ ) { tok = strtok( NULL@` ret ); ans = (!tok ? -1 : atoi(tok)); // tokがNULLなら-1 }; free( buff ); } return( ans ); } void main() { char* msg="10 100 1000 10000"; cout << GetToken(msg@` 0) << endl; cout << GetToken(msg@` 1) << endl; cout << GetToken(msg@` 2) << endl; cout << GetToken(msg@` 3) << endl; cout << GetToken(msg@` 4) << endl; // 範囲外 -1 }
86 :
82 :2000/11/16(木) 14:48
>>85 >CStringのメンバにも使えそうな関数無いしね。
こんな感じ?
前に作ったものをちょっと手直ししてみたんだけど。
CString GetToken(CString& line@` const char* delims)
{
CString token;
token = line.SpanExcluding(delims);
line.Delete(0@` token.GetLength());
line.Delete(0@` 1);
return token;
}
87 :
82 :2000/11/16(木) 14:54
>>86 > line.Delete(0@` token.GetLength());
> line.Delete(0@` 1);
何だろう、これ?
line.Delete(0@` token.GetLength() + 1);
じゃ、何かまずいのかな?
自分でやったことながら、何でこうしたのかよくわからん。
88 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 15:53
>>85 さん
出来ました!めっちゃ感激です。ありがとうございます。
感謝感激。
2chやっててこれほど感謝したのは初めてです。
>>82 さん
そちらも試してみます。ありがとうございます!
89 :
85 :2000/11/16(木) 16:32
>87 試しましたが、元データが変更される点を除いて同様の動作をしました。 SpanExcludingって使ったことなかったので・・・私の勉強不足でした。 ありがとうございます。m(__)m >88 少しでもお役に立てて良かったです。
90 :
82 :2000/11/16(木) 17:32
std::string版もあるでよ。 #include <string> #include <algorithm> using namespace std; string GetToken(string& line@` const char* delims) { string ret; string::size_type index = line.find_first_of(delims); if(index == string::npos){ ret = line; line = ""; }else{ ret = line.substr(0@` index); line = line.substr(index + 1); } return ret; } string GetToken(string& line@` char delim) { string ret; string::size_type index = line.find(delim); if(index == string::npos){ ret = line; line = ""; }else{ ret = line.substr(0@` index); line = line.substr(index + 1); } return ret; }
91 :
79 :2000/11/16(木) 21:37
82さんと85さんのお陰でプログラムを作ることが出来ました。 楕円ElGamal暗号を試作してみました。 助言がなければもっとしょうもないプログラムを書くことに なったと思います。 本当にありがとうございました。ひじょーに感謝しております。
92 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 00:22
誰か
>>24 の質問に答えてやってくれ。
っていうか俺も良くわからんので知りたい。
93 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 00:41
>>24 >MFCに対してSDKでプログラミングって良く聞くんですが、
>あれってどうやってプログラミングするんですか?
>DirectX SDKみたいに何かインストールしなきゃなんないんでしょうか?
>俺が今持ってるのはVC6です。
Windowsプログラム作成に必要なツールやファイルをまとめてSDKといいます。
正確にどの範囲をSDKというのかは私も知りません。
MFCを使用してもSDKは使用しているので、本来はMFCの対の言葉として
SDKを使うのは正確ではないと思いますが、一部ではこういう用法が
定着しているようです。
VC6なら、メニューの「ファイル」→「新規作成」
→「プロジェクト」→「Win 32Application」
でプロジェクトを作成すれば、いわゆる「SDK」で
開発できます。
特に何かインストールしなくてもOKです。
書籍はアスキーの「プログラミングWindows」が、バイブルと
されています。(でも千数百ページの本なので初心者には難しい)
Webだと「猫でもわかる......」が評判がいいようです。
簡単に検索できるので、自分で探してください。
94 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 00:55
プログラムとスクリプトって意味違うんですか?
95 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 01:01
96 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 01:25
>95 ありがとうございます。&ごめんなさい
97 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 01:54
C++ではnewやdeleteも演算子なんだそうですが deleteは値としては何を返す演算子なんですか?
voidを返しますつーか、返しませんつーか…
99 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 02:05
オーバーロードのためだけに演算子に分類されているような気もする‥
C++設計時にnew()とかdelete()とかっていう選択肢は無かったのかなぁ。
101 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 02:12
たしかに構文を奇怪にしたかったとしか思えん‥
102 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 02:28
コンストラクタの構文もけっこうキモイ‥
名無しさんへ Q2を使ったエロサイトでかってに電話をつながせちゃう実行ファイル (exe)作れますか? 作れるのならばお願いできないでしょうか~ それとも情報もってればください それなりにはずみます。。。 お願いしますm(_"_)m
(exe)←これは顔文字ですか? みっひーちゃんみたいでかわいいですね(藁
むりっすかぁ
103はメルアドも書いているし嫌だ。 逝ってよし
可能だとしても嫌だ。 ネタでも嫌だ。本気ならもっと嫌だ。
108 :
結城 :2000/11/17(金) 03:41
>103 それ犯罪。
むしろ、名無しさんへと書いてる時点でまずいだろなんか色々と。
110 :
24 :2000/11/17(金) 06:19
>93 丁寧な解説ありがとう。おかげですっきりしました。 「猫でもわかるプログラミング」見てきました。下手な解説本よりずっといいですね。 92にも感謝です。
『「猫でもわかるプログラミング」ってMFCが弱くねーか』なんて書いてみる
112 :
>111 :2000/11/17(金) 12:44
「別にいいじゃねーかよ。ネットで全部やろうなんて思うなよ。」なんて書いてみる。
113 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 15:22
m(exe)m
114 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 15:24
∧ ∧ ~′ ̄ ̄( exe) UU ̄ ̄ U U
115 :
名無しさんお腹いっぱい。 :2000/11/17(金) 15:52
CPaintDC と CDC を 型変換したいのですけど、どーすれば いーのでしょうか?
117 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 18:24
質問の内容が、ちょっと良くワカンナイんだけど・・・こういう事? CDC dc; CPaintDC cpdc(this); cpdc.CreateCompatibleDC( &dc ); /*互換性のあるメモリデバイスコンテキスト作成*/
118 :
NTTGM :2000/11/17(金) 19:24
119 :
名無しさん@七しさん :2000/11/17(金) 21:44
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′ ̄ ̄( ゚∀゚)< UU ̄ ̄ U U | | \_____________
120 :
名無しさん :2000/11/17(金) 21:45
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′ ̄ ̄(  ̄Д ̄)< UU ̄ ̄ U U | \_____________
121 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 21:47
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′ ̄ ̄(  ̄ー ̄)< UU ̄ ̄ U U | \_____________
122 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 21:48
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′ ̄ ̄( ▼Д▼)< UU ̄ ̄ U U | \_____________
123 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 21:50
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′ ̄ 〇Д〇)< UU ̄ ̄ \_____________
124 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 21:52
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′ ̄ ̄( 0□0)< UU ̄ ̄ U U | \_____________
125 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 21:54
∧ ∧ ~′ ̄ ̄( *.*) UU ̄ ̄ U U
126 :
名無しさん@お腹いっぱい。 :2000/11/17(金) 21:55
∧ ∧ ~′ ̄ ̄( ДoД) UU ̄ ̄ U U
127 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 00:01
クライアントのPCのブラウザの中で、サーバーにある ExcelとかWordのファイルを動かしたいんだけど、 どうすればいいの? サーバにある良く使うファイルはHTMLでリンク集をつくって、 ブラウザで使えれば便利だと思うので
>>127 ExcelやWordのファイルを動かす?
IEの中に埋め込み表示したいという事を言ってるのかもしれんが、いずれ
にせよクライアント側にExcel@` Wordがインストールされてなきゃ開き
ようがないんだが。
クライアント側にちゃんとインストールされてるなら、URLクリックすりゃ
いいだけの話。
板違いだろゴルァ!
130 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 02:03
Java Beansって何ですか?
131 :
名無しのエリー :2000/11/18(土) 02:10
BCBのパッケージみたいなもん
BCBって、ドラムがボーカルのテクノバンドだっけ?
134 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 03:25
それはこかこーらぼとらーず!!
135 :
* :2000/11/18(土) 06:43
ランタイムってなんですか? DLLのことですか?
136 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 06:47
「runtime library」。直訳すると「実行時(に必要になる)ライブラリ」。 まぁDLLの事と言ってもあながち間違いでもないけど。
137 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 07:13
パ…パスカルとターボパスカルは…どう違うんでしょうか… DELPHIの参考として本を買う場合、ターボに関するほうを買うべき でしょうか?
138 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 10:31
switch文の範囲内で int i=1; のように宣言と初期化を同時にしようとすると コンパイルできませんが何か理由があるんでしょうか
139 :
138 :2000/11/18(土) 10:37
ヘルプに理由書いてありましたm(__)m
140 :
>137 :2000/11/18(土) 13:48
141 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 14:58
VBでクラスを使ったら、標準モジュールと比べて実効速度が1/5位に落ちるって知り合いが行ってるんですけど本当ですか?
142 :
>138 :2000/11/18(土) 16:38
ブロックの先頭でしか宣言できないから。caseをブロックにすれば出来る。 switch(xxx){ case yyy:{ int i=1; ... } }
>>141 そんなのは、自分で実験してみればいいじゃん。
144 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 21:06
>>141 作るクラスに依るよ。
速度重視の組込みクラスはC/C++で記述されているね。
表形式出力なんか、VBで組むより、AccessのVBA組込み
クラスを使ったほうが100倍くらい速い!
145 :
名無しさん@お腹いっぱい。 :2000/11/19(日) 01:43
enum ってどうゆう時に使うんですか? 使う利点は、何ですか? 今まで一回も使ったことないダメプログラマでした。
>145 配列のキーが数字じゃなくて文字列なほうが いいときって、結構ない?
配列のインデックスが数字じゃなくてシンボルの方が いいときなら、結構ある。
無理するなよ。
149 :
名無しさん@お腹いっぱい。 :2000/11/19(日) 02:55
>145 クラス内でconst変数を宣言したいとき。
150 :
名無しさん@お腹いっぱい。 :2000/11/19(日) 18:26
テキストボックス1に、テキストボックス2で入力(ボタンを押して)した文章を次々改行して表示 させるためにはどうすればよいですか? Text1.Text = vbCrLf & Text2.Text とすると、最初に入力した、文字は下の方に表示されてしまいます。 そうじゃなく、新しく入力した文字は、どんどん下の方に表示され、最初に 入力した文字は、上の方に表示させたいのですが、誰か教えて下さい。
151 :
150です :2000/11/19(日) 18:27
すいません、VB6.0です。
152 :
名無しさんi486 :2000/11/19(日) 18:31
Text1.Text = Text2.Text & vbCrLf & Text1.Text これでどうですか?
153 :
名無しさんi486 :2000/11/19(日) 18:33
Text1.Text = Text1.Text & vbCrLf & Text2.Text ごめん、こうですか?
154 :
150です :2000/11/19(日) 21:08
ありがとうございました。
155 :
名無しさん@お腹いっぱい。 :2000/11/19(日) 23:29
可変個の引数を取る関数とかに出てくる スタックってどうゆう意味ですか?。
言語は何>155
157 :
名無しさん@お腹いっぱい。 :2000/11/19(日) 23:47
>156 Cです。
処理系の実装方法にもよりますが、関数内で使用する自動変数や 関数からの戻り番地が書きこまれる、FILOバッファのことです。 アセンブラのお勉強をすればすぐに理解できると思います。
>158 教えて下さってどうもありがとうございました。
160 :
名無しさん@お腹いっぱい :2000/11/21(火) 01:39
VC++のライブラリとBCBのライブラリを比べた場合に、どちらが優れているのでしょうか。
161 :
名無しさん@お腹いっぱい。 :2000/11/21(火) 01:57
162 :
名無しさん@お腹いっぱい。 :2000/11/21(火) 04:31
K&Rのアンサーブックの値段はいくらですか?
163 :
名無しさん@お腹いっぱい。 :2000/11/21(火) 09:02
VC++を今から覚えたいです。 AppWizardを使うのと「猫でもわかる・・・」にあるような やり方とどちらがいいでしょうか? 後者の方が経験的に馴染みやすそうです。
164 :
MY :2000/11/21(火) 15:36
MainFrm.cpp が 大きくなったので、2つに分けました。 新たにメンバ関数を追加するときは、MainFrm2.cpp に追加したいのに MainFrm.cpp に 追加します。ワークスペースの関連付けの 変更の仕方を知っている方教えてください。
165 :
無名選手@投げたらアカん! :2000/11/21(火) 17:01
わからないのでここに書きました 違ってたらごめんなさい バイナリを使って改造したいのですが16進法の漢字と文字がわかりません どうすればいいのでしょうか?
バイナリを使って改造、だけじゃ何がなんだかわからんのですが。 何をするプログラムでどのような処理をさせたいのか具体的に書いてください。 当方テレパスではりませんゆえ。
165ではないが‥ Q. バイナリエディタを使って文字列を変更する改造をしたいのですが 文字コードを知らないためどんな値を入力すればいいのかわかりません 文字コードを16進数で教えてくれるようなツールはありませんか? A. Windowsについている文字コード表というソフトを使って 一文字づつ文字コードを調べるか、文字列を直接入力できる バイナリエディタを使いましょう。 当方、一般向けパッケージソフトのユーザーサポート経験アリですので このくらいなら理解できます。
テレパシストやん…
どっかの板の「EXCELで1-2=0」スレッドを思い出したよ。 わかっちゃうひとって居るんだねぇ(素直に感心)。
170 :
無名選手@投げたらアカん! :2000/11/22(水) 02:20
167さんどうもありがとうございます これで改造が少しはかどると思います
>165 いやいや、どういたしまして >168 いちど一般向けのユーザーサポート担当やってみそ。 165さんのは、まだまだぜんぜんわかりやすいほうだよ。
>>166 いや、一応俺もこれぐらいならテレパスできるぞ。
ユーザーサポートじゃないんで放置したけど。(藁
ただ、
>>169 のはさっぱりだったけどな。
(確か、あれの2あたりで答えたと思った)
うん、俺はこうかな?という予測はできたが確信なくて答えは書けなかったよ。 167のQが最低限の質問内容だと考えるとな。 あと説明省き過ぎで少しむかついてた。いかんいかん
174 :
山本工兵 :2000/11/22(水) 06:35
安くVC++5を買ってしまいました。 しかしプログラミング知識ありません、。 いろいろ読むとC++の前にCを学べとよくありますがいやです。 いきなりVC++5を使うのに良い書籍がありましたら教えてくださいませ。
175 :
名無しさん@お腹いっぱい。 :2000/11/22(水) 08:25
>いろいろ読むとC++の前にCを学べとよくありますがいやです。 いやですって、あーた…
>>173 >あと説明省き過ぎで少しむかついてた。
ああ、それは俺にも確かにある。
やっぱり、最低
>>167 ぐらいは書いてくれないと。
ホントの初心者が167くらい書くのはかなりたいへんなんだよ やりたいことがわかっててもうまく説明できない。 バイナリエディタ、文字列、文字コード このあたりの単語を知らないんだから‥ 初心者はリクツよりもまず単語を勉強するべきだな。 そうすれば上手な質問だってできるというものだ。
わかってる…わかってんだ難しいのは… だけど頑張ってなんとか説明してくれてる初心者に比べると 努力のかけらも見えないのは俺としては…頃したくなることも蟻
179 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 01:57
質問です(;´`) 独学でC++をやっていますが、classとstructの違いが良くわかりません。 structでも同じことが出来ると思うのですが… classでなければいけないという時はどんな時ですか?
180 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 02:42
VisualC++6で、WINAPIのみを使って画面にBitMapを 表示させたいのですが、分からなくて困っています。 ウィンドウの作成はできていますので、あとは 画像をリソースにして、WM_PAINTのケース のなかでLoadImageで読み込めばいいと思うのですが、 そのあたりが良く分かりません。 具体的には、LoadImage(HINSTANCE@`LPCSTR);の LPCSTRという部分の意味が良く分からないので 何を書けばいいのか分からないということが一点目。 二点目は、挿入→リソース→BitMap→インポートで リソースファイルと、resourse.hが作られたので、 そのヘッダファイルをインクルードして コンパイルしたところ、ファイルをインクルードできません というエラーが出てしまう。 ということです。 図々しいと思いますが、 今、真っ白なウィンドウを表示するだけの ソースがあったとして、リソースを挿入するところから、 WM_PAINTのなかに何をどう書いたらいいのかも含めて、 全手順をまるまる教えていただければ一番うれしいです。 ハンドル名とかは適当で結構です。よろしくお願いします。
181 :
172 :2000/11/23(木) 04:10
>>179 お答えします。
両者は全く等価であり、差違は一切ありません。
ただ、
{
int a;
void func();
};
と言うクラスを書いた場合、structならば
{
public:
int a;
void func();
};
と解釈されるが、classだと
{
private:
int a;
void func();
};
と解釈される点のみ異なります。
>>178 172は、俺です。間違えないように。
ごめんよ。 正確には typedef const CHAR FAR * LPCSTR; だったね。
…スマソ。逝く。
185 :
180 :2000/11/23(木) 14:59
180です。ありがとうございました。 教えていただいたHPは大変参考になりました。 LoadBitmapのLPSCRの部分には、 リソースを作ったときに自動的に作られたresouce.h に書かれたIDを書けばいいんですよね。 で、#include "resource.h"と追加して コンパイルしたんですが、やはり、 「ファイルをインクルードできません」 というエラーが出てしまいます。 リソーススクリプトもヘッダファイルも プロジェクトに追加してあります。 そもそも、ヘッダファイルというものが良く分からないんです。 何か、書きかえる必要とかがあるのでしょうか。 #include "resource.h" を消してビルドすると、 LoadBitmapの部分で「定義されていない識別子です」 というエラーが一つでるだけなので、他は問題無いと思うんですが。 もう一度お願いします。長文で流れちゃってすいません。
187 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 19:19
unsigned char pat[32][32][3]; このような配列に格納された縦横32×32ドット分のRGB値がるのですが これを画面に表示するにはどうすればよいのでしょうか? setpixelを使う方法はやってみたのですが、この方法だと 配列が(絵のサイズが)じゅうぶん小さいうちは何とかなるのですが 大きくなると時間がとてもかかってしまいます。 OSはwin98です。
189 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 23:08
DELPHI入門本程度理解できるんですが今の状態から VC++やったら理解できますかね?
大丈夫。子供の科学って雑誌にもVCの記事は書かれてる くらいだから。
191 :
179 :2000/11/24(金) 00:02
>181 ありがとうございます。 そのくらいしか違いがないのならclassキーワードって必要ないような気も…
192 :
180 :2000/11/24(金) 00:31
姐さんさん、ありがとうございます。 大変助かりました。おかげさまで解決しました。 僕も、きっと場所が見つからないんだろうなと思って フォルダをいろいろ移してみたりはしていたんです。 が、なんとも恥ずかしいんですが、ワークスペースウィンドウ のなかで移動していただけで、実際のファイルの場所を 変えていなかったんです。 プロジェクトとは全く関係無い場所に ソースファイルだけをまとめたフォルダを作ってあって、 その中にソースを入れてあったのが原因でした。 >ところで、どんな入門書を読んだのかすごく興味があるんだけど 参考にしているのは、 ソフトバンク「新VisualC++6.0入門」林晴比古 のビギナー編とシニア編。 同じく「DirectXグラフィックプログラミング」山崎由喜憲 です。 しかし、こちらの質問はプラスとマイナス、 どちらの意味と受け止めればいいのでしょう。。。。 でも、何にしろありがとうございました。
>>191 classを使うと文法的にクラスの記述が支援される。
コンストラクタ・デストラクタが自動的に呼ばれるし。
書きやすさというのは重要かと。その点C++は・・・
BCCでもWindowsのアプリは作れますか? APIとかいうの使うんですか?
195 :
>194 :2000/11/24(金) 13:54
作れます。
196 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 15:39
つーかDOSのバッチファイルの質問はありですか?
レス無し氏のう。。。。。
198 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 16:03
199 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 16:11
そこの廃れ掲示板にも一応質問書いといた。 でもその直前の質問も放置プレイ状態なので 多分しばらくレスつかないだろな。。。。。 っと言う事でここでも質問して見ます。 「カレントドライブを、実行するバッチがある場所にするいい方法は 無いでしょうか?」 どうでしょう? お願いします。
200 :
>194 :2000/11/24(金) 17:03
というかBCC55の事なら Windowsアプリしか作れない
201 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 17:07
意味不明だが、、、 >バッチファイルで、ドライブの移動だとすれば、 d: >バッチファイルで、ディレクトリィの移動だとすれば、 cd \work\prj01\src win側でやるなら、右クリックで、プロパティをいじればー
202 :
>199 :2000/11/24(金) 17:07
バッチだけでは無理かもしれませんね。 何か実行ファイル(exe)を作るしかないかも。というか作れ! Cならargv[0]から引張ってきて セットカレントドライブするだけだろう
203 :
199です :2000/11/24(金) 17:26
いやっ実は複数台のPCで同じDOSバッチを 実行させる必要があったんですよ。 そのバッチ内のファイルコピーで、 ・コピー元が変動する(ワークグループが変わる為) ・コピー先は固定 という部分があって、今はVBScriptでレジストリーから ワークグループを取得してDOSバッチにパラメータ渡ししてる。 どーせならDOSバッチだけでやれないものかと、 ダメかなやっぱし。。。。。
204 :
201 :2000/11/24(金) 17:26
そーゆー意味?? でも意味不明だなー。 バッチファイルが実行できるとゆーことは、パスが通っているか もしくは、そのバッチファイルがカレントにあるってことでしょ。 後者の場合は、cdする意味がない。。。 前者の場合は、パスを通して、バッチファイルを置いた人が1番 解っているんだから、、、 c: cd \bat なんてバッチファイルを作ればいいように思うのだけど、、ダメ?
>>199 >「カレントドライブを、実行するバッチがある場所にするいい方法は無いでしょうか?」
もしかして
c:\bin\hoge.batを
c:\work\で実行させたいって事?
206 :
201 :2000/11/24(金) 17:38
>>204 は
>>202 を 見て書いたものね。
>>203 を 読んで、、、
やっぱ意味不明。。。
ネットワーク上のディレクトリにアクセスしたいって事?
取り敢えず、WIN95系なら、ワークグループ関係なしに
PC名でアクセスできると思うよ。
207 :
>199 :2000/11/24(金) 17:55
それぞれのPCで実行するなら、コピー元を取得する意味がないんじゃないの?
208 :
199です :2000/11/24(金) 18:08
すいませんホント説明が足りなくて。。。。 例えば a.txtをC:\workspaceにコピーしたい -------------------------------------------- echo %1 copy \\%1\a.txt "C:\workspace" (%1=パラメータから渡されたワークグループ名) -------------------------------------------- を、 -------------------------------------------- copy a.txt "C:\workspace" -------------------------------------------- にして a.txtがある場所にDOSバッチがあり、 そのDOSバッチのある場所をカレントドライブに 指定する方法がないかと思ってるんですけど。。。。。
209 :
199です :2000/11/24(金) 18:13
>>207 共通DOSバッチファイルを数十箇所にFTP転送してる関係で
同一記述じゃないとPC(ワークグループ)毎に変更しないと
いけないからなんです(泣
210 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 18:19
説明ヘタだな~と思うのオレだけ? まだわかんない。そのバッチファイルは誰が実行すんの?
211 :
199です :2000/11/24(金) 18:27
>>210 いやっ自分でも思います。
で、バッチ実行はPC側で固定名自動実行ッス。
212 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 18:33
>そのDOSバッチのある場所をカレントドライブに >指定する方法がないかと思ってるんですけど。。。。。 バッチを実行した時点でカレントになるハズですが。 「C:\workspace」ってゆーのは、そのPCの「C:\workspace」って 事ですか?ならば、「・コピー先は固定」と背反します。 そーでなく、実行者のPCの「C:\workspace」ならば、 「\\(実行者のPC)\C\workspace」と書かなくてはいけないでしょう
213 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 18:35
バッチって、普通に起動したらbatがあるフォルダが カレントになるもんじゃないの?
って、かぶっちゃった。
215 :
199です :2000/11/24(金) 19:03
きゃああああああああああああああああああああああ!!!!!!
今気が付きました!!!!!!!!
>>212 >バッチを実行した時点でカレントになるハズですが。
と言うので気がついたのですが、
ドライブの割当のないネットワーク名は
カレントにならないと言う事みたいですね。。。。
と言う事は数100台のPCにドライブ指定の設定をしないと
DOSバッチだけじゃ無理という事か(泣
ホントお騒がせしました。
レスして下さったみなさんありがとうございました。
216 :
199です :2000/11/24(金) 19:05
それにしても説明下手。明日氏のう。
217 :
>199 :2000/11/24(金) 19:08
>ドライブの割当のないネットワーク名は >カレントにならないと言う事みたいですね。。。。 たぶん、ちがう・・・
218 :
199です :2000/11/24(金) 19:11
えっ 違うの? 検証したらダメだったよ?
219 :
217 :2000/11/24(金) 19:16
バッチファイルの内容を↓のよーにして実験したら、 a.bat自体を (PC名)の(共有化してあるフォルダ)に移せたよ。 copy .\a.bat \\(PC名)\(共有化してあるフォルダ)\.
220 :
199です :2000/11/24(金) 19:30
ネットワーク コンピュータ | +-PCserver1(ネットワーク名) | +-temp(作業場所) tempにファイルを置いて実験したらダメでした(泣
221 :
199です :2000/11/24(金) 19:32
あっ階層が変だ! tempって\\PCserver1\temp って事です。
222 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 19:55
subst かなんかでドライブ割り当てられなかったっけ?
223 :
199です :2000/11/24(金) 20:17
あーっ東風荘でラスくらっちゃったよ(涙 で! substでいけますか?
224 :
199です :2000/11/24(金) 20:28
あ~substダメでした残念です。
225 :
>199 :2000/11/24(金) 20:28
まだできなの?>119 もう家に帰ってきちゃったよ。 (家内LANしてないからテストできない) 質問していい? “\\PCserver1\temp”は、コピー元だよね。 コピー先のネットワーク上の絶対パスは? それとその絶対パスは、共有フォルダになって、 フルアクセス可能になっている?
226 :
199です :2000/11/24(金) 20:59
>>225 家に帰ってまでありがとうございます。
で、絶対パスでフルアクセスです。
ローカルPCでのDOSバッチ実行と考えて下さい。
よってアクセス権はすべてフルです。
要するに“\\PCserver1\temp”までは遠隔から
データとDOSバッチが転送されて、
個々のPCがローカルでそれぞれそこから
DOSバッチの起動をかける(自動で)という事です。
遠隔の一箇所でDOS記述を作成・転送し
複数あるネットワーク体系で汎用的に使える
記述の仕方が知りたいのです。
227 :
199です :2000/11/24(金) 21:00
またなんか説明が悪いような。。。やっぱ明日逝こう。
228 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 21:06
error message は? > 199
229 :
199です :2000/11/24(金) 21:54
>>228 「ファイルが見つかりません。
0個のファイルがコピーされました。」
です。
230 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 21:56
もう1回、コピー元とコピー先の構成をきちんと書いてみ。
231 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 21:57
そのメッセージはね、コピー先がなくてもでたよ
232 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 22:58
DOSで動くJAVAありませんか?初学者なので重たい GUIは必要無いのですが・・・
JDK2 java1.03?
235 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 00:32
プログラミング初心者ですがC++勉強中です。 C++でWin用の簡単なツールを開発するには開発環境は どういったものがよいでしょうか?
236 :
>235 :2000/11/25(土) 00:47
お手軽に行きたいならBCBを推薦する。 強気で行くならVC++もよし‥ 本線を外れたいならCWなんてどだ?
237 :
JAVAはしらん :2000/11/25(土) 00:55
jdk1.03\bin >javac hello.java hello.class が出来る >java hello.class Hello JAVA world! なんて出る。(ホント?)
238 :
235 :2000/11/25(土) 01:02
>236 レスありがとうございます。 VC++は持ってるのですがDOS画面のは お手軽に作れるのですが... BCBっていうのは正式名称はなんでしょうか?
239 :
ウルトラ初心者 :2000/11/25(土) 01:09
Windows+VCで他のプロセスのメモリを読み書きするにはどの様な手段を取ったら宜しいのでしょうか。
ホントにウルトラ初心者ですか?
241 :
232 :2000/11/25(土) 01:29
DOS窓じゃなくて本当のDOSなのですが。 リアルモードで動く物。やはりプロテクトモードでなければ 駄目でしょうか? コンソール入出力などできればなお良いのですが。 やはりJINIでCONIOを制御する外部ルーチン呼ばないと 駄目ですか?
実際やってみた ×>java hello.class ○>java hello.class
243 :
ウルトラ初心者 :2000/11/25(土) 01:47
>>240 自分は結構な知識が無いと出来ないと思ってるんですが、
自称プログラミング初心者が出来てるので…出来ない自分はやっぱり
ウルトラ初心者でしょう;
244 :
236>238 :2000/11/25(土) 01:53
245 :
238 :2000/11/25(土) 02:02
>244 親切にありがとうございます。 さっそく見てきます。
246 :
238 :2000/11/25(土) 02:04
>244 ご親切にありがとうございます。
247 :
ウルトラ初心者 :2000/11/25(土) 02:55
CとC++が決定的に違うのはどこですか?
C++に出来てCに出来ないことはないから 俺にはわかんないや。
249 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 03:57
Cは /*こめんと*/ C++ は/*こめんと*/ あと、//こめんと ってこれはプログラムの内容とは関係ないか…
250 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 04:09
>247 クラスが使えるかどうかではないでしょうか
継承、参照、オーバーライド、オーバーロード、テンプレート 自在な宣言位置
>248-251さん 情報ありがとうございますです やっぱりクラスなんでしょうね♪ なんとなくsage...
253 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 05:14
ActiveX、Dll、com、OLE・・・ このへんの違いがわかりません。
dllだけ明らかに違う、それとdcomが抜けてる。
DLL OLE -> COM(OLE/DCOM/OCX/ActiveX) -> COM+
256 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 07:39
>247=252 CとC++の違いはクラスだね。 Hensuu.a Hensuu.b とかクラスは便利だよ。やってみ
>>242 変わっとらんぞ。
×>java hello.class
○>java hello
BCCでWinアプリ作るにはどうしたらいいDeathか?
259 :
>258 :2000/11/25(土) 12:04
260 :
ウルトラ初心者@239 :2000/11/25(土) 18:39
延々と調べた結果「Toolhelp32API」と言う物に辿り着いたのですが、 これで宜しいのでしょうか・・
>>259 コンソールアプリに対して、ウィンドウアプリということも
あるんじゃないのか?
厨房書き込みでスマソ
263 :
初歩君 :2000/11/25(土) 22:41
makefileの書き方が分かりません(泣 bcc55っす。
わかんないうちはmake書かずにやっとけ。 バッチでじゅうぶんだ。 それに嫌気がさしたら本気でmake書け。
>>262 winmainで始まればwinアプリじゃないの?
>>258 -tWオプション
apiリファレンスとかはmsにplatform SDKがあるからドキュメントをdlしとこうね
266 :
初心者 :2000/11/26(日) 00:51
ICMP Type4を噛まされるとどうなるんですか?
267 :
初心者 :2000/11/26(日) 00:52
ICMP Type4を噛まされるとどうなるんですか?
268 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 00:53
>263
窓を出すプログラムで、
ソースコードが"test.c"
リソースファイルが"test.rc"
ヘッダが"test.h"
から"test.exe"を作る場合
#######################"makefile.mak"############################
test.exe : test.obj test.res
ilink32 /aa C0W32.OBJ test.obj@`test.exe@`@`CW32.LIB IMPORT32.LIB@`@`test.res
test.obj : test.c test.h
bcc32 -c test.c
test.res : test.rc test.h
brcc32 test.rc
######################################################
窓を出さないプログラムの時は、リンクするオブジェクトなんかが変わるので、下でもみて研究してくれ。
http://www.inprise.co.jp/cppbuilder/freecompiler/faq/bccfaq3.html
269 :
初心者 :2000/11/26(日) 00:53
2度書きすみません
270 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 01:38
構造体でscanfを使うとき、度のように書けばいいですか?こんな感じですか? scanf("%d"@`(&a).b);
演算子の有線順序を見ろ>270
ありがとう。f(^^
273 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 01:59
優先順位云々の前にどうしてスキャンエフでは&がつくのかがわかりません
274 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 02:06
>273 変数の頭に'&'キーワードをつけると変数の値ではなくアドレスを返す。 scanf関数内部でそのアドレスに入力された値を格納しているので'&'をつけなければダメ。
275 :
270 :2000/11/26(日) 02:45
いろいろ試したんですけど、どうしても ".または.*の左側に構造体が必要" とでます。オテアゲデス。
276 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 02:51
scanf("%d"@`&a.b); じゃだめか。 構造体の"."の方が"&"より強いから、括弧は要らないはず
277 :
276 :2000/11/26(日) 02:55
できれば、どんな構造体でどんなふうに宣言してるか教えて。
278 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 02:57
こんなんですけど・・・ #include <stdio.h> struct u{ int a; }; void main(){ struct u x@`*y; x.a= 9; y = &x; printf("%d\n"@`y->a); printf("%d"@`(*y).a); scanf("%d \n"@`&y.a); printf("入力は%p"@`y->a); }
279 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 02:58
%pはきにしないでください
280 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 03:09
scanf("%d"@`&(y->a)); または scanf("%d"@`&y->a); です。 "->"の方が"&"より優先順位が高いので、括弧はあってもなくてもいいです。
281 :
名無しさん@お腹いっぱい。 :2000/11/26(日) 03:37
>280 ありがとうございました!無事コンパイルできました。 scanf("%d \n"@`&((*y).a)); も可能であるというところまで理解できました!
固羅278。おまえ確信犯やろ。ワラタぞ。
283 :
>268 :2000/11/26(日) 12:45
何とか出来ました。 ありがとうございました。
284 :
278 :2000/11/27(月) 03:09
>282 えっ?意味がわかりません。あれまじです。
285 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 03:13
三つの関数からなっているプログラムをそれぞれコンパイルしてみてうまく行きました。それでまとめてコンパイルしたいのですけど、どうすればいいですか?bcc55です。またそういうやり方についてはどこに書いてあるのでしょうか?
286 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 03:16
C++を勉強中でPerlには手をつけてないのですが大丈夫でしょうか? 一応、人並み程度にPealも勉強しといたほうがいいのでしょうか?
287 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 03:24
Pealはチンコに埋め込むと、ナオンがよがって喜びます
288 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 03:45
>285 bcc32 aaa.c bbb.c ccc.c じゃダメか? コンパイルについて知りたければ、「make」について調べてみてください。 あと、コンパイラ付属のHELPも見てね。
289 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 03:48
>288 ありがとうございます、さっそく試して見ます、と行きたいところなのですが、バイトで中断です。
290 :
とびとん :2000/11/27(月) 08:22
VBでシェアウェアを制作したのですが、 msvbvm60.dll oleaut32.dll mscomctl.ocx これらのファイルを同梱して配布しても 良いのでしょうか? 著作権など、お解りになる方、宜しくお願いします。
キミが買ったマニュアルに書いてあるはずだが‥
292 :
とびとん :2000/11/27(月) 10:28
マニュアル実家だ・・・
293 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 14:33
STLの本みてSTL使って組もうと思い、 最も初期段階である #include <vector> int main() { vector<int> data; return 0; } がコンパイルが通らない、というか 型宣言が定義されてないと出るのです。 無論、『vector』ファイル自体の存在は確認しました。 当方VC++6.0仕様しているのですが どこかオプションのチェックでも必要なのでしょうか? MSDN見ましても使用サンプル等しか見つからず謎だらけでして、 どなたかご存知でしたらご教授宜しく願います。
294 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 14:37
>>293 std::vector<int> data;
と書きたくなければ
using namespace std;
の1行を入れよ。
ついでにC++のnamespaceの勉強をせよ。
295 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 14:55
>>293 有難うございます。
おかげでコンパイル出来るようになりました
>namespace
_STD_BEGINというマクロ定義が
stdに当たるんですね、YVALS.Hにて宣言してありました、
クラスの前にこんなもんが宣言してあったとは、
全く気付きませんでした。
今後はマクロも調べるよう注意します。
298 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 17:46
エラーが出ちまいます。 おかしいところ、なんか変だとおもうところwご指摘ください。 #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> struct buf{ int number; int count; struct buf *prebuf; }; struct value{ int order; int number; int memo; }; struct buf *input() struct value *change(struct buf *buf) //ここでエラー void display(struct value *value1) void main(){ display(change(input())); }
299 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 17:50
せめてどんなエラーが出るかぐらい書けよ。 セミコロンが抜けている、とかじゃねえだろうな。
300 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 17:57
ポインタは使ったことあるのですが ポインタのポインタ…は使ったことありません。 どういうところで使うと便利なものなんでしょうか?
301 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 18:04
>>300 int main(int argc@` char **argv)
302 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 18:12
>299 19行目で宣言の構文エラーとでます。
>>298 >struct buf *input()
>struct value *change(struct buf *buf) //ここでエラー
>void display(struct value *value1)
struct buf *input();
struct value *change(struct buf *buf); //ここでエラー
void display(struct value *value1);
304 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 18:20
>303さん ありがとうございました。 セミコロン抜けでした。すいません・・・宣言ではいらないとおもってました。
305 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 18:32
char *temp1[2] = { {'A'@`'B'@`'C'@`'\0'}@` {'D'@`'E'@`'F'@`'\0'} }; char *temp2[2] = { "ABC"@` "DEF" }; char temp3[2][4] = { {'A'@`'B'@`'C'@`'\0'}@` {'D'@`'E'@`'F'@`'\0'} }; この3つのうち、最初のだけがエラーになります。 {'A'@`'B'@`'C'@`'\0'} と "ABC" って全く同一だ と思っていたんですが、勘違いしてますか? ちなみに、コンパイラはcygwinのgcc
306 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 18:57
このプログラム、最初のexternをしないできちんと定義を書くとうまくいきます。externの使い方がまずいのでしょうか? #include <stdio.h> #include <stdlib.h> #include <ctype.h> extern struct buf; extern struct value; struct buf *input(); struct value *change(struct buf *buf1){ int i@`j@`k@`c;struct value *value1=NULL@`*temp1=NULL; while((value1 = (struct value *)calloc(buf1->count@`sizeof(struct value))) !=NULL) printf("メモリ確保中・・・・・・・・・・"); while((temp1 = (struct value *)calloc(buf1->count@`sizeof(struct value))) !=NULL) printf("メモリ確保中・・・・・・・・・・"); c = buf1->count;//いずれつかうカウント値の為 for(i=buf1->count;i > 0;i--){ (value1+i-1)->order = buf1->count; (value1+i-1)->number = buf1->number; buf1 = buf1->prebuf; } printf("入力完了!"); //ここからチェンジ!のアルゴリズム while( c > 0 ){ for(j = 0;j < c;j++){ for(k = j+1;k < c;k++){ if((((value1+j)->number) - ((value1+k)->number)) < 0){ *(temp1+j) = *(value1+j); *(temp1+k) = *(value1+k); *(value1+j) = *(temp1+k); *(value1+k) = *(temp1+j); c--; }//if }//for }//for } //while return value1; }//end
307 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 19:17
構造体の宣言(型の宣言)に extern は使わん。 それと、完全な構造体の宣言をかいとけ。
確かに、文字列リテラルは配列だ。 だが、配列は先頭アドレスを取り出したとき、 少数の例外を除いてポインタとなる。 逆に、特例としてchar型の配列に限り、 変数の羅列ではなく、リテラルで初期化できる。 char *temp1[2]; これは、2次元配列(配列の配列)ではない。 ポインタの配列だ。
まだ、コンパイルエラーの原因で悩むレベルなのに、 メモリの動的確保やリスト構造は無理だと思う。 externもわかってないし。 それとも課題か?
>>305 > {'A'@`'B'@`'C'@`'\0'} と "ABC" って全く同一だ
> と思っていたんですが、勘違いしてますか?
勘違いです。
文字列リテラルはアドレスを持つことはできますが、
文字定数はアドレスを持つことはできません
2次元配列ならば可能です
char temp4[][4] = {
{'A'@`'B'@`'C'@`'\0'}@`
{'D'@`'E'@`'F'@`'\0'}@`
};
311 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 19:47
>309 いえ、メモリの動的確保の基礎は理解しました。どうしてexternの使い方とかコンパイルの方法とかで悩むのかというと、いままで使わなかったからです。いっつも全部ひとつにまとめてやっていました。しかしそろそろ分割してやろうとおもいまして・・・・
312 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 19:54
C++です。 クラスはどんなときに使うと便利なんでしょうか? 関数を作るのに比べて手間が増えるように思えてしまいます。 あと、構造体、共用体もいつ使うんでしょうか? いまは配列変数を使っています。 basic出身はコードが汚いというのは私のことでしょうか?
313 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 19:58
>>311 動的確保の事を理解しようとする前に、入門用の文法書読めよ。
314 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 20:01
>309 ちなみに、 char *temp2[2] = { "ABC"@` "DEF" }; と同じ意味となる(const除外)のは、 static char noname1[] = {'A'@`'B'@`'C'@`'\0'}; static char noname2[] = {'D'@`'E'@`'F'@`'\0'}; char *temp1[2] = { noname1@` noname2 }; int等のポインタの配列を作る場合、この形に直すしかない。 >312 FILEとか使った事はないのか? その辺からカプセル化を考えるとよいと思うが。 >あと、構造体、共用体もいつ使うんでしょうか? って、構造体がわからなきゃ、クラスなんか意味不明かも。
動的確保を理解している奴が、 >while((value1 = (struct value *)calloc(buf1->count@`sizeof(struct value))) !=NULL) > printf("メモリ確保中・・・・・・・・・・"); こんな糞な事するかよ。 解放してねーし。
<310 も、けっこうアヤシイ感じがするなぁ。 それとも「教育のウソ」ってやつかな?
> 動的確保を理解している奴が、 > >while((value1 = (struct value *)calloc(buf1->count@`sizeof(struct value))) !=NULL) > > printf("メモリ確保中・・・・・・・・・・"); > こんな糞な事するかよ。 確かにこいつはまずい (メモリ確保できないと無限ループになる可能性がある) > 解放してねーし。 これは?だな この関数内で解放しなくともmainが終了する前に解放すればいいんだよね? ノードの解放用の関数かなんかで (また、機能を推測する限りそうすべきだと思う)
318 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 20:31
>315、317 はい、どうやら理解できてないようです。一応全部のファイルをコンパイルして実行ファイルできたのですが、しょっぱなでメモリエラーくらいました。いったいどうすればいいのでしょう・・・?
入門書を読みなおせばよい。
320 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 20:50
>319 そんな酷な・・・・ プログラミング言語C 第二版 ANSI規格準拠 B.W.カーニハン/D.M.リッチー著 石田晴久 訳 しかありません。。。
321 :
初歩君 :2000/11/27(月) 20:51
>>305 僕も一応初心者なんで、間違ってたらスマソ。
そんで、「独習C」という本の中に次のような文があります。
>C言語ではプログラムの中で二重引用符で囲んだ文字列定数を扱うことが出来ます。
>コンパイラはこのような文字列を見つけると、プログラムの文字列テーブルにそれを格納して、
>文字列に対するポインタを生成します。
ということは、char型ポインタの宣言の時に、
二重引用符で囲んだ文字列定数が右辺にない限り、
文字列テーブル及び文字列に対するポインタは生成されないのではないでしょうか。
だから、temp1の宣言は、char型のポインタを2個作っているだけで、
文字列テーブルを作っていないんだと思います。
value は戻り値だが、tempはリークするよ。
323 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 21:00
>>305 とりあえず、
char* の配列だと思っているところに、文字定数があるから、
コンパイラが困ってるんだよ。
>>320 文法もろくに理解せず、コンパイルエラーも自力で解決できないんだから、
「まだそんなことするな」
> value は戻り値だが、tempはリークするよ。 すいません、おっしゃる通りです。 temp1は解放しとかないとまずいですね。
326 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 21:14
そんな320の為へ、参考ソース (書き殴りだから、細かいミスには目をつぶれ) ======================================== hoge.h: ---------------------------------------- struct hoge{ int a; int b; }; extern struct hoge h ======================================== a.c: ---------------------------------------- #include "hoge.h" struct hoge h; int main(void) { h.a = 0; h.b = 1; hogesub(); } ======================================== b.c : ---------------------------------------- #include "hoge.h" void hogesub(void) { printf("a = %d b = %d\n"@`h.a@`h.b); }
hoge.hの最後に ; void hogesub(void); と、 mainの最後にreturn(0);を追加。
328 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 21:35
こうやってincludeしたんですけど、だめですか? //head.h #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> struct buf{ int number; int count; struct buf *prebuf; }; struct value{ int order; int number; int memo; };
何が理解出来ていない(いなかった)かだけでも挙げといてやろうか。 ・typedef名 構造体のタグ名と区別がついていなかった。 ・構造体のポインタを示す文法 直前に struct buf *prev; と書いていながら、 struct *buf func(); などとしていた。自分で見直す気は無いのか? ・関数の宣言の文法(直後のセミコロン) 論外。少しは自分で考えるか調べるかしろ。 ・宣言と定義の区別 ・記憶クラス指定の文法 extern struct buf; ってなんだ? 構造体の宣言に記憶クラスつけてどうする? 変数の宣言につけろ。 ・while文 while (式) 文 は毎回式を評価し、その結果が真である間繰り返し実行する。 以上、どう考えても、基本を理解しているとは思えない。 やろうとしている事と、理解している事に差がありすぎる。 理解していないから、文法エラーが解決できない。
330 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 22:17
NTの場合、DOS窓の起動時のディレクトリの設定をかえるにはどうすればいいでしょうか?プログラムが暴走したときに再び起動していちいち作業ディレクトリまで移動するのは大変です。
331 :
>330 :2000/11/27(月) 22:29
板が違う。
332 :
名無しさん@お腹いっぱい。 :2000/11/27(月) 23:32
なにも入力せずリターンキーを押したら終了し、整数以外をいれたら注意して入力やり直しをするようにしたいのですけど、どうすればいいでしょうか?atoi使わないでできますか?
どうも耳年寄りな童貞が多いな。
335 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 14:59
本に書いてある関数の引数が意味不明です。これらはどうやって理解すればいいのでしょう? たとえばprintfは実際に使うときはprintf("****%d"@`a)のようなのに、本にはint printf(char *format@`arg1@`arg2...)と書いてあります。char *format??ハァ?まぁprintfはいいとしても、上のようなstrtol関数なんかもうお手上げです。いったいどこでこういう関数の使い方覚えるんですか?
336 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 15:14
#include <iostream> #include <fstream> using namespace std; void main() { cout.seekp( 3@` ios::beg ) << "hello\n"; } こうしてもディスプレイからの出力はし-くされません ファイルでなくディスプレイからの出力で 最初や途中から上書きするにはどうすればいいのですか? 文字べ-すでてとりすやいんべ-だを作りたいのですが それに必要です、できればC++で教えてもらいたいのですが Cでもいいです、誰かたすけてください
>>335 > いったいどこでこういう関数の使い方覚えるんですか?
マニュアル読め!
man printf
man strtol
検索エンジンで調べろ
本を読め、知ってる人に泣き付け
小さいサンプル作って関数の動きを予測してみろ
> char *format??ハァ?
逆切れしている暇があったらな
>>335 const char * b = "%d\n";
printf("%d\n"@`a);
printf(buf@`a);
結果は一緒だ、ということ。
strtol ライブラリのリファレンスマニュアルを読むべし。
ある程度分かってきたら、リファレンスマニュアルを一通り、流し読みでも
良いから読んでみて、大体どんな関数が用意されているのか、把握しておい
て損はない。
339 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 15:45
>337 それってunixのコマンドでは?? ほかの環境ではむりなのでは?
>>339 そうだね
>マニュアル読め!
>man printf
>man strtol
ライブラリのリファレンスマニュアルを読め!
でいい?
# 相手は環境を書いてないし
341 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 16:09
337ではないが、
>>339 大概の環境にmanは移植可能だし事実移植されてるOSは
多々ある。WEB上で参照できるmanページも多々ある。
>>335 で、
int printf(char *format@`arg1@`arg2...);
はprintfのプロトタイプ宣言。
何の本だか知らないが、あわせて"format"に何を
書けるかとかの解説があるはずだ。無ければその本は
クソなので、捨てて新しいのを買え。
つーかそんなクソな本があるとも思えないが、なんて
題名の本よ?
342 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 16:31
>341 説明かいてあることは書いてありますが、初心者にとっては非常にわかりずらいです。char *formatってかかれてもわかっている人にとってはformatが単なる文字列でないことはわかりますけど、初心者はそうは解釈しないのでは?この本が訳本だからいけないということもあるかもしれませんけど。 ちなみにその本は プログラミング言語C 第二版 ANSI規格準拠 B.W.カーニハン/D.M.リッチー著 石田晴久 訳 です。
>>342 初心者なら、宣言と実装がどう違うかなんて辺りで
悩むかもしれない。それは誰しも通った道だから、
努力して理解するしかないよ。
今まで扱ったことのない概念なんだから、それは当然だ。
ともかく判るまで繰り返して読むのだ。
ただその本は初心者の参考書としては、薦められない。
参考書なら他の本を買った方が良いと思うな。
とはいえ、どれがいいかとは聞かないでくれ。もう忘れたよ。
最近の初心者向けの本も知らないしさ。
ところで、その本は原点で原典なので、捨てるには及ばないよ。
Cを書いていくなら、将来必ず役に立つはずだ。
入門書っつーより、リファレンスとしてなんだけど、 LSI-C試食版の中にあるLSIC86.MANが いろいろ書いてあって参考になる。 makeの使い方も載ってる。
345 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 17:57
346 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 17:58
> char *formatってかかれてもわかっている人にとってはformatが単なる文字列でないことはわかりますけど char *formatってかかれてるからいちど意味がわかればformatが単なる文字列であることがわかりますでしょ?
347 :
Nana :2000/11/28(火) 17:58
こんにちは。ここでは初の書き込みです。 C言語って何ですか?よりは微妙にマシ、レベルの超素人です。 最近Javaアプレットを始めました。 JDK1.3のインストール→パスを通す、までは なんとか出来たのですが、 なぜかコンパイルできません。 エラー、読みこめません、となってしまいます。 単なる打ち間違いなどではありません。 本来ならばこんなことは、本読んで、自力で解決すべきだとは 思うのですが、どうやっても解決できません。 もし「そりゃあオマエ簡単なことだろうよ……」ってな冷たいツッコミ、 解決策など入れていただけたら、と思います。 お目汚しで失礼致しました。
>>347 環境と、エラーメッセージを教えてくれ
それがないと何もわからん
349 :
Visual名無しさん :2000/11/28(火) 18:20
>>347 最近俺の友人で、メモ帳でソースを書いてたせいでファイル名が
Lesson.java.txt になってて、読み込めませんエラーになった奴が居たが。
350 :
Nana :2000/11/28(火) 18:23
エラーメッセージは、 エラー:first.javaを読みこめません。 エラー1個 こんだけです。 OSはWIN98です。JavaはJava2SDK1.3です。
>>350 コマンドラインから「dir」と打ってみて
first.javaファイルは見つかりますか?
もし、見つからなかった場合は
first.javaのあるディレクトリに移動してから
再度コンパイルしてみてください
352 :
Nana :2000/11/28(火) 18:30
あ、メモ帳で書いています。 でもファイル名はFirst.javaです。>349
353 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 18:32
MASMと言うアセンブラが欲しいんですけど,MSのサイトで配布しているのでしょうか?
>>352 確か...記憶違いだったらすまん
javacは大文字と小文字を区別するんで
First.javaをコンパイルさせたかったら
javac First.java
とするんだと思う...
>>350 だと
javac first.java
ってやってない?
355 :
Nana :2000/11/28(火) 19:00
皆さん、ありがとうございます。 >354 大文字でやってみましたが、そういう問題ではなかったようです。 >351 ファイルはありましたが、ファイル名がFirst.java.txtに なっていました。 >349 と言うことで仰る通りだったようです。 でも、txtの取り方がわかりません…… めちゃくちゃ初歩的だってことはわかるのですけれど…… すみません。
356 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 19:04
dosプロンプトで ren "First.java.txt" "first.java"
パラメータが足りません、と出てきました。>356
358 :
349 :2000/11/28(火) 19:28
メモ帳で保存するときにファイル名を First.java じゃなくて "First.java" と""でくくって打て。 頭のFの小文字大文字は適切な方で。
359 :
>355 :2000/11/28(火) 19:50
エクスプローラ->表示->オプション で 登録されているファイルの拡張子は表示しないのチェックを外す その後エクスプローラでマウス右ボタンで名前の変更
>348、349、351、354、356、357、358、359 無事にコンパイルできました。 皆さん、本当にありがとうございました。 心からお礼申し上げます。 超初心者質問で失礼致しました。 では。
361 :
名無C :2000/11/28(火) 22:07
FORTRAN→C変換プログラム、f2cなるものがあるのですが 誰か使ってる人いますかね?(使った人でも可)
362 :
>353 :2000/11/28(火) 22:52
配布してます。 DDKっやつです。
363 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 23:42
しょうもない質問で申し訳ありませんが、 C++のクラスについて class A { pulic: int a; class B { ...;. }; }; クラスB内でaにアクセスするのにはどうしたらいいのでしょうか?
364 :
名無しさん@お腹いっぱい。 :2000/11/29(水) 02:21
>363 Bからはできません。できない方が自然でしょう。クラススコープ外の事なんか知らなくて良いし。 普通はA、もしくは他がアクセスさせる手段を提供します。
365 :
名無しさん@お腹いっぱい。 :2000/11/29(水) 03:02
>363 A::aでできなかったっけ?
public ならそれでできるような…<365
368 :
名無しさん@お腹いっぱい。 :2000/11/29(水) 06:24
1、BをAの友達にする。 2、offsetof()をつかって、Aのアドレスを求める。
>365 static int a;
pulic:ってなによ? public:?
371 :
>370 :2000/11/29(水) 11:32
別にその程度はいいだろう。 分かるだろうが。 実際のコーディングのときには別色で表示されたりするから 間違いがすぐに分かるよ。
↑オマエモナー
373 :
>372 :2000/11/29(水) 12:22
オマエモナーって、 どう言う文脈で言ってるんだよ。 意味がわからん。
374 :
名無しさん@お腹いっぱい。 :2000/11/29(水) 12:26
C言語で、iniファイルとレジストリを読み込みたいのですが、 方法はあるのでしょうか・・・・
ini file は 普通にテキストモードで開くじゃダメかい?
376 :
名無しさん@お腹いっぱい。 :2000/11/29(水) 12:49
>>374 GetPrivateProfileString()とか
RegQueryValueEx()とかじゃダメなのか?
377 :
名無しさん@お腹いっぱい。 :2000/11/29(水) 23:48
メモリを動的確保するとき線形にポインタでつながりますが、配列状に確保するときはどうすればいいのでしょうか? その構造体にもうひとつポインタのメンバを用意するとか?
今ひとついってることがわからん。 配列に必要な要素数分をallocするのじゃダメなのか?
379 :
377 :2000/11/30(木) 00:01
えー・・・通常はメモリを確保すると []-[]-[]-[]-[]-・・・ なふうにつながっていますけど、それを []-[]-[]-[]-[]-・・・ []-[]-[]-[]-[]-・・・ []-[]-[]-[]-[]-・・・ : :(行は任意) にしたいのです。
>377 じゃあリストの先頭ポインタをしまっておく配列作ったら? Listが線形リスト一個分を表現するクラスだったら List* listptr[SIZE]; for(i=0;i<SIZE;i++){ listptr[i]=new List(); } 例えばこんな感じで。
381 :
377 :2000/11/30(木) 00:30
すいません、Cでお願いします。
じゃあListがリストの要素構造体だと思って typedef struct List_t{ int data; struct List_t* ptr; }List; とかとでも宣言してたとして、ループの中身を listptr[i]=malloc(sizeof(List)); listptr[i]->data=0; listptr[i]->next=NULL; こうしとき。 リスト伸ばすときは listptr[i]->next=malloc(sizeof(List)); で伸ばしてチョ。
じゃあListがリストの要素構造体だと思って typedef struct List_t{ int data; struct List_t* ptr; }List; とかとでも宣言してたとして、ループの中身を listptr[i]=malloc(sizeof(List)); listptr[i]->data=0; listptr[i]->next=NULL; こうしとき。
あら?二重になっちった。スマソ。
385 :
377 :2000/11/30(木) 01:07
うー・・・わかったようなわからないような・・ とりあえずありがとうございました。
386 :
377 :2000/11/30(木) 01:09
うー・・・わかったようなわからないような・・・ とりあえずありがとうございました。
387 :
363 :2000/11/30(木) 01:18
遅くなりました。レスどうもです。 この方法で一応解決しました。 class A { public: A():B(*this){} int a; class B { A &_A; public: B(A& p):_A(p){} void Func(void) { _A.a=120; } }B; }; 368さんの方法も試して見ます。 こんな感じのことをしたかったのです↓ class vector { public: double x@`y@`z; vector():length(*this){} class length { vector& v; public: length(vector& p):v(p){} operator double (void) { return sqrt(v.x*v.x+v.y*v.y+v.z*v.z); } }length; }; main() { double len; vector pt; pt.x=10@`pt.y=10@`pt.z=10; len=pt.length; ...; もう少し楽な方法ないかな…(;´`)
388 :
363 :2000/11/30(木) 01:20
省略されてしまった…続きです。(;゚ ゚) operator double (void) { return sqrt(v.x*v.x+v.y*v.y+v.z*v.z); } }length; }; main() { double len; vector pt; pt.x=10@`pt.y=10@`pt.z=10; len=pt.length; ...; もう少し楽な方法ないかな…(;´`)
389 :
名無しさん@お腹いっぱい。 :2000/11/30(木) 01:51
VC++6.0から、 #include <stdio.h> void main() { __asm { mov ah@`2 mov dl@`'?' int 21h } } と書いて実行するとint 21hの実行でメモリがreadになる事ができないとエラーが出るんですけど、何所が悪いのでしょうか?
Winあぷりでdosコールは使えません…>389
>>390 そうなんですか・・・ありがとうございました
392 :
* :2000/12/01(金) 05:02
staticな関数ってどういうものなんですか? なんの役に立つものですか? static int func() ↑こういうやつ
Cだとその関数はファイルスコープ外からは見えない。 つーか入門書でも読め>392
394 :
> :2000/12/01(金) 06:16
クラス内だとオブジェクトがなくても呼び出せる関数になるな。
395 :
名無しさん@お腹いっぱい。 :2000/12/01(金) 20:39
質問です。 BCCもしくはC++Builderを使用してMozillaをビルドすることは可能ですか?
396 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 00:45
可能だよ。>395 多少の修正は必要かもしれんが。 つーか聞く前にmakefile覗くか、試せよ。
397 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 01:04
クラス内でだけ変更できて、外からは読み取りしか出来ない変数って作れますか?
398 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 01:55
>397 公開した変数への書き込みを、内側からは許して外側からは拒否する、ということはできない。 変数は非公開にして、それを読み出す手続きを公開して外部からはそれを使わせろ。 クラスの変数を公開するという方法は、 オブジェクト指向設計の基本原則(自分のシマは自分で仕切る)に違反するので、 慣れるまでは使用禁止。
慣れるまで、とかじゃなくて、テストプログラム以外では禁止だろ?>398
400 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 02:31
>398 読み出す手続っていうのは、変数の値を返す関数を用意するって方法でしょうか? 同じよう変数が山のようにある場合、その数だけ関数を用意しなくてはいけない ってことなのでしょうか??
です。
>>399 >山のようにある
つーか設計を見直せ(藁
403 :
397 :2000/12/02(土) 03:08
>402 個人的な趣味でやってるものです。設計というレベルでは… 山のようにあるっていうのは、例えということで○
分析も設計もせずにいきなりコーディング? 開発手順を見直せ。awkの1行スクリプトじゃあるまいし。
405 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 03:24
[1:404] ウルトラ初心者の質問スレ ■▲▼ 1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/14(火) 13:56 「C言語って何ですか」「switch文がよくわからない」 っていう超初級の質問から、 「ゲームまで作ろうと思ったらどんなスキルが必要なんですか?」 「結局どこまで覚えればいいの?」 てな+α質問まで。 初心者スレでさえ冷笑されるようなド素人からの質問も、受け付けます。 質問スレでさえ「入門書に帰れ」「そんな基本的なこと聞くな」とか 言われるウルトラ初心者はここで聞いてね。 俺以外でも、親切な人は教えてやってください。 マターリいこうよ。 395 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/01(金) 20:39 質問です。 BCCもしくはC++Builderを使用してMozillaをビルドすることは可能ですか? 396 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/02(土) 00:45 可能だよ。>395 多少の修正は必要かもしれんが。 つーか聞く前にmakefile覗くか、試せよ。 397 名前: 名無しさん@お腹いっぱい。 投稿日
406 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 03:27
C言語を始めたいのですが、マイクロソフトのHPから VisualCをどうやってダウンロードすればいいのかわかりません。 (英語が苦手です) 誰か教えてください。
その前にVCってフリーだったっけ?
似たようなのが山のようにあるんならグループ分けしてコンテナで一括管理しとけ>399
なんじゃこら?>405
相手にするな>407
MSDN入ってるやつに聞け
MASMならタダだな
>402@`408 なぜに399に?
>414 ごめんよー。単純に間違えたの。
416 :
395 :2000/12/02(土) 10:27
>>396 どもです。makefileを変更するだけでいけるのでしょうか?
どこかに「mozをBCCで作成」みたいなサイトでもあるといいのですが…
どーでもいいことですが、405は私じゃないです。
MSDNは何処で手に入れるのでしょうか? VC++には入ってなかったのですが...
418 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 16:39
419 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 20:46
こんなのはやったらだめですか?っていうかできませんか? struct a{ int x; struct b y; }; struct b{ struct a z; };
構造体の循環入れ子・・・そのサイズ、無限大。
421 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 21:00
>420 入れ子じゃないです、相関しているんです。
422 :
ド初心者 :2000/12/02(土) 21:06
再帰関数を作ったら無限ループしてしまいました。 ループの途中で欲しい結果がでてることはわかってるんで、そこで関数を 止めたいんですがどうやったらいいんですか?
423 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 22:14
>422 ほしい結果になった時点で 関数を呼び出すのをやめればいいんじゃないですか? 無条件で呼び出しつづけたらそりゃ止まりませんよ。
>422 再帰書くんなら終端を明確にしとけ!
>422 …入門書に書いてなかったのか?
>420 相関するならポインタにしません?フツー。
427 :
名無しさん@お腹いっぱい。 :2000/12/03(日) 01:10
>422 どういう理由で再帰が必要になったんだ? 425の言うとおり再帰についてはたいてい触れられているはずだけど。
428 :
422 :2000/12/03(日) 02:46
javaの授業で再帰を使ったプログラムの課題をだされたんです。 returnで止めるってのはならったんですけど、うまくいかなくて・・・
>>428 そのプログラムをここに書け。その方が早い。
さあ書け!
そうだ、掻け
432 :
名無しのエリー :2000/12/03(日) 16:50
要素をランダムにソートするプログラムを教えてください。Cでお願いします。
>432 レッツゴーRSP
434 :
432 :2000/12/03(日) 17:31
> 433 RSP_??
435 :
名無しさん@お腹いっぱい。 :2000/12/03(日) 18:18
>432 n個の要素があるとして 0~n-1に収まるランダムな値を二つ用意する 取得した二つの場所を入れ替える 上の動作を好きなだけ繰り返す
436 :
432 :2000/12/03(日) 18:33
>435 どれくらいやれば効果的ですか?
437 :
>432 :2000/12/03(日) 19:28
何故かその問題をこの時期になると毎年あちこちで見かけるんだよねえ 毎年答えてるよ。 配列上に1~nの数字を並べて用意しておく 1番目に1~nの乱数k1を得る。配列の1番目とk1番目を交換する 2番目に2~nの乱数k2を得る。配列の2番目とk2番目を交換する 3番目に3~nの乱数k3を得る。配列の3番目とk3番目を交換する ・・・ n-1番目にn-1~nの乱数kn-1を得る。配列のn番目とkn-1番目を交換する
>>432 どこの学校かだけ教えてくれたら、ソース付きで教えて上げるよ。
439 :
432 :2000/12/03(日) 20:57
アルゴリズムは分かったのであとは自分で書いてみます。 とりあえず地方国公立大学とだけ言っときます。
441 :
432 :2000/12/04(月) 00:45
>440 行って来ました。これは役に立ちますね。 ありがとうございました。
>>432 おや、役に立ったんですか。いや、そんならいいです。
って、俺別に440じゃないですけど。
443 :
名無しさん@お腹いっぱい。 :2000/12/04(月) 01:28
言語の勉強って 人がつくったサンプルをひたすら研究するのと、 へたでもいいから自分で一から書く をどれくらいの割合でブレンドすればいいかな? 僕は今のところ 8:2くらいなので、 自分で書くときは調べてる時間が多いです
人が作ったサンプルをいじりまわすのがいいとおもう。
445 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 00:20
デバッガ‐の使い方がわかりません。 抽象的に説明してください!
446 :
ああっ名無しさまっ :2000/12/05(火) 00:27
LinuxでC又はC++を使ってプログラムする場合、 MotifやGTK+、Tcl/Tkなど色々ありますがどれを 使えばいいのか解りません。
>445 デバッガは海だ プログラムは地平線 君が見た朝日はどちらから昇った? もしかするともう反対側に来ているかもしれないよ さあ走れ!さあ泳げ! よそ見をするんじゃない 地平線を目指せばいつかはたどり着くんだ はたしてそれが君の望んだものかどうかは別として
448 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 01:11
チュウショウスギテワカリモハン!
449 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 01:16
>>445 gcc + gdbを利用する場合です。
1.コンパイルする時はデバッグオプションをつけてコンパイルする。
2.コアダンプした場合gdb XXX XXX.core or gdb XXX coreで起動する。
3.bt(バックトレース)と入力する。
大抵はこれで原因がつかめるはず。
450 :
449 :2000/12/05(火) 01:17
抽象的じゃないけどごめん。
451 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 02:52
デバッガを使うとき、レジスタの値をみるそうですね。16進で表示されるみたいですけど、そんなもの見てわかるんですか?訓練必要ですか?
453 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 11:42
>>446 GTK+かQtでしょ。
何作るかにもよるがね。
454 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 12:16
>>451 >そんなもの見てわかるんですか?
なければ生きてけない。
455 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 12:49
456 :
445 :2000/12/05(火) 15:34
windows上で動くかるいデバッガないでしょうか?
457 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 15:42
ボーランドのフリーのBCC55にはTurboDebugerが使えたんじゃなかったっけ? 雑誌の付録を確認してみたら?
458 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 21:35
TurboDebuggerをレジストするにはメアドが必要だぞ。 いやなら適当なフリーメアドを取って来い。
459 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 00:38
TurboDebugger… いやな記憶だ。 DOSの頃のBC++に付いていたあれは… ひどかった。
460 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 01:44
うちで買うのはVisualBASIC習えば職場のエクセルのVBA で流用できますか? ちなみに知識はロータス123のマクロにあたるものがVBA? といったレベルです。 BASICはベーマガ時代以来触れてません
461 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 03:06
みなさんいろいろとありがとうございます。 これからも教えつづけてください。
>これからも教えつづけてください。 なめとんのか?
463 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 11:31
>>451 16進で出した方が解りやすい場合とそうでない場合はある。
レジスタの内容が\1@`980を意味する数の1980なら、10進で表示した方が
解りやすい。
レジスタの内容がERR RDY 0 0 0 0 0 0を意味する192なら、
16進で0xc0と表示するか2進で11000000と表示した方が解りやすい。
しかし、浮動小数点値とか、.dataセグメントの定数データのアドレス
とかは、その16進数を読めたからと言って、即座に何を意味するかは判らない。
千代田区一丁目一番地一号が皇居(ネタだ)なのはすぐ判るだろうが、
東村山三丁目一六番地二五号が志村ケンの家かどうかは、住所録を引くか、
誰かに聞くか、実際に訪れてみないと判らない。
そういう感じ。
読むのは訓練の結果だ。指折り数えてもいいが、良く使う値は
そのうち覚えるものだ。
# タイルパターン&h5555@` &hAAAAとか・・・喩えが古いか。
464 :
C言語の初心者になる予定 :2000/12/06(水) 11:42
来年度からC言語かDelphiが必修課目になるんですが、私はCを選択しようと思うのですが 先輩の話では授業中に課題は絶対終らない、とかテストがめっちゃ難しいとか、 聞きます。そこで1~3月中に基礎的なものを覚えておきたいと思います。 実習に使うのはC++Builder4だそうです。 自分の家で勉強する為にC言語のソフトを買おうかと悩んでますが、 勉強をやる為に(将来プログラマーになる気無し)何万円のソフトは持て余す と思うので、勉強用で必要最低限の機能しか持たない安いC言語のソフト とかはないでしょうか? 教科書がなんでも洋書を訳したものでC入門といいつつもかなり難しいそうで、 大学の図書館に行きC言語の本を色々読みましたが、?????☆? 言葉など難しくて死にそうです。いい書籍を教えてください。
BCBかDelphiか。いい教授だ。 >必要最低限の機能しか持たない安いC言語のソフト だからBCC5.5はただだって。Cマガ買ってね。
466 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 13:34
>>464 大学だったら適当なフリーのコンパイラをダウンロードすれば
タダだな。でも家に持って帰るのが面倒そうだから、
>>465 氏も
書いてる通りCマガ買って付属のBCC使うのが早道だろ。
実習がどの範囲までカバーするか判らんけど、
BCB/DelphiのVCLやIDEはVB/VC++とは互換性がないから、
その辺は意識しておくように。
純粋なC言語の実習のプラットフォームとしてのみ
使うんならあまり気にすることもないが。
467 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 13:45
JDK1.3を使って初めてやってみたのですが、java.exeを実行すると Exception in thread "main" java.lang.NoClassDefFoundError: こんなエラーが出ます。 パスも通してますし、classpathもいろいろ設定したのですが、だめです。 どうしたらいいでしょう。お願いします。
468 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 15:44
gccで、構造体 filebuf struct filebuf{ char *line; struct filebuf *child; struct filebuf *parent; }; の childが差すメモリー領域を struct filebuf *stalloc(struct filebuf *strct) { if( ( strct = (struct filebuf *)malloc(sizeof(struct filebuf) )) == NULL ){ perror(mem_error); exit(1); } return(strct); } この関数で確保しようとしたのですが、Segmentation Faultが 出てしまいます。このstallocの書き方まずいんでしょうか?
>>468 これだけでは判断つきません。
(引数strctはいらなそうな気がするが)
Segmentation Faultが発生した場所がここなのでしょうか?
まずはgdbをつかってSegmentation Faultが発生した場所を
特定してみてください。
470 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 16:27
>>468 構造体分しかメモリ取ってないのに、構造体要素を使おうとしてる
とかじゃないの?
471 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 16:36
'bout NoClassDefFoundError problem: If you are running Windows NT@` make sure there are no copies of JAVA.EXE in your WinNT@` WinNT\System or WinNT\System32 folders. Rename them to JAVA.XXX or something; otherwise the default PATH order searches those folders before your JDK's BIN folder@` causing the wrong copy of java to run--a copy that cannot find certain Java classes.
472 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 17:41
473 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 19:05
俺が訳してやるぜ。 もしお前がウィンドウズNTをランニングしてるなら WinNT、WinNT¥System、WinNT¥System32 フォルダにJAVA.EXEのコピーがないかどうか メイクシュアーしてくれ。 そしてそれをJAVAXXXかなんかにリネームしてくれ。 そうでなけ 面倒臭いからやめた。
474 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 20:51
>>467 クラス名の指定の大文字小文字を間違えてるのでは?
ウィンドウズでもちゃんと大文字小文字を意識してファイルを
作って実行時にも引き数でちゃんと指定しないと駄目だよ。
475 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 20:55
>>468 その関数はなんで引き数取ってるんですか?
引き数なし(void)で良いんじゃない?
で、自動変数で *strct 作っておいて malloc() して返す。
つまり
struct filebuf *stalloc(void)
{
struct filebuf *strct;
if( ( strct = (struct filebuf *)malloc(sizeof(struct filebuf) )) == NULL
){
perror(mem_error);
exit(1);
}
return(strct);
}
ということ。
476 :
なや見 :2000/12/06(水) 22:33
結局何使ったらいいのでしょう・・? 候補はcとbasicなんですが、 C++は難しく、将来的に趣味で気軽にプログラミングする人には 詰まるところがきて(理解が難しいということ?) VBは簡単だけど将来的に趣味で気軽なプログラミングを超えた ところに行きかけるとどうしようもなくなる。 (簡単にできないということ?) プログラミングで何をしたいと明確な目的があるわけじゃ 無いのでまだ、手を出さない方が良いんでしょうか。 どうか助言いただけないでしょうか。
477 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 22:49
VB->C->JAVA->C++ だな。 C++は最初は難しいけど、成れてくるとかなり便利だよ。
478 :
476 :2000/12/07(木) 00:10
>>477 どれかに決めるのではなく、自分のレベルと必要に応じて
段階的にやっていけということなんですね?
ありがとうございます。
479 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 01:56
Linux(gcc)でJISの文字列をEUCに、EUCをJISに変換するしろと言われました。 標準関数に変換関数はありますか? あれば教えてください。 もし無ければ、変換の仕方を教えてください。
>>469 Segmentatino Faultは、stallocを呼んだ関数内で、totalbufferが構造体だとすると、
totalbuffer->child = stalloc();
の場所で、発生してました。
gdbでトレースしていくと、
このエラーを起こしている関数(addnewbuf)が呼ばれる
一つ前の関数(strcomp)を通過する前と後で、このstrcompの引数には、
totalbufferが無いのに、totalbufferが指すメモリーアドレスが
変わっているのに気づいたんで、今度は、totalbufferをstrcompの引数にして、
トレースしていった所、どうやら、strcompが終了して、strcompを呼んだ
関数に戻った所でメモリーアドレスが変わっていました。
そのstrcompですが、引数のstring@` *bufferの中に、string@` *targetが含まれているか
チェックして、もし含まれていたら、pointer char *dest を返す関数です。
char *strcomp(char *target@` char *buffer@` char *dest)
{
char init[FIRSTL]; /* First FIRSTL number of charcter of *target */
char *tempbuf;
int targetlen = strlen(target);
if( (tempbuf = (char *)malloc(MAXLINE) ) == NULL){
perror(mem_error);
exit(1);
}
extstr(FIRSTL@` target@` init); /* get first "FIRSTL" number of charcter off
* from target and store it in init*/
if( ( dest = findFirst(init@` buffer@` dest) ) != NULL){
extstr(targetlen@` dest@` tempbuf);
if( strcmp(target@` tempbuf) == 0 ){
free(tempbuf);
return dest;
}
}
free(tempbuf);
return NULL;
}
>>470 自分もおっちょこちょいだから多分そうだと思ったんですけど
>>475 & 469
あ、すいません、ディバッグ中に、mallocのスコープが問題だと思ってつけたんですけど、
とり忘れてました。うーん、なんかどんどんボロが出てくる...
483 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 05:04
VBだけやるよりも、VC++もやってみたりしているうちに、VBの理解 が深まるし、VC++もわかってくるって言ってた人いたんですけど どうなんでしょう?
484 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 05:35
また急にそんな話を。
485 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 07:10
bcc5.5が除算例外をキャッチしてくれないのはなぜですか? それとwindowsプログラムで TV_INSERTSTRUCT tv; tv.item.pszText="tekitou"; として拡張子をCPPにすると問題ないのに Cにすると"itemは未定義のシンボル"というエラーがでるのは どうしてですか?以上よろしくお願いします。
486 :
名無しさんi486 :2000/12/07(木) 07:39
>>483 いきなりVCをやっても混乱する可能性が高い。
VBのクラスモジュールの使用→オブジェクト指向の勉強→
オブジェクト指向言語→Win32API
のほうがお勧め。
VCはなくなる言語だし、MFCは良くわからんし。
>>481 :2000/12/07(木) 02:37 お疲れ様です。(^_^)
あやしいところを列挙してみます
> if( ( dest = findFirst(init@` buffer@` dest) ) != NULL){
この行でdestが変更されて、return dest;していますが、
この関数の戻り値は「引数で渡されたアドレス」or「NULL」を返すように思われますが、
findFirstの動作によってはそれ以外のものが返ります。
extstrの機能がよくわかりませんが、
>extstr(FIRSTL@` target@` init);
第1引数にinitのサイズを指定していますが、
> extstr(targetlen@` dest@` tempbuf);
では第1引数にstrlen(target)を指定しています
同じ使い方をするならばtempbufの確保サイズMAXLINE
を指定すべきではないでしょうか?
findFirstとextstrのソースの提示と、その機能の説明をお願いします。
488 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 11:20
>>481 うーん、私もこれだけでは特定できない。
487とは違う線から攻めてみますね。
totalbufferが指すメモリアドレスが変わってるって所だけど
アドレスが変わってるって本当?指し示す内容が変わってるの
間違いではない?
アドレスが本当に変わってるなら、どこかでプログラムつぶして
いそうだな、そうなら全部みないと難しそう。
アドレスの内容が変わってるなら、totalBufferのアドレスは
すでに解放済みってなのはどう?
それから、strcompはbufferからtargetを探す関数ということですが
にしては、ちと無駄がおおい。tempbufは本当に必要か?
extstrとかfindFirstとか別関数にする必要があるか?
要求がわからないので、はっきりしたことは言えないけど。
もうちょっと、考え直してすっきり作り直すと、ついでにバグも
なくなることも良くあるよ。
489 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 12:09
>>481 freeした後、ポインタはNULLにするべきでしょうか?
490 :
464:C言語の初心者になる予定 :2000/12/07(木) 14:09
465@`466>感謝します。昨日Cマガ買いました。 目標として情報処理の2種とりたいので頑張ります。
491 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 14:14
2種ってもうないよ。
492 :
名無しさん@お腹いっぱい。 :2000/12/07(木) 22:50
そのオブジェクト思考~とかは意識しないと駄目なんでしょうか 適当に本見て、こんな感じのソフトつくりたいな と思って作れないものなんでしょうか?
493 :
492 :2000/12/08(金) 00:01
もしかして、 質問イタスギ?
494 :
492 :2000/12/08(金) 01:10
下がってる・・・すまそ・・・ 実はけっこうマジな気での質問でした。 違うネタで盛り上がってください。
>>492 オブジェクト「思考」ぢゃなくて「指向」だぞ?
個人で作ってる分にはそこまで気にしなくて問題なし。
プログラムで食って逝くんだったらはた迷惑だから
きちんと勉強しましょう。
496 :
名無しさん@お腹いっぱい。 :2000/12/08(金) 09:53
プロシージャとコードの意味を教えてください。 ヒッキーで友達いないんですよ・・・。ハハハハハ。
497 :
名無しさん@お腹いっぱい。 :2000/12/08(金) 10:01
>>496 procedureってどのprocedureかな。
PASCAL?COBOL?まさかカタプロか?
それぞれで意味が違うよ。
コードは広義にはプログラム言語で書いたもの全般を指すよ。
498 :
名無しさんi486 :2000/12/08(金) 10:02
>>497 コードは広義には電源コードなど・・・
スマソ
499 :
名無しさん@お腹いっぱい。 :2000/12/08(金) 10:04
>>497 Basicです。
こんなに早くレスが来るとは・・・
ありがとうございます!!
500 :
名無しさん@お腹いっぱい。 :2000/12/08(金) 10:08
だれかprocedureについて教えてやれ 俺は分からん
Basicにおいてprocedureは funtionとsubを合わせたものを指す
>>501 スペルミス
s/funtion/function/
>>501 それは、BasicじゃなくてVisualBasicだ。
はじめてjava(もしくはjava script)を勉強しようと思ってますが、 いかんせんプログラミング初心者なのでバカでもわかるくらいの易しい本って なにがあるでしょうか? よろしければ教えてください。 また、javaとjava scriptの違いもわからないので学びやすい方を勉強したいと思います
505 :
名無しのエリー :2000/12/08(金) 22:33
bcc5.5つかってたら "不正な文字 ' '・・・・" とエラーメッセージがでました。何が不正かまったくわかりません。何が原因なのでしょうか? またこういうエラーメッセージについての説明は何を参照すればよいのでしょうか?
506 :
505 :2000/12/08(金) 23:21
解決しました。 全角のスペースがはいっていました。
507 :
Visual名無しさん :2000/12/08(金) 23:32
>>504 書店に行って並んでる本から自分でもわかるくらいのを選べばよかろう。
あとJavaとJavaScriptはジャワティーとジャワ原人くらい違うから比べようがないぞ。
508 :
名無しさん@お腹いっぱい。 :2000/12/08(金) 23:44
やはり良い大学の情報工科に行くと、レベルの高い プログラミング技術を学べるんですかね?
509 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 00:00
メンバー識別子が必要とエラーメッセージがでますけど、こんなことしたらいけないのでしょうか? for(k = 0;k <= NumberOfTask;k++){ if(TopOfRank-i == (rankedtask+k)->priority){ (rank+i)->(a+j) = rankedtask+k; //ココです! j++; }//end of if if( j == *(cnt+i))break; } }
なんでbccではこれが例外にならないのか夜も眠れません。 (VC++ではちゃんと処理してくれます) マジで教えてください。 int main() { int numerator = 10; int divisor = 0; int result = 0; try { result = numerator / divisor; cout << "\nExpression succeeded!" << endl; } catch(...) { cout << "\nDivide-by-zero exception!" << endl; } return(0); }
511 :
Visual名無しさん :2000/12/09(土) 00:54
>>509 > (rank+i)->(a+j) = ...
2重に駄目な感じだ。
っていうか、何を期待してこのコードを書いてるのかがわからねぇ。
512 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 01:10
>511 どこがだめなのでしょう?
513 :
492 :2000/12/09(土) 01:15
c++かな。すごいね。全然意味不明だよ。 わたしゃ今日MS-OFFICE2000professinal買ってきてExelVBAで 自動記録した文字をボタン押せば出るようにしたマクロで感動したよ。
514 :
510 :2000/12/09(土) 01:52
511さんがいないようですのでどなたかお願いします!
>>514 ちょっと、ちょっと、騙りはやめてくだされ。
しかしレスつかないのはレスするにも値しないほどの質問なのか
皆さんbcc5.5を使ってないからなんですかね?
本見てC++勉強中なんですが、いきなり挫折しそうです。それと
#include <iostream>
using namespace std;
を先頭に付けるの忘れてました。すみません。
516 :
509 :2000/12/09(土) 02:31
>515 すいません、間違えました。
>>516 なんかおかしいと思いました。
意味ないですもんね。こちらこそ「騙り」なんて言って失礼。
518 :
509 :2000/12/09(土) 02:44
あそこのコードは構造体Rankの変数であるポインタの配列のi番目の、そのメンバであるRankedTaskという構造体のポインタであるaの配列のj番目に、同じくRankedTaskという構造体のポインタであるrankedtaskのk番目のアドレスを代入しようとしているのです。
519 :
509 :2000/12/09(土) 02:46
>517 いえいえ、こちらこそ。 しかしレスつきませんねぇ~・・・
>>518 の日本語、全然意味が分かりません。
とりあえず、コンパイラが出してるエラーの通り。
->演算子の右側は(構造体の)メンバ名
521 :
509 :2000/12/09(土) 03:50
struct R{ struct P *a; int Nmb; }; 上のような構造体で、aにアドレスを代入しようとしているのです。 だから(rank+i)->(a+j)としたんですけど。
522 :
虹 :2000/12/09(土) 04:07
>>521 過去ログ読んでないんで全然違うかもしれないけど、もしかして
(rank+i)->a[j] or (rank+i)->a+jってこと?
普通Cでは->の次に式は書けないでしょ。
523 :
虹 :2000/12/09(土) 04:08
違うわ。aにアドレス代入するってんなら単純に(rank+i)->a= で代入すれば良いんじゃないの。
(rank[i].a)[j] = ...
525 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 06:02
javaに興味がでたので 雑誌についてたBluette 1.0の体験版つかいました。 で、使っていて変なのですが ブレークポイントを一つでもおくと実行する時に途中で止まってしまうか 実行するまで1分くらいかかります。 エラーメッセージがでるところには Initializing jdb... > Deferring breakpoint hoge:40. It will be set after the class is loaded. > run sun.applet.Main BluetteTemp.html Java HotSpot(TM) Client VM warning: Setting of property "java.compiler" is ignored と、ワーニングがでてるのですが これが問題になっているなら、解決方法がわかりませんか? (このワーニングの意味も分からないんです(^^;) それともこういうものなんでしょうか?
526 :
509 :2000/12/09(土) 06:05
>522 そゆことです。式は書けないってどゆことですか? aにアドレスを代入したいんじゃなくて、aのj番目にアドレス代入したいんです。
527 :
509 :2000/12/09(土) 06:18
(rank+i)->aとしたらコンパイルとおるんですよねぇ~・・・ しかしちょっと上で if(((rank+i)->a = (RankedTask *)calloc(*(cnt+i)@`sizeof(RankedTask))) == NULL) exit(-1); としてaにメモリを確保した上でa+jにアドレスを代入しようとしたんですけど・・・
*((rank+i)->a+j)= ってしたいのか?
529 :
511 :2000/12/09(土) 09:46
>>527 int a = 100;
a+7 = 10;
↑これが(C言語としては)変なのは解るだろ?それと同じこと。
ポインタ変数だってintと同じで普通に値が格納されてることに変わりはないから、
char* a が例えば 0x1000 というアドレス値なら、a+1 は当然 0x1001 という値を意味するし、
a+j は常に 0x1000+j という値を意味する。それに代入なんて不可だ。
たぶんやりたいことは
>>528 の通りなんだろうが。
レスが遅くなってすいません。
totalbuffer->childのアドレスが変わっているというのは、確かなので、
strcompの中身、return NULL;以外を全てコメントアウトして、ディバッグしてみた
のですが、
またもtotalbuffer->childのアドレスが変わっていました。
今回のプログラムで初めてソースファイルを複数に分割することに挑戦したので、
strcompのソースと、mainのソースファイルを一つのファイルにまとめて、再コンパイ
ル
してみたのですが、Segmentation Faultはまたもおきてしまいました。
>>487 strcomp全体をコメントアウトしてもtotalbufferのアドレスが変わっていた事を考え
ると、
strcompに、バグがあるとはちょっと思えなかったので、extstrとfindFirstのソース
を
のせるのは先送りさせて頂いてよろしいでしょうか?もし、それでも見たほうが良い
ということでしたら今度のせます。
>488
totalbufferのアドレス開放は、strcompの前では行われていませんでした。
>strcompはbufferからtargetを探す関数ということですが
>にしては、ちと無駄がおおい。
targetが、40~50文字程の場合を想定したので、最初に、extstrの第一引数で指定
した長さのstringと、targetを比べて、それでもしも両方同じだったらstrcmpを
呼ぶように作ったのですが、やはり助長な機能なんでしょうか?
531 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 14:04
>528 いえ、ちがいます。そうすると結局a+jのアドレスの指し示すところに右辺値の値をいれようとしてしまいます。ちなみにそう変えたら 不正な構造体の演算 とでました。 >529 あ~・・・なるほど・・・なんか分かったようなきがします。ありがとうございました。
532 :
531 :2000/12/09(土) 15:24
しかしそうするとある構造体のアドレスを記録するもの(つまりポインタですけど)の配列を動的に確保するにはいったいどうすればいいでしょうか? 言っている意味つたわるかな~・・
533 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 16:30
凄く基本的な質問です。 int *a[10]; としたらいったい何ができているのでしょうか? int *a; としたら整数型のポインタがひとつできるので、*a[10]の場合はそれが10個分できているのかな?とおもったんですけどプログラムで組み込んだらなんだか違うみたいで・・・
534 :
12月9日 :2000/12/09(土) 16:35
質問させてもらいます。 C言語でメッセージボックスにBGマップのチップ配置をただ横並びに 表示するだけならともかく実際のイメージ通りに改行、表示するため にはどのようにしたら良いのでしょうか? 誰か教えてくれませんか?
535 :
SAGE :2000/12/09(土) 17:19
>>532 素直にポインタの配列を動的に確保すればいいだろう…。
(RankedTask**)calloc( *(cnt+i)@`sizeof(RankedTask*) )
>>533 intへのポインタが10個ってので別に違わないと思うぞ。
536 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 17:39
struct b{ struct a *y; }; typedef struct b B; ・・・・・ ・・・・・ B *x[10]; として、 for(i=0;i<=10;i++) printf("%p\n"@`x[i]); としたら、 00000015 0040B05A 00407DA9 00000000 0040B0CC 7FFDF000 0040DFA4 00000001 00000100 0012FFB8 とでました。これはいったいどういうことですか?
537 :
536 :2000/12/09(土) 18:21
B (*x)[10]; と宣言した場合と結果がちがうんですけど・・・
538 :
532 :2000/12/09(土) 18:26
>535 なるほど!そういうふうにするのですか! ありがとうございました!
539 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 18:32
プログラミング関連の本を買おうと思ってるんですけど、 この人の本はわかりやすいね。 っていう人物はいますか? 主観でいいです。 柴田望洋って人のがいいってのは、このスレに書いてありましたね。 言語に拘らず、とりあえず人物名だけ知りたいので、 他に知ってる方は教えてください。
540 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 20:38
上げてみます。
>>536 -537
そのprintf出力に何の不満があるんだ?
B *x[10];
は「Bへのポインタ」の配列
B (*x)[10];
は「Bの配列」へのポインタ
542 :
hide :2000/12/09(土) 22:13
ネットのテンポラリファイルを 削除する bat ファイルを作成しました。 手動起動だと、削除時に 削除するかどうか 聞いてきます。 またYを入力しても、 \WINDOWS\TEMPOR~1\* のほうはうまく消えません。 どうしたらいいかおしえていただけませんか? ---------------------------- del C:\WINDOWS\Cookies\* del C:\WINDOWS\TEMPOR~1\* exit
544 :
542:hide :2000/12/09(土) 22:28
どうしたらいいか? sh の \rm -f みたいな強制削除をするには? C:\WINDOWS\TEMPOR~1\ 以下のファイルを削除するには? です。 お願いします。
545 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 23:53
なんか541さんと543さんの言っていることがちがうような気が・・・
546 :
名無しさん@お腹いっぱい。 :2000/12/10(日) 04:21
クラスの代入について質問なのですが class A {...;}a; class B:public A {...;}b; //関数だけ追加 としたときa=bはうまくいき、b=aだとエラーがでます。 b=aを可能にするにはどうしたら良いのでしょうか?
ディレクトリ以下なら DELTREE 普通は DEL オプションを探して該当するものがないならリダイレクト。
うまく合うように コピーコンストラクタ、代入演算子を実装したまい
549 :
546 :2000/12/10(日) 04:38
>548 コピーコンストラクタの方の簡単な例をお願いしてよろしいですか? (コピーコンストラクタがいまいち理解できてない)
両方の例を…m(_ _)m
>>546 スマソ、ラーメン食ってて遅くなった・・。
思いついたのはこんな感じにょ。
浅学なので間違ってたらご指摘希望にゅ。
#include <stdio.h>
#include <stdlib.h>
class A
{
public: // カプセル化してきちんと private にして
// public インタフェースを作るか
// 手をぬいててきとーに public か friend で風穴をあけてください
int a;
public:
A( int i = 1)
{
a = i;
};
};
class B : public A
{
int b;
public:
B()
{
b = 0;
};
B( const A& src)
{
a = src.a;
b = 0;
};
B& operator=( const A& src)
{
if( this != &src ) // ありえるはずないけど
{
a = src.a;
b = 0;
}
return *this;
};
void printdata( void)
{
printf( "a = %d b = %d\n"@` a@` b);
};
};
int main( void)
{
A a( 2);
B b;
b.printdata();
b = a;
b.printdata();
return EXIT_SUCCESS;
}
ふつーコピーコンストラクタ、代入演算子は B を引数にして 定義するものなので そこらへん勉強しといてくだされ クラスの中で動的にメモリを確保するクラスの間で コピーするとき必要でござる
553 :
名無しさん@お腹いっぱい。 :2000/12/10(日) 08:22
typedef struct { int x; } Base; typedef struct { Base base; char *xxx; }String; typedef struct { Base base; double d; }Double; void Hoge( Base *b ) { b->x = 10; } Double *d; String *s; Hoge( (Base *)d ); Hoge( (Base *)s ); こういうのって安全ですか? アラインメントとかが変わってずれそうな感じなんですが、、、 # ここでBase *にキャストすべきか?というのは議論しません。
554 :
553 :2000/12/10(日) 08:23
書き忘れました。C言語です。
555 :
553 :2000/12/10(日) 08:29
もうひとつ忘れてました。 mallocしてないというのは気にしないでください。
556 :
>553 :2000/12/10(日) 10:01
ええと、環境が固定されてるならそれもありだと思うよ。 でもなぜわざわざそうしたいの? 普通にHoge(&(d->base) )としない理由は? たぶんいわゆるOOPをCでやりたいんだと思うけどなあ だったら専用スレたててみて
557 :
名無しさん@お腹いっぱい。 :2000/12/10(日) 15:24
#include <stdio.h> #include <stdlib.h> struct a{ int e; }; struct b{ int f; struct a *y; }; struct c{ int g; struct b *z; }; typedef struct a A; typedef struct b B; typedef struct c C; void main(){ int i@`j; A *s; B *t; C *u; u = (C *)calloc(4@`sizeof(C)); のようにして、 for(i=0;i<4;i++) (u+i)->z = (B *)calloc(4@`sizeof(B)); はOKなのに、 for(i=0;i<4;i++) for(j=0;j<4;j++) (u+i)->(z+j)->y = (A *)calloc(4@`sizeof(A)); はダメなのは何故ですか?
((u+i)->z+j)->y = (A *)calloc(4@`sizeof(A)); だろ。ってゆーか、上の方に全く同じネタが無かったか?
559 :
名無しさん@お腹いっぱい。 :2000/12/10(日) 17:38
>558 どうして括弧が必要なんでしょうか?
+より->の方が結合がつおいから。
なかなか理解できない約一名のためにアドバイス。 C言語でポインタを扱う場合、2通りの使い方がある。 1.参照の代わりに使い、オブジェクトの実体にアクセスする。 2.配列の代わりに使い、配列の各要素にアクセスする。 この時は、ポインタ演算(+-等)を使う場合が多い。 1の場合、*演算子(構造体の場合、->)を用いてアクセスするのが普通。 2の場合、[]演算子(構造体の場合、[]と.)を用いてアクセスする方がわかりやすい。 callocでヒープを「配列として」確保した場合、(内部の処理は微妙に異なるが) 戻り値は、配列のベースアドレスと考えられる。 つまり、[]を使うべきである・・・少なくとも、理解出来ていない間は。 ポインタ演算を使いたい場合は、 別のポインタ変数を宣言し、そちらでアクセスすべきである。 理解できない約一名は、「配列として」確保したメモリを、 無理に(参照代わりの)ポインタとして使おうとしている。 上記+文法がよくわかっていないため、混乱している。
562 :
名無しさん@お腹いっぱい。 :2000/12/10(日) 19:37
mallocとcallocとreallocの違いがわからん。
563 :
名無しさん@お腹いっぱい。 :2000/12/10(日) 19:46
はい、文法わかってないんです・・・・ 561の文章よんで、((u+i)->z+j)をu[i].z[j]に変えたらうまくいきました。そこはかとなくわかったような気が・・・
564 :
SAGE :2000/12/10(日) 19:50
565 :
546 :2000/12/10(日) 23:44
>548 レスが遅くなってしまってスイマセンm(_ _)m どっちの方法にしろ内部でメンバーごとの代入を行わなければならないということですね。 クラスAを拡張したクラスBはAと互換性が無いということでしょうか? さらに…コピーコンストラクタを使う場合はクラス宣言する際にコピー元を渡す"B b(a);"ってことですか?
566 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 00:46
>>564 再確保ってどういうところが再なんだ?
mallocを二度使うのとどう違うんだ?
567 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 00:56
mallocで再確保すると戻ってくるアドレスが以前と違うアドレスを指している 可能性がありますが、reallocでは同じアドレスを指します。 でも環境によって実装が違うのでアテになりません。
568 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 01:09
またC++のクラスに関する質問なのですが、 クラスA(例)を継承したクラスであれば何でも受け入れる関数は作成可能なのでしょうか? (さらに関数内部でそのクラスのコピーを作る場合)
「出来ますか?」に「やってみれば?」と返すのは不親切なのだろうか
570 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 01:38
>>567 > reallocでは同じアドレスを指します。
それは保証されていない。せいぜい、同じアドレスで再確保が出来た場合に限る。
保証されているのは、先頭から末尾(再確保の前後で短い方の末尾)までの
「内容」が同じ、ということだけだ。
・同じアドレスのままで再確保できたかもしれないし、
・(reallocの内部で自動的にallocされた)別の場所にコピーされたかもしれないし、
・どちらも出来ずに NULL を返す(このとき、元の領域はそのまま残っている)かもしれない。
ということ...なんだけど、567氏は判っているような気もするし、
これを読んだら元の質問をした人は却って混乱しちゃうだろうか...
571 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 05:12
関数内で動的に確保したメモリは関数が終了するとかってに開放されてしまいますか?
alloca@`malloc@`realloc@`new@`delete くらい一通り マニュアル読んで来い、と思うのは俺だけか?
>572 そうですねぇ~・・・しかし入門書にはのってなかったりしますよ。なら使うな!とつっこまれそうですが・・・使いたいのが心情で・・・
574 :
リファレンスぐらいどこにでもあるだろ? :2000/12/11(月) 07:10
575 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 11:40
>>570 なるほど。
>>572 そうだった。うっかりしてたよ。
>>574 これ見る限りじゃ、mallocよりもallocaの方がdeleteしなくて
済む分優れてるように見えるが、そうでもないのか?
それに、スタック・フレームに動的にメモリが割り当てられる
というのは、ヒープ以外の場所にメモリが動的に割り当てられてる
ことになると思うが、そんなことが許されるのか?
576 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 11:50
>>575 スタックは一般的にヒープに対してかなり狭い領域
なんで、沢山アロケートしないように注意。
いま移植させられてるコードはオートマチック変数
で5120バイトとか取ってて鬱だ。
(面倒だからstaticにしまくっている)
577 :
>575 :2000/12/11(月) 11:55
呼出元のスタック・フレームに割り付けるということは 単にspを返して同時にspを小さくしてるという事 ということは別の関数でラップする事もできないからallocaは不便だよ
578 :
>576 :2000/12/11(月) 11:58
もしwindowsならアプリ事に数メガの領域が取れるから autoで5Kくらいなら 再帰でもしてなけりゃ、問題ないかな・・・
579 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 12:01
>>578 ネストが対数的なら再帰でも問題ないだろ
580 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 12:03
Win95@`98@`Meは、スタック自動拡張してくれないから、 結構意識してスタック食わないようにしないと、落ちたり、 不可解な動作をしたりするよ。 まぁ、程度もんだけどね。
581 :
なんでか :2000/12/11(月) 12:31
perlがインストールできません 誰かたすけてください
582 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 12:47
>>581 まず環境を書くのだ。「なんでか」じゃあ「なんでだろね」って
言うしかないぞ。
OSとperlのバージョン、ソースからかバイナリからか。
どういうエラーを出すのか。
質問は的確に。ウィザードは全員が全員テレパスではない。
>>468 >>481 >>530 現象:Segmentation Faultが発生する
落ちた箇所:addnewbuf関数の内のtotalbuffer->child = stalloc();
原因:strcomp関数を呼ぶと、addnewbuf関数に渡すtotalbufferが書換えられる
対処:strcompの中身、return NULL;以外を全てコメントアウト
してみたが、totalbufferが書換えられている
現在混乱中
まとめましたが、こんな感じでよろしいでしょうか?
全部でどれくらいの大きさなのでしょうか?
何をするものなのでしょうか?
多分、ファイルを読み込んで、1行を線形リストか
tree構造に格納するような処理だと推測しているんですが
今週は暇なので、小さいものなら添削してもいいですが?
584 :
> :2000/12/11(月) 13:37
マセマティカとかって意味ありますか?糞だるいんですけど。
585 :
名無しさんi486 :2000/12/11(月) 13:45
>>548 Mathematicalかなぁ?
最後のルは省略するべきじゃないと思うけどね。
586 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 13:51
Mathematicadaだ。チミがまちがっとる。
587 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 13:55
意味があんのか答えろよー。
588 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 13:58
↑チミもまちがっとる。Mathematicaだよーーーーんん。。
589 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 14:01
意味なんかあるわけないでしょーーーーーーーーーんんんん。。。
590 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 14:58
>>567 mallocは、ほぼ確実に違うアドレスを返す。
というか、同じアドレスを返したらやばい。
一応、解放してからmallocを実行すれば、同じアドレスを返す可能性もあるが、
解放前に格納していた値は?
591 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 19:11
NEC PC9801のN88BASICで複数のファイルを結合するにはどうすればいいんですか?
>591 なつかしい。ベープログラムならMergeコマンド
593 :
aa :2000/12/11(月) 19:47
aa
594 :
591 :2000/12/11(月) 20:04
>592 ぉお!できました。どうもです。
595 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 20:40
>>590 そのまま読み出せる。セキュリティに厳しい仕事だと、free()する
前にmemset()でクリアする。
ファイルの削除も同じような事したり(これはOSでやってくれる場
合もある)。
>>595 おいおい
> そのまま読み出せる。
多くの処理系は「そのまま読み出せる」だろうがそれは「たまたま」であり
それを期待したコードを書いてはいけないだろう?
> セキュリティに厳しい仕事だと、free()する前にmemset()でクリアする。
そういう場合はfree()は直接使わないでしょう。(mallocなども)
そういう共通関数作ってそいつ呼ぶようにしない?
大体、free()の前に「何バイト確保したか」っていつも覚えているとは限らないでしょう?
>>596 別に595は「期待したコードを書いていい」とは言ってないような。
>大体、free()の前に「何バイト確保したか」っていつも覚えているとは限らないでしょう?
確保した領域の大きさを覚えておかないでmemsetはしないでしょ。
>>597 そう言う場合、malloc/freeに一枚かぶせて
struct MEM_LIST {
void *p;
size_t len;
struct MEM_LIST *next;
};
みたいなリスト作って管理するよね・・・ね・・・。
599 :
468 = 481 = 530 :2000/12/12(火) 06:49
>>583 状況は、大体その様な感じです。
あと、ソースファイルを分割するのが、
今回始めてだったもので、一度全てのファイルを一つにまとめましたが
やはり結果は同じでした。
> 全部でどれくらいの大きさなのでしょうか?
> 何をするものなのでしょうか?
ソースは、大体全部で600行程で、
Windowsで言うなら、xyzzyのGresregや、秀丸のgrepのような事が
出来る物を作ろうとおもっていたのですが。
ちょっと背伸びしすぎた気も…
600 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 12:48
板違いかもしれないけど、質問 無圧縮AVIのファイルフォーマットを解説しているサイトを教えて下さい ろくなフリーソフトが無いんで自分でコンバーター作りたいんです
601 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 13:07
>>601 ありがとうございます!
今からじっくり読んでみます。
603 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 13:32
質問です。Javaアプレットで、あるキャラクター(32X32ピクセル)画像の余分な部分を透過させるにはどうしたらいいのでしょうか。 背景画像と色を同じにするのはまずいです。 あと、STGやRPGのキー入力の常套手段はどんな方法ですか?
604 :
名無しでGO! :2000/12/12(火) 15:21
605 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 15:42
>604 本当ですか?それじゃあXORモードを駆使してやるしかないんでしょうか。
STLでちょっと質問をいいでしょうか? 自前の構造体をsetで並べ替えさせたいと 思っているのですが、"<"演算子が定義 されていないと言われて怒られます。 struct Vertex { VertexAttrib attrib; bool operator<(Vertex& A) { int i = 0; if(A.attrib.point.x > attrib.point.x) i++; if(A.attrib.point.y > attrib.point.y) i++; if(A.attrib.point.z > attrib.point.z) i++; if(i >= 2) return true; else return false; }; }; 一応、上のように定義をしている(順番は関係ないので、 演算子自体は適当)のですが、それでも 二項演算子 '<' : 型 'const struct Vertex' の左オペランド を扱う演算子は定義されていません。(または変換できません) といわれます。エラーが出ないように演算子の定義をするには、 どうすればいいのでしょうか?ちなみに、上の演算子を定義 しないと、 bool __cdecl std::operator <(const class std::basic_string<_E@`_Tr@`_A> &@` const class std::basic_string<_E@`_Tr@`_A> &)' : 'const class std::basic_string<_E@`_Tr@`_A> & 用の テンプレート引数を 'const struct Vertex' から減少できませんでした。 というエラーがさらに出てきます。
607 :
名無しサソ :2000/12/12(火) 17:49
間違って下げていたのであげときます
さらに訂正。setを使う理由は、並べ替えるためじゃなくて 重複する要素を消したいためです。何度もすみません
609 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 17:57
>>606 operator < の宣言を
bool operator<(const Vertex& A) const
にせよ。
この手の下らないゴタゴタを機械的に処理できるようにならないと
C++みたいな腐った言語は使えないぞ。
>>609 通りました。どうもありがとうございます。
まさか数分でレスが来るとは・・・(驚)
元々STLは使っていなかったのですが、今回
思い切って使って見て、いきなりこけました。
確かに、この程度でつまづいていたら話に
ならないですね。精進します。
611 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 19:33
612 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 19:39
611 ×皆さんは先に勉強するのを ○皆さんはどちらを先に勉強するのを そのぐらい自分で考えろと言われそうですが どちらの方が簡単なのでしょうか?
613 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 19:39
>>611 まだまだDirectXはとても無理。
SDKも難しいと思うが、なんとか頑張れ。
614 :
Visual名無しさん :2000/12/12(火) 19:54
>>611 DirectX を使うには WinSDK の知識は必須では無かろうか。
データ構造とアルゴリズムが先だと思うが。
616 :
611 :2000/12/12(火) 20:43
おぉ 早いレス有り難うございます。 >613 ありがとうございます 頑張ります。 >614 ふっと気が付いたのですが DirectX ってwin上でしか動かないのでしたね 失礼しましたさっさっとWinSDKを習います。 >615 アルゴリズムは学校で習いましたが データ構造とはどのような知識なんでしょうか? 英語での名前は何でしょうか?
617 :
newbe :2000/12/12(火) 23:17
趣味でエクセルVBAでプログラム組む程度なんですが メソッドとかプロパティって概念が、正直まったくピンと来ません。 数値入れるなら値段でバリュー価格が有るから range("A1").value ・・・とか書くのかなという認識しかありません。 今の内に理屈は組む以前にしっかり覚えてやっといた方がいいんでしょうか? それとも、そのうちわかってくるもんなんでしょうか。
618 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 00:10
C++Builderを使ってるのですが質問よろしいでしょうか? テキストの文字表示のことなんですが Memo1->Text="あああ" こうすると Memo1に 「あああ」って表示されますよね? 「あああ」という文字列のあとに改行して「いいい」と表示するには どうすればいいのでしょうか? 一応自分なりに Memo1->Text="あああ\nいいい"; やMemo1->Text="あああ"endl; Memo1->Text="いいい"; ってやってみたのですがうまくいきません。 どなたか教えていただけないでしょうか?
\n
620 :
618 :2000/12/13(水) 00:20
Memo1->Text="あああ\nいいい"; ってやっても出来ないのですが...
621 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 00:25
Memo1->Text="あああ\r\nいいい"; じゃないの? BCBもってないから想像だけど。
622 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 00:35
Memo1->Lines->Add("あああ"); Memo1->Lines->Add("いいい");
623 :
618 :2000/12/13(水) 00:47
Memo1->Text="あああ\r\nいいい"; にしたら出来ました! ありがとうございます!
ちなみにどうして\nでできないかというと、 Memoとかの内容は実装としてはCommaTextというCSVみたいな形式で 保存されているので。
WindowsShiftJISの仕様じゃないの?>624
626 :
621 :2000/12/13(水) 14:18
Winの改行がCR/LFだからでしょ。
>625@`626 そうですね。まちがっとりました ウトゥダ・・・シノウ
628 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 18:53
アセンブラのコンパイラとはx86やsh3やmipsなど CPUごとに種類があるのでしょうか?
629 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 20:57
アセンブラのコンパイラ!斬新な表現だ(藁 アセンブラはアセンブラソースをアセンブルするプログラムだよ。 CコンパイラはC言語ソースをコンパイルするプログラム。 CPU毎に違うが、Cコンパイラのインラインアセンブラの様に、 ユーザーからは隠蔽されている場合もある。
630 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 21:49
アセンブラソースって何。(笑) アセンブリ言語(CPU毎に違う)の処理系がアセンブラ。
631 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 21:57
>>630 あなたもちょっと違う
アセンブリをアセンブルするのがアセンブラ。
処理系ちゃう
632 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 00:14
Dos窓でbcc5.5つかってるんですけど、コンパイルエラーが表示されるとき、エラーが多すぎて最初の方の表示が流されてしまいます。どうすれば流されないようにできますか?
633 :
SAGE :2000/12/14(木) 00:21
>>632 コンパイルコマンドのうしろに | more
634 :
SEGA :2000/12/14(木) 01:05
>>632 DOS窓のバッファ数を増やすと上にスクロールできるようになる。
9xでできるかどうかは知らないけど。
自分はいつも下のバッチファイルを使ってる。
rem red.bat
rem \red.txtにリダイレクトしてエディタで開く
@echo off
if "%1"=="" goto usage
%1 %2 %3 %4 %5 %6 %7 %8 %9 > \red.txt
rem "open"する
red.txt
goto exit
:usage
echo red <command>
:exit
[EOF]
使い方
red bcc foo.c
636 :
>>634 :2000/12/14(木) 01:59
本当に使っているバッチか? 適当に書いただろ(藁
C:\> echo red <command> コマンドの構文が誤っています。 ...そりゃそうだ。俺もたまにやっちゃうんだよね。 フツーの文字のつもりで '<' と '>' を使っちゃうのさ。
>633 UNIXとそっくりですね。 とりあえずありがとうございました。
639 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 15:58
たくさんの関数で出来ているプログラムを作成しているのですが、楽にコンパイルする方法はないですか? BCC55です。
640 :
>639 :2000/12/14(木) 16:20
たくさんのファイルの事? BCC55 *.c -e出力ファイル名 ではダメ?
641 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 16:32
>640 そうです。たくさんのファイルです。 出力ファイルってなんですか?
642 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 17:13
>>639 makefileの作り方勉強しなさい。
ちなみに、俺はよく知らん。
643 :
44 :2000/12/14(木) 17:22
>>641 出力ファイルの部分が、なんとかexe になります
bcc32 を引数なしに実行すると説明が出ます
>640、642、643 ありがとうございまいした。
645 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 23:23
もう内容がウルトラ初心者じゃないよね・・・
646 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 03:49
プログラム初心者です。 getchar()を使って、標準入力からの文字の数を数えたいのですが 「標準入力」という言葉の意味がわかりません。 一応プログラムは組んだのですが、 DOSのコンソール画面からキーボードを打っても何も反応がありません…。
>646 ソースきぼん
648 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 06:21
winプログラムのリソースってなんですか? システムリソースじゃなくてrcでコンパイルしてアプリに組み込むやつです。 使用するときだけメモリ上にロードされるって聞いたんだけど、 リソースが何MBになっても起動速度とかメモリ使用量とかは変わらないんでしょうか。
649 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 07:55
この冬休み中にプログラミングをしてみようと思って、C++ビルダーを ダウンロードしたんですが、コンパイルってどうするんですか? \C\bcc55\BINになにやら.exeというのがいっぱいあってどれをどうすればコンパイルできるのか どうか教えてください。 #include<stdio.h> int main() { printf("Hello World\n"); return 0; } ファイル名はHello.cです。 こういうのをコンパイルしたいんですが。
>648 そのリソースはプログラムで読み込まなければ、メモリには読まれません。 なわけで、読み込まないかぎりは、起動時間やメモリ使用量はほとんど変わりません。 もっとも、読みもしないリソースをくっつけることもないだろうから、必要なときに 必要なだけ読み込むように。
>649 残念ながらそれはC++ビルダーではないようです。 ボーランドC++コンパイラだね。 コンパイルするにはコマンドラインから bcc32 hello.c と、打ってみてください。
652 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 15:04
ClassA *cA=NULL; と宣言したのを消す時に if(cA){delete cA; cA=NULL;} とするのは何か根本的に間違ってるんでしょうか? VCのデバッグモードで怒られてしまいます。
653 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 15:12
問題なく動くけど? コンパイルエラーか実行時エラーか、エラーの内容教えて。
654 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 15:21
Expression: _BLOCK_TYPE_IS_VALID(pHeap->nBlockUse) 宣言時・消去時は確実にNULLにしてるんですが、、
655 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 15:31
ClassA の宣言と、デコンストラクタの内容が分かればもチョット答えられると思うのですが…。
cA を使いまわしていて、NULL かそうでないかに意味があるなら 以下の話は無用になるけど... cA == NULL のとき、いきなり delete cA しても大丈夫だよ。 (言語仕様には "pointer with the value zero" と書いてあって NULL とは書いていないから、やいのやいの言う人が居そうだな)
C++ではNULL==0==(void*)0が保証されてるので大丈夫。
658 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 17:39
プログラミング言語C++(第3版)の通称を決めてください。 K&R@`ARMみたいに呼びやすいものにして下さい。
660 :
@ :2000/12/15(金) 18:11
C++ストラップ
661 :
名無しさん@お腹いっぱい。 :2000/12/16(土) 02:27
とにかく何もやってないゼロからだと、結局なにがとっかかりやすい?
662 :
649 :2000/12/16(土) 06:29
bcc32 hello.c ってすると、hello.obj hello.exe hello.tds とか言うファイルが出来るだけで、実行されないんだけど、もう一回おしえてください。
663 :
名無しさん@お腹いっぱい。 :2000/12/16(土) 06:37
次にhelloとだけ打つ
664 :
名無しさん@お腹いっぱい。 :2000/12/16(土) 08:31
./hello
665 :
>664 :2000/12/16(土) 13:35
'.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
>662 わかったのかな? bcc32はコンパイラだから、コンパイルはしてくれるけれども実行はしてくれません。 出来上がったhello.exeが実行可能ファイルです。 実行するにはコマンドラインから hello と入力します。 ほかのファイルですけども hello.objは、分割コンパイルしたときに実行ファイルをつくるときに必要になります。 今は、分割コンパイルしていないので必要ないです。消してもかまいません。 hello.tdsは、デバッガ(td32.exe)でプログラムを実行するときに あると便利なものです。が、td32を使わないなら必要ないので 消してしまってもかまいません。
667 :
VB厨房 :2000/12/16(土) 14:13
bcc32だと >bcc32 hello.c -o hello とすると、hello実行ファイルがつくれるはず なにも指定されてナイト、a.out(a.exe)ができていませんか? デフォルトではaファイルができますよ。
668 :
VB厨房 :2000/12/16(土) 14:15
hello.exe ができてるのか、しつれいしやっしたー
>a.out ほんとにVB厨房なのか?
671 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 03:13
a.b.c.dとあるとします。eがcの型のポインタでe = &(a.b.c)としました。 このあと*e.dとしてdを参照することが可能でしょうか?ちょっと実験してみてうまくいったような気がしますが、今一つ不安です。コメントお願いします。
可能です。
あ、多分*e->dでしょ?
それと、カッコはいりません。 e = &a.b.c; 余計なお世話だろうけど。
675 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 03:48
>672さん ありがとうございました。ただ実験で*e.dみたいなことをしてうまくいったようなきがするのでちょっと不安です。
676 :
675 :2000/12/17(日) 03:59
いま試して見ました。やはり*e->dではダメみたいです。思うにまず->の方が*より強いし、(*e)がeの指す先a.b.cそのものであるからa.b.c.dと同じく(*e).dとなって然りということではないでしょうか?
*e->dはdに対して参照する意味を持ちます。 dがポインタじゃないのなら、 単にe->dでだめですか?
ついでに、(*e).d は e->d と同じ意味です。 優先順位を変更するための括弧を付けるのが面倒だと言う理由で、 演算子'->'は存在します。
679 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 05:37
変数宣言時にstaticをつけると静的変数ということで一定の場所に メモリ確保されるのはまぁ分かります。 だけど、関数宣言時にstaticをつけたら静的関数? 何のために使うんでしょう?
staticで宣言した関数は、ほかのモジュールからの参照ができません。 なので、あるモジュールの中だけで使うローカルな関数を書くときに使います。
681 :
679 :2000/12/17(日) 06:17
>>680 デバドラを読むとstaticがたくさんあるのはそのためですね。
名前の衝突がこれで防げるのか~。
ありがとうございます。
C++ならstaticじゃなくてnamespace使え。 これならいざというときには呼び出すことも可能だ。
683 :
>682 :2000/12/17(日) 16:15
仕様変更に強くするという意味から、それはあまりお勧め出来ません
684 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 16:21
staticの方が呼びようがないんだから仕様変更できないじゃん。 namespace名はふつーユーザには非公開だろ。 そういう意味じゃないのか?
685 :
684 :2000/12/17(日) 16:27
ああ、ごめん。オレの勘違いだ。 そういう設計をしてるのね。 C++なら他から絶対に呼ばれたくないような関数は クラス内に閉じ込めると思ったもんでな‥
686 :
684 :2000/12/17(日) 16:31
つまり名前の衝突を防ぎたいだけのためにstaticを使うのは ソースの分割ができなくなったりして、かえって仕様の変更が つらくなるのでは?と思ったということ
687 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 16:49
namespaceは一種のクラスと見る事も出来ますが ならばクラスとして設計した方が何倍もいいでしょうって事? なら同意 682さんは >これならいざというときには呼び出すことも可能 と書いていますから、そんないざという時に呼ばれるかもしれない ようなのは嫌でしょうと 683は言ってるのでは?
namespaceつかってて、いざというときでもナンでもないのに、呼ばれちゃうのはイヤだな。 でも、だれかが勝手に呼んだりするんだよね、何人かで開発してると。 staticな関数のせいでファイルが分割できないのは、根本的な問題を抱えてる気がする。 「namespaceが一種のクラス」なんて、クラスの解釈を拡大しすぎてて原型をとどめてないな。 まぁ、どっちにしても、コーディングスタイルの話にならない程度にやっちくり。 コーディングスタイルは、フレームになるからな。
689 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 17:28
682だけども‥ C++ならば通常他から呼ばれたくない関数は684さんのいうとおり クラス内に閉じ込める。これは大前提。名前の衝突もまず問題ない。 てことはstaticにしたい関数というのは継承関係のない 複数のクラスから呼び出したい関数ということではないの? 他にstaticな関数を使わなくてはいけない局面てあるのか? それの名前の衝突を避けるためにstaticな関数にしてしまうということは その複数のクラスは同一のファイル内にしか記述できなくなってしまう。 それは不便でないかい? つまり「いざというとき」ってのは、それぞれのクラスまたはひとつの クラスをファイル分割しなくてはならなくなったとき。 もちろんそんな関数はユーザ(クラスを利用する他のファイル)用の ヘッダファイルに公開したりはしない。 呼ぶときには自分(クラスの管理者)が積極的に呼ぶのであって まちがっても「呼ばれるかもしれない」なんて設計にはしない。
>それの名前の衝突を避けるためにstaticな関数にしてしまうということは >その複数のクラスは同一のファイル内にしか記述できなくなってしまう。 >それは不便でないかい 分けるほうは問題ないんでないかい? staticな関数がstaticな変数を参照してるとかなら分けられないかもしれんが、 今問題にしてるのは、名前の衝突だろ?
namespaceの話が出ているのでついでに聞きますが、 using namespaceの指定をデフォルトの状態に戻すにはどうしたらイイのでしょう?
デフォルトの状態? … { using namespace hogehoge; //ここはhogehogeを使うぞ状態 } //ここはそうでもない状態 … こんなのでいいのか?
>690 > 分けるほうは問題ないんでないかい? まさか両方のソースにstaticな関数をコピペ? だとしたら、後の保守を考えるとすげーいやなんですけど… それならnamespaceの方がぜんぜんましに思える。
694 :
662 :2000/12/18(月) 07:22
お~っ動きました。感動(T-T) どうもありがとうございました。 ところでまた質問なんですが、2乗とか3乗はどうやって表現するんですか? #include <stdio.h> int main() { int a=2; printf("%d"@`a^2); return 0; } これだと0って表示になってうまく動いてくれません。
695 :
680 :2000/12/18(月) 07:58
>>679 さん
>>682 さん
元々の質問で言語が限定されていないからCを前提として
>>680 の答えをしました。
C言語の場合、私はstatic関数宣言を「本当に外から呼ばれたくない処理」の意味で
使うんで、関数名衝突回避のために使うという発想はしないなあ…。
関数名はstaticであろうとなかろうと、一意になるように決めてます。
C++が前提という場合は、クラスをちゃんと使えば、
「勝手に呼ばれたくない処理の隠蔽」も「関数名(というかメソッド)の衝突回避」もできるから、
C言語の意味でのstatic関数宣言をC++で使う場面はほとんどない。
namespaceはクラスライブラリ同士のクラス名衝突回避用途だと思ってます。
696 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 09:38
>>694 C@`C++には、BASICとは違って、べき乗の演算子はありません。
^はビット演算のxorですからその例だと2^2だから0が表示されます。
べき乗を表現するには、#include <math.h> してpower関数を使うとか、
自分でべき乗の関数を作って使うとか。
697 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 09:45
もしかしたら動くかも int ipow(int a.int n) { int m=n /2 ; if(m) return ipow(a@`m)*ipow(a@`n-m); return a; } int main() { int a=2; printf("%d"@`ipow(a@`2)); return 0; }
>>689 おいおい、ヘッダーを隠したところで同じ名前の関数があったらリンクされちゃうぞ。
それを防ぐためのstaticなんだが。
staticというのは(.cをコンパイルした結果できた.oの)中に静的に取られて
リンク時に解決されるわけではない。という意味だよ。
699 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 22:38
struct A{ struct B *b; } struct B{ struct A *a; } このときstruct A *x;として、x->b->a->b->aというような使い方はできるでしょうか?もちろんデータはあらかじめ入力してあります。
701 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 23:06
>700 ま・・・まじですか!!?なんだかエラーがでます。それじゃこれは単なるコンパイルエラーなのか・・・
702 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 23:12
>700 動くようになりました。単なる定義ミスでした・・・(合掌)
703 :
ERROR:名前いれてちょ :2000/12/18(月) 23:13
void make_lc(char *str) { char *s; for(s=str; *s; s++) { if ((*s >= 'A') && (*s <= 'Z')) { *s = (*s) + 'a' - 'A'; } } } このプログラムの意味がわかりません。 どうか教えてください
704 :
679 :2000/12/18(月) 23:17
staticネタの張本人です。 LinuxのデバドラをCで作ってて思ったネタです。 Linuxのデバドラは~.oなので、あとから動的にリンクされてくし いちいち関数名がぶつからないかチェックするのも面倒だし と思ってstaticを使えば解決かな~と自己完結してました。 ま~思惑通り動いてるからいいや。
705 :
ty123 :2000/12/18(月) 23:18
>>703 AからZをa...zにするみたいだね。
if ( ( *s >= 'A' ) && ...は
ctype.hにあるisXXX系の関数を使うとわかりやすいよ。
706 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 23:26
>>703 void make_lc(char *str)
{
char *s;
int i;
for(i=0 ; str[i] != '\0' ; i++)
{
if((str[i] >= 'A') && (str[i] <= 'Z'))
{
str[i] = (str[i]-'A')+'a';
}
}
}
707 :
703 :2000/12/18(月) 23:38
ありがとうございます。初心者な私にもわかりやすく、 教えてくださって 感謝です!!
うーん。 HSPは薦めない方がいいと思う。 こんな事言ったら、批判が来るかもしれないが、 DelphiなどのRAD環境でないと、初心者にはとっつきにくいと思う。 自分はDelphiから始めたが、C++にもすんなり入れた。
>>708 覚えやすい環境は人それぞれ
自分が「この方法でわかった」
って方法が他の人には通じなかったりしますし
まぁ本人のやる気次第ではないでしょうか
ってHSPと全然関係ない内容ですね。すみません
710 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 05:28
MIDIファイルの再生方法が分かりません 誰か教えてください お願い お願い 尾根がぁーイ 使用言語:C言語
MMを見ろ
まったく関係ない話なんですが、hogeってどういう意味なんですか?
713 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 08:27
>711さんへ MMってなんですか? 本当に分かりません。 怒ってますか? あなたは怒ってますか? 本当にお願いです。教えてください。
714 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 08:41
715 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 09:39
>>712 UNIX文化では良く聞きますねぇ。HogeHogeと書いて「ほげほげ」
と読むらしい、他にもteteってのもありますね。
由来は知りません。だれかご存じです?
あと、中身が空を表す変数名で"HumptyDumpty"とか使ったり
します?これは鏡の国のアリスが元らしいですね。
716 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 10:01
>>712 @`
>>715 深く考えなくていいよ。
サンプルコードを書いていて「適当な変数名や関数名」を用いるとき、
考えるのが面倒だから「ほげほげ」とかにしてるだけ。
英語の文献では foo@` bar@` baz とかがよく使われている。
4つめ以降はなんていうの?
その手の変数を使うときに4つも必要か? 4つ以上、わけわか変数があると読めんぞ。(笑)
719 :
716 :2000/12/19(火) 10:36
>>718 のいうとおり。まず、4つ以上出てくることがほとんどない。
あったとしても、人によってfoobarとかquuxとか色々分かれてるから、
多分、誰もが知ってるような決まりきった言い方は3つまでなんじゃない?
foo@`zoo@`bar@`buzまではたまにつかうな。
721 :
>717 :2000/12/19(火) 11:32
foo1@`foo2@`foo3@`foo4@`foo5@`...@`foo9@`fooA@`fooB@`
odoroki@`momonoki@`sansyonoki
723 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 12:45
正式には: foo bar baz zot qux ...
724 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 13:18
6つ目以降は?
725 :
虹 :2000/12/19(火) 13:42
>>715 それは初耳だが、多分Emptyからきたダジャレじゃない?
oma@` emo@` nar
727 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 16:25
728 :
名無し高校生 :2000/12/19(火) 16:37
最近Cの勉強をはじめたばかりなんですが、 友人がBASICやってて「なあ、CとBASICってどう違うんだろ?」 って聞かれて、「うーんCのほうができたプラグラムが速く動くんじゃないか?」 と適当に答えてしまいました。 実際は何かCとBASICで決定的に違うことってあるんでしょうか?
やり方に差があるだけで、出来る事に差はありません
730 :
名無し高校生 :2000/12/19(火) 16:47
ということは簡単なBASICのほうがいいということですか?
731 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 16:48
なんでVC++(MFC)ってコントロールを操作するのに、 CListBox *lbx = (CListBox*)GetDlgItem( IDC_LIST1);とかやったり、 メンバ変数のカテゴリを値にしたりコントロールにして、UpdateData()とか、 m_strEdt.foo();とかやったり、 いくつもコントロールのコントロール方法があるんですか? どれを使おうか悩んでしまうし、時にはコントロール変数を割り当てないと 実現できない機能があったりして、頭にくるときがあります。 なにか由縁とか歴史とかあってそうなっちゃったんでしょうか。教えてください。
732 :
名無し高校生 :2000/12/19(火) 16:58
731のVCを使ってる方にも聞きたいんですが、 VBとVCでは、VCじゃあないとこれができないよ。というのは何があるんですか?
733 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 17:07
VBで作れないものの例 ・デバイスドライバ ・VBのランタイムを使わないソフト
734 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 17:22
>>731 目的を達成できるなら、手段はどうでもよい。
但し、目的にはソースの可読性、保守容易性の向上もあるので
わかりやすい方が良い。
東京から大阪に行く方法はたくさんの手段があるが、途中で名古屋に
よりたい、となると、いくつかの手段(飛行機など)は不可になる。
GetDlgItemを使うのは低レベル(Win32API寄り)、オブジェクト変数を
使うのは高レベルなやりかた
735 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 17:32
VBで作れないものの例 その2 ・汎用性のあるプログラム ・OS ・サーバー(これって、いけるかも・・) ・ユーザ定義コールバック関数(これもいける?) うぅ、あんまり思いつかない・・・
736 :
名無し高校生 :2000/12/19(火) 17:37
ソケットプログラムはできるんですか?
737 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 18:09
738 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 18:13
ハッキングってどういう風にやるの
739 :
名無し高校生 :2000/12/19(火) 18:21
友人はCでネットワークゲームを作ってましたんで、おそらくCだと できるんだろうなと思い、BASICはどうなんだろうと思っただけなんです。
亀レスだが もう少し前から読め。あそこではC++のnamespaceの話をしている。
VBってDLL書けるんですか?
>>735 >ユーザ定義コールバック関数(これもいける?)
Addressof演算子というのがあるらしい。
使ったことないけど
743 :
731です。 :2000/12/20(水) 00:32
732さんの質問へ。 VBだと、今困っているのは文字を傾けるとかできないこと。 無理やり実現するには、APIを利用しなければならないが、かなり面倒。 VBでは「文字を簡単に表示させる」ことが第一目標になっているみたいです。 VCだと文字を表示させるのに傾きやら間隔やらなんやらかんやら いちいち指定しなければならない。サンプルプログラムが手に入り、 一度やってしまえば後は楽ではあるが、正体不明の引数があると長いこと悩んだりする。 ワタシはこんな印象をもっています。p.s.734さん有難うございました。
744 :
>741 :2000/12/20(水) 01:30
ActiveXのみ。通常のDLLはVCで書くしかないね。
745 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 01:32
スミマセン、知らずにスレを立ててしまいました。こちらでお聞きすれば良かったのですね。。。 先日中国人からVCDを買ったんですがウチのパソコンじゃ見れないんです(;; フリーソフトでダウンロードして見ようとしたのですが、窓の杜?では見当たらなくて…。 どこかに落ちてるサイトを知りませんか? 知ってる人いたらレス下さい。>< お願いします・・・。
746 :
>745 :2000/12/20(水) 01:49
そんな彼方にはWin板が良いのでは?
747 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 01:56
745です。 2ちゃんのWin板ですか? よくわかりませんがとりあえず行ってみます。 ありがとうございます。<(_ _)>
748 :
ポインタポインタ :2000/12/20(水) 12:06
ポインタのポインタがよくわかりません。 #include<stdio.h> #include<conio.h> int main() { int a@`*ptr@`**ptr2; a = 10; ptr = &a; printf("%d\n"@`*ptr); ptr2 = &ptr; //ここで&ptrとしなくてもptr自体でアドレス持ってるんじゃないですか? printf("%d\n"@`**ptr2); getch(); return 0; } お願いします。ところで、ポインタポインタってよく使いますか? 使い道がわからないっす。
749 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 12:33
>>748 使いますよ。
ポインタ型配列を動的に取得したい場合なんかですね。
int **ptr;
int ii;
ptr = malloc(sizeof(int*) * 10); // ポインタ配列10個
for (ii = 0; ii < 10; ii++){
ptr[ii] = malloc(sizeof(int));
}
あと、ポインタ型配列を関数に渡したいときとか。
色々あるよ。
750 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 12:47
>>748 ptr2 = &ptr;
は
*ptrはaのアドレスを持っている。
*ptr2はptrのアドレスを持っている
でいいのかな。
751 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 16:28
>708さん 実は私もDelphiを(趣味で)ずっと使っているのですが、会社では全く使うチャンス がありません(ただのOLなのでせいぜいVBAです)。 そこで自分のレベルアップの為に、C++を勉強しようと思い、BCBの購入を検討して います。 C++にすんなり入れたという事ですが、全くCを勉強した事が無くても大 丈夫そうでしょうか?
>>751 > BCBの購入を検討しています。
コンパイラは買うな。無料のコンパイラがあるのでそれを使え(gccとか)
そんなのに金を出すなら本を買え。
> 全くCを勉強した事が無くても大丈夫そうでしょうか?
目的と情熱さえあれば、習得可能。
>752 とりあえず氏ね DelphiとBCBはまったく一緒 レベルアップにはならないと思うが C++に慣れるにはよいね。特にDelphi使っていたならよいでしょう。
754 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 20:42
>>396 できねえぞゴルァ(゚д゚)
嘘ですできるなら教えてください
チョトワラタ<753@`754
>>751 753さんの言うとおり、
Delphiとまったくいっしょです。
C++はある程度理解できるようになるので、興味があるのならお勧めですよ。
Cは、勉強したければしなしゃい。
757 :
へっぽこ :2000/12/20(水) 23:33
いま、VCでプログラム組んでるんですけれども、 BMP画像を取り込んで、そのBMP画像の画素値からRGB値を それぞれ抜き取りたいんですけれども、よくわかりません。 どなたか教えてください。 画像をとりこむところまではいけました。 明日までにやらないとー・・・
758 :
へっぽこ :2000/12/20(水) 23:34
いま、VCでプログラム組んでるんですけれども、 BMP画像を取り込んで、そのBMP画像の画素値からRGB値を それぞれ抜き取りたいんですけれども、よくわかりません。 どなたか教えてください。 画像をとりこむところまではいけました。 明日までにやらないとー・・・
759 :
へっぽこ :2000/12/20(水) 23:39
ありゃ・・・2重書き込み・・・ほんとにへっぽこ・・・ RGBの値がそれぞれほしいんです。 たとえば、(1@`1)の画素のRとGとBをそれぞれです 簡単な方法教えてください
760 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 23:47
>>759 取り込む所までいったんなら、
DIBにでも変換して、直接読み取るのが手っ取り早くて良いと思うよ。
>明日までにやらないとー・・・
今からやっても無理そうだな。
761 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 23:53
あ、画像がDCに存在する状態なら、 単にGetPixel()だけで良い筈。>759
762 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 11:04
皆さん、レスありがとうございます。 752さん、私はたぶんその方法だと挫折しそうです。 でも目的と情熱さえあれば、 習得可能という言葉に力づけられました。がんばります。 753さん、昨日初めてこの板を読んだので、ちょっと前のコメントに付けてしまい ました。 今後はなるべくここも読むようにするので、すぐにレス付けられたら いいなあ、と思ってます。 とりあえず、753さんと756さんのレスを読んでBCBを購入してみようかな、って 思ってます。 高いですけど、お洋服がまんすれば買えますしね。 ありがとうございました。
763 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 11:12
>>751 判ってると思うが、DelphiとBCBで「ほとんど」同じなのは
統合開発環境の使い方と、VCLの構造だよ。
764 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 16:25
C++で、MD5のようなハッシュ関数を使うことは出来るのでしょうか? あるファイルを読み込んで、そのハッシュを得るという関数が必要 なのですが...
765 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 16:35
>>764 /usr/src/sys/crypto/md5.[ch]
あたりを使えば?(FreeBSD 4.x)
766 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 17:13
>>765 さん
そういえば、/usr/include/sys/にmd5.hってありますが、どうやって
関数を使えばいいのでしょうか?
767 :
むぎ茶 :2000/12/21(木) 19:07
RTFM man MD5Init
768 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 19:20
volatile修飾詞ってどういうときに使うんですか?
769 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 19:31
非同期で別のタスク・スレッドから更新される可能性のある 変数に使う
770 :
ty123(765) :2000/12/21(木) 19:31
>>766 丁度いいサンプルがある。
md5コマンドのソース。
http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/md5/ 失恋して悲しいとこなんでもっと詳しくおしえてあげる。
MD5Fileって関数を使うと出来る。
もう、大サービス。
サンプルコードだ!
感謝してくれ。
begin 644 md5test.c
M+RH*("H@O+K.^+6MQ["DSDU$-:7!I:>EPZ6OI;6EX*3.I;6E\Z77I>L*("H*
M("H@1G)E94)31"`T+GBDQZ3/+6QM9*3RQ@`FRPZ2YI.O)K@`W7I*RDHJ3KH:@`*
M("HO"B-I;F-L=61E(#QS=&1I;RYH/@HC:6YC;'5D92`\<W1D;&EB+F@^"B-I
M;F-L=61E(#QS=&1A<F<N:#X*"B\J('-Y<R]T>7!E<RYHI@`YI;F-L=61EI@`_)
MK+_<I.FDMZ2D("HO"B-I;F-L=61E(#QS>7@`O='EP97@`N:#X*(VEN8VQU9&4@
M/&UD-2YH/@H*=F]I9`ID:64H(&-O;G-T(&-H87(@*F9O<FUA="P@+BXN("D*
M>PH)=F%?;&ES="!V;#L*"@EV85]S=&%R="@@=FPL(&9O<FUA="`I.PH)=F9P
M<FEN=&8H('-T9&]U="P@9F]R;6%T+"!V;"`I.PH)=F%?96YD*"!V;"`I.PH*
M"7!R:6YT9B@@(EQN(B`I.PH)97AI="@@@`2`I.PI]"@II;G0*;6%I;B@@:6YT
M(&%R9V@`L(&-H87(@*BIA<F=V("D*>PH):68@*"!A<F=C("$](#(@*0H)>PH)
M"61I92@@(J75I:&EI*7KS+ZD\KO8Q.JDMZ3&I*^DP*2UI*2AHR(@*3L*"7T*
M"@E["@D)8VAA<B!B=69;@`3(X73L@+RH@I+.DSJ2OI.FDI*3.I;6EI*6ZI*RD
MHJ3LI-!/2R`J+PH)"6-H87(@*G`@/2!-1#5&:6QE*"!A<F=V6S%=+"!B=68@
M*3L@+RH@8G5FI@`NWZ[+@`I*S*UJ3K("HO"@H)"7!R:6YT9B@@(B5S(#T@)7-<
M;B(L(&%R9W9;@`5TL('`@*3L@+RH@I**DR*3/<')I;G1FI+FDZZ3`I+$@*B\*
2"0ER971U<FX@@`#L*"7T*"GT*
`
end
771 :
ty123 :2000/12/21(木) 19:37
uudecodeするの面倒くさいかもしれないんで 本質の部分だけそのまま書いとくよ。 char buf[128]; /* このくらいのサイズがあればOK */ char *p = MD5File( argv[1]@` buf ); /* bufに結果が返る */ printf( "%s = %s\n"@` argv[1]@` p ); /* あとはprintfするだけ */
772 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 23:01
linuxだと、一つのディレクトリに1万個とかおくと全体的に重くなると聞いたのですが、 wwwcounterを使っているんですが、dataファイルの数が1万個を超えそうなんです。 そこで、Count.cgi?df=sample.dat&dir=dir1 のように したら、data/dir1/sample.dat なカウントファイルを使うみたく ディレクトリを指定したいのですが、 少しの改造で可能ですか? よろしくお願いします。。
773 :
772 :2000/12/22(金) 00:10
src/utils.c の (*str == '/') || を消してmakeし直したら解決しました。。
774 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 02:22
C++について質問です。 class A //これは出来ますが { public: A *List[256]; void func(A a); }; template<class T>class BB { public: T *List[256]; void func(T t); }; BB<BB> C; //これが出来ません。 /* どうしたらいいのでしょうか… */
なんでテンプレートの型がテンプレートなのよ?>774
776 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 03:25
777 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 11:22
macのデスクトップに雪を振らせるソフトがありますが、 あんなことやってみたいです。 何からすれば良いですか? c言語覚える事?
778 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 11:40
>774 そりゃ無理だろ。 やるなら BB<A> C; とか BB<BB<int>> C; じゃないと。
779 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 18:26
780 :
デフォルトの名無しさん :2000/12/22(金) 19:24
ディスクトップの窓ハンドルを取得し、あとは直接描画すればOK・・・て言葉が理解できれば作れるかと
×ディスクトップ ○デスクトップ
>777 君には無理だ。
783 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 22:47
C++でsndPlaySoundを使って.wavを単純に再生できることは 確認しましたが、sndPlaySoundで.wavを同時再生することは 可能ですか? 試したんですけどうまくいきませんでした。 片方がもう一方の音を消してしまいます。 SND_NOSTOPってフラグがあるから可能だと思うんですけど。
>>783 DirectSound使えば出来るよ。
SND_NOSTOP
If a sound is currently playing@` the function immediately returns FALSE@` without playing the requested sound.
だろが。ちゃんと読め。
785 :
777 :2000/12/22(金) 23:05
777 実際にやるかどうかなんて考えず、軽い気持ちで聞いたものの、 質問に答えてくれた人の中で、言ってる事の意味が全部理解出来た文は、 「君には無理だ。」だけだ・・。 779さんはなんか冗談言ってるみたいだけど、どこが冗談なのかもわからん・・・。 780さん、ああ、デスクトップの窓ハン取得して、ね。あとは直接描画、ね、ふんふん・・。 ・・分かんねーちゅーの(^^) その窓ハンドルを取得するのにはどうしたら・・ーー;直接描画ってタブレットで出来ます?? 実はこの板に来るのも始めてざんした。 うふふふふ・・・。(壊れた)
786 :
774 :2000/12/22(金) 23:26
無理と言うこが解りました。どうもありがとうございます。 何でもListに格納できるようにしたかったんですが、 自分自信(BB)の型をListに格納できなくて困っています。 なにか方法は無いのでしょうか?
787 :
778 :2000/12/22(金) 23:53
>786 そもそも BB は型じゃねぇ。テンプレートだ。 要するに何かのリストのリストをつくりたいわけだろ? さっきも同じ例を書いた気がするが、例えば「intのリスト」のリストを作るんなら BB< BB<int> > lst; だよ。
788 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 01:46
ウルトラ初心者の質問です、 (void *) とか (void **) ってどういう意味でどんなときに 使うんでしょうか。
789 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 01:52
>>788 渡されるポインタの型が決まってないとき。
そう書かないとコンパイラがポインタの型が違うとか文句言うから。
790 :
774 :2000/12/23(土) 01:52
>787
BBのリストを作りたい場合はどうするんでしょ?
BB<BB<BB<…>>>これは無理ですよね…
>>774 のclass Aみたいに自分自信のリストが作りたいのです。(内部で再帰的な処理をするので)
それで、Aに変数や関数を付け加えて拡張したいのですが、
class D:public A
{
public:
int data; //変数追加
int func(int index) //関数追加
{
return List[index].data; //ListがA型なので当然無理
}
};
Listの型を変えようにも変数はvirtualに出来ませんし。
それで何でも取れるようにテンプレートを使ってみたのですが…
/* どうしたらいいのでしょうか? */
ちなみに D *d; A *a=d; が出来るという条件があるので、Aを継承しなければなりません。
792 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 02:01
return ((D*)List[index])->data; でいいんじゃないの?
793 :
名無しさん@1周年 :2000/12/23(土) 02:26
複数のスレでの書き込みをボクであるとズバリ指摘されたのですが、 どうやってるのですか? ○○スレ12=××スレ34 みたいなかんじで。
794 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 02:59
そゆ瑣末なことでテンプレート使うと今後ぐちゃぐちゃになるよ>774 基本文法を勉強しましょう
795 :
774 :2000/12/23(土) 03:29
>792 実は関数や変数追加の他に、さらに別のクラスを継承しているのです。 ①class D:public B@`public A{int data;}d; //簡単な例ですが ②class D:public A@`public B{int data;}d; Listに格納する際にA *に変換されるため、((D*)List[index])->data;をやったとき ①と②ではdataの位置が違うので、継承の仕方によっては実行時にエラーが出てしまいます。 (ちゃんと確認はしていませんが…) と、いうことでキャストはボツに…
>794 テンプレート以外に思いつかなかったもので…
>793 1周年だからじゃないですか?
798 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 05:01
>>795 なんでDの定義が2種類あるんだよ…。
(D*)キャストはDの中で使う分には大丈夫だぞ。
799 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 06:07
windowsNTサーバで掲示板などのCGIを使いたいのです ダウンロードしてきた.cgiを.exe?のやつに コンパイルできるソフトとかあるんでしょうか? それかプログラムのソフトがあれば教えて下さい よろしくおねがいします~…!
800 :
774 :2000/12/23(土) 06:47
>798 ①で宣言した場合と②で宣言した場合。という意味ですm(_ _)m 確認してみます。 Listがvoid *だとダメなんでしたっけ?
801 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 15:07
JAVAで、二本の曲線で囲まれた部分に色を塗るにはどうすればいいですか?
802 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 15:59
>>799 Perl→exeは基本的に無理と考えた方がいいです。
ActivePerlとか入れればcgi動かす事はできるかも。
>>800 宣言をどっちかに統一しましょう。
>>801 時分でどっかからflood fillのアルゴリズムでも探して下さい。
803 :
801 :2000/12/23(土) 16:44
関数はないんですか?
804 :
わかんないからこわい :2000/12/23(土) 17:06
805 :
名無しさん@夢いっぱい :2000/12/23(土) 21:54
ウルトラ初心者の者なのですが、C言語で次のことが分かりません。 int func(void); //プロトタイプ宣言 extern int func(void); //プロトタイプ宣言 externを付ける場合と付けない場合にはどう違うのでしょうか。
806 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 21:58
>805 主にその関数(または変数)が別のソースファイルに入っていることを コンパイラに知らせるためにexternを使います。
807 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 23:24
関数の場合は意味無し。
808 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 23:27
>>807 Cの場合はある。
extern してないと引数が間違っててもアホコンパイラがエラーを出さない。
C++なら自動的にコンパイラがチェックやるんだっけ?
809 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 23:38
ウルトラ初心者らしい質問です。 Cで関数を作成するときに、returnを書く位置はその関数の一番最後じゃないといけないですか?使い終わったメモリを開放するのに途中でreturnをかけたほうが都合がいいのですけど。
810 :
名無しさん@お腹いっぱい。 :2000/12/23(土) 23:51
>>808 externしてなくてもプロトタイプ宣言があればコンパイラの引数チェックはできる。
C++ならプロトタイプ宣言がない関数は呼び出せなくてエラーになる。
>>809 returnは最後でなくてもいい。
811 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 00:09
812 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 00:17
>>799 は自分でサーバを開設してそのサーバーで掲示板を運営する方法を聞いてるんじゃないの?
>>799 そのcgiがPerlなら、たぶんそのまま使える。
(HTTPサーバは、IIS?@`Apache?)
814 :
ウルトラ初心者799 :2000/12/24(日) 01:57
ふむふむ cgiがPerlならそのまま使えて Perl→exeは基本的に無理で…と。 いろいろありがとうございます~!>all プロバイダがwindowsNTサーバなので設置から何から サッパリわかんなくて困ってたんです
815 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 02:26
二つばかりbcc55について質問です。 まずreturnについてですけど、上で言われた通り途中にreturnを書きましたが、警告ができてきます。これは気にする必要はないのでしょうか? 二つ目。次のようなエラーメッセージがでました。 ”実行されないコード” これはどうすれば解消することができるでしょうか?
816 :
815 :2000/12/24(日) 02:33
>810 実行されないコードは、returnがある文の次の文でした。そこでreturnを関数の一番後ろにもっていったところこのエラーメッセージは消えました。やはりreturnは関数の一番最後でないといけないのではないでしょうか?もしくは処理系によって違うのでしょうか?
817 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 02:40
>>816 return は関数から抜ける命令。
当然 return 以降のコードは実行されない。
”実行されないコード” の部分ってどういうコード書いてある?
コンパイラがエラー出すくらいだからよほど重要な処理なんじゃない?
818 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 02:45
そりゃreturnでその関数から抜けるから、returnに続くコードは実行されないよね。 途中でreturnしても文法的には問題ないし、 fp=fopen("hoge.txt"@` "r"); if(!fp)return; って感じで途中でreturnすることはよくやる。 関数の最後にreturnが無ければいけないのではなくて、returnがあるところが処理の流れの最後なわけ。 ちなみに、実行されないコードっていうのはエラーメッセージではなくて警告ではないのかな。
あ・・・・すいません、警告の間違いでした。
820 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 03:36
VC6.0の「新規作成―コンソールアプリケーション」で、 何もしないmain関数だけのプログラムをビルドした場合 150KBものサイズになるんですが、なぜですか??? サイズ小さなツールをVCでつくるためには、どうすれば 良いのか教えてください。
>820 とりあえず、Releaseでビルド
mingw32のCRTLIB版で作成すれば物凄く小さくなる。(場合もある)>820
でかくなるのはデバッグ情報が付いているため。 だからこれらを付けないようにコンパイラの設定とリンカの設定を変えればよい。 最適化の設定もサイズ優先にするともう少し小さくなるかも。 main()しか無いならあまり変らないけど。
824 :
徳川家康 :2000/12/24(日) 07:39
暗号化ファイルの暗号を解析するツール求む
ホトトギスが鳴くまで待っててね♪
826 :
名無しさん@お腹いっぱい。 :2000/12/25(月) 07:49
windowsx.hに以下のようなマクロを見つけたのですが #define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp)) lpはLPARAM型でLONGの32bitだと思うのですが、これを short でキャストしたあと intでキャストするのと、いきなりintでキャストするのとでは結果が違うのでしょうか・・?
827 :
名無しさん@お腹いっぱい。 :2000/12/25(月) 07:57
上位16ビットを切り捨てる。
828 :
名無しさん@お腹いっぱい。 :2000/12/25(月) 16:18
Delphiスーパー初心者です。 めちゃ初級の質問なんですが、 そのソフト固有の情報(ウィンドウの大きさ、最大・最小、等)を 保存するのにiniファイルを作成していいんですよね? もしもやろうと思えば、レジストリにその情報を持たせてもいいんでしょうか? 本当にウルトラ初級の質問ですいません。 けっしてネタではないです。 どなたか教えてください。
個人的にはレジストリなんか使われるとアンインストールしても レジストリには情報のこっちゃうからアプリのフォルダにIniファイル 作成して欲しい。
830 :
お願いします :2000/12/25(月) 18:44
板違いかも知れませんがなんでもアリってことで。 プログラミングでいろいろ遊べるお勧めのポケットコンピュータ (というか携帯コンピュータ全般)はないですか? あんまり高いのは手が出ませんが、Z80アセンブラなんかもかじってみたいです。 複数言語対応ならなおいいです。
>>828 いいよ。
IniファイルだとWin2000でユーザー権限Ini書き込み禁止
だとつらいのじゃない?
知らんが。
832 :
名無しさん@お腹いっぱい。 :2000/12/25(月) 18:51
833 :
830 :2000/12/25(月) 19:02
>>832 レスどうもです。
調べてみましたが、ソースコードはパソコンのエディタで作成するみたいなんで、
パソコン触っていないときにも手軽にやれるのがいいです。
835 :
>826 :2000/12/25(月) 20:52
LOWORD(lp)ってunsigned shortじゃないの? 上位を切り捨ててるのはたぶんLOWORDのほうだろうな unsigned shortをintにキャストすると負の値にはならないんだな‥ いちどshortにしてからならおけ。
836 :
名無しさん@お腹いっぱい。 :2000/12/25(月) 21:01
>>821 サイズを小さくすることが出来ました!
ありがとうございます!
>>834 どうもです。ちょっと高いけど、多機能っぽいですね。
検討してみます。
839 :
名無しさん@お腹いっぱい。 :2000/12/26(火) 02:08
Direct Drawってなんですか? ネタじゃありません。マジレスきぼん。
>834 グわッ!なつかしー それ確かCとBASICとCASL使えるよ。 でもCで6行表示ってのがきつかったナア
842 :
828 :2000/12/26(火) 14:59
829&831さん ありがとー 2chでの公開に耐えうるソフトを作れるよう精進します! いつのことかわかんないですけど。
843 :
名無しさん@お腹いっぱい。 :2000/12/26(火) 15:11
あるにきまってるぞえ、視野狭すぎ ロボ婚などに搭載されたりするのだぞ
845 :
名無しさん@お腹いっぱい。 :2000/12/26(火) 15:47
こんなものっていうより むしろ最先端のような気がするんだけど。 かなりいろんなことできるんじゃない? 携帯だし。
昔は第2種の受験対策雑誌の背表紙広告とかで出てたけど 今でもあるんやろか?え?ロボコンマガジン?>844 つないで出場していいの?
847 :
デフォルトの名無しさん :2000/12/31(日) 16:15
メモリを開放したら、開放時につかったメモリの示す先はNULLですか? NULLですよね?NULL以外ないですよね??
848 :
デフォルトの名無しさん :2000/12/31(日) 16:34
>847 C言語か? たとえばfree(mem);としてもmemの値はNULLにはならんぞ
849 :
デフォルトの名無しさん :2000/12/31(日) 17:31
>848 C言語です。 えええっ!!!まじですか? それなら改めてNULLとする必要があるのですか?
かんがえてみりゃなるはずないですな・・・
851 :
Hellow終了したて :2001/01/01(月) 22:15
環境はFreeBSD3.51のGCCとBCC5.51コンパイラ@WINNT4.0です まず、人数を入力、名前を入力して、得点を入力、すれば 得点の低い純にランキングされるというプログラム のソース文(下記スレ)を書いてコンパイルしたのですが、実行すると 「core dump」を吐くか ワトソン博士「例外、アクセス違反(0xc0000005)、アドレス0x0040518b」 になります。 ソースを見ても原因が分かりません 何が原因でしょうか?
852 :
851のソース文です :2001/01/01(月) 22:17
#include <stdio.h> main() { int h@`i@`tmp@`j; int p[9]; char n[9]; char tmpname; printf("How many people "); scanf("%d"@`&h); for(i=1; i<=h; i++){ printf("Enter NAME "); scanf("%s"@`&n[i]); printf("\n"); printf("Enter point "); scanf("%d"@`&p[i]); printf("\n"); } for(i=h; i>=0; i--){ for(j=1; j<=i; j++){ while(p[i]<p[i-j]){ tmp=p[i]; p[i]=p[i-j]; p[i-j]=tmp; tmpname=n[i]; n[i]=n[i-j]; n[i-j]=tmpname; } } } for(i=1; i<=h; i++){ printf("LANK %d"@`i); printf(":"); printf("%s"@`n[i]); printf("point=%d\n"@`p[i]); } }
853 :
デフォルトの名無しさん :2001/01/01(月) 23:32
>>851 &852
当たり前だろ…。
もう少し文字列と配列の使い方を勉強してから来てください。
854 :
デフォルトの厨房さん :2001/01/01(月) 23:38
>>851 #include <stdio.h>
main()
{
int h@`i@`tmp@`j;
int p[9];
char n[9][256]; // 配列を確保
char tmpname[256]; // 配列を確保
printf("How many people ");
scanf("%d"@`&h);
for(i=1; i<=h; i++){ // 間違っては無いけど普通は i=0 から始める
printf("Enter NAME ");
scanf("%s"@`n[i]); // 並列に受け取る ( &は要らない )
printf("\n");
printf("Enter point ");
scanf("%d"@`&p[i]);
printf("\n");
}
for(i=h; i>=0; i--){ // バブルソートのようだけどこれあってるの?(もう少し効率的にやれる)
for(j=1; j<=i; j++){
while(p[i]<p[i-j]){
tmp=p[i];
p[i]=p[i-j];
p[i-j]=tmp;
strcpy(tmpname @` n[i]); // 配列をスワップ
strcpy(n[i] @` n[i-j]);
strcpy(n[i-j] @` tmpname);
}
}
}
for(i=1; i<=h; i++){ // 間違っては無いけど普通は i=0 から始める
printf("LANK %d"@`i);
printf(":");
printf("%s"@`n[i]); // 配列の出力
printf("point=%d\n"@`p[i]);
}
}
855 :
デフォルトの厨房さん :2001/01/01(月) 23:40
>>854 >scanf("%s"@`n[i]); // 並列に受け取る ( &は要らない )
scanf("%s"@`n[i]); // 配列に受け取る ( &は要らない )
の間違い。(タイプミスっす)
856 :
デフォルトの名無しさん :2001/01/01(月) 23:46
>printf("LANK %d"@`i); これには誰もつっこまないんだな。
857 :
デフォルトの厨房さん :2001/01/01(月) 23:50
>for(i=1; i<=h; i++){ hが初期化された気配無し、、、 hを初期化してあってもnがどうなるか、、、 0 1 2 3 4 5 6 7 8 └┴┴┴┴┴┴┴┴┘ ↑から普通始める、、、 でも、0から始めても同じ配列を書き換えるだけ、、、 Cの文字列こともっと勉強したほうがいいに100カノッサ、、、 鬱だ氏のう
オマエモナー
861 :
デフォルトの名無しさん :2001/01/02(火) 09:10
862 :
デフォルトの名無しさん :2001/01/02(火) 23:04
メモリ確保のとき、ただしくメモリが確保されたかどうかチェックするためまず変数にNULLを入れておき、確保した後NULLだったら強制終了するようにしています。しかしそうすると***にいれた値は使われていないと警告をくらってしまいます。 この警告はしかたのないものですよね?それとも他にチェックする方法ありますか?
863 :
( ´~`)さん :2001/01/03(水) 00:05
PHPってなんすか(汗) このごろ見かけるようになったけど…
864 :
名無しさん :2001/01/03(水) 00:17
DLツール作成してるんですが、 プロバイダへの接続を自動化する方法が分かりません… あとダイヤルアップ接続のダイアログの消し方、 知っている方が居れば教えていただきたいです(汗
865 :
デフォルトの名無しさん :2001/01/03(水) 00:58
2つの画像を重ねて表示すると画面がちらつきます。 理由は分かりますけどどうしたらいいですか?
クリップスルンジャヨ>865
アセッカキハオンナノコニキラワレルゾ>864
PeepingHomePageジャナ。>863
シツモンノシカタヲ、ヨクカンガエタホウガヨイナ>862
870 :
862 :2001/01/03(水) 03:12
えー・・・かいつまんで言いますと、メモリの動的確保でもしメモリが確保できなかったとき、確保されたかどうかチェックするためにあらかじめポインタ変数にNULLを入れておき、もし確保されなかったらNULLのままなのでそのときは強制終了するようにしています。しかしこの方法だとコンパイルするときにコンパイラから代入された値は使われていないと警告をくらってしまいます。警告をくらわずメモリ確保失敗のときは強制終了する方法はありますか?
>>870 強制終了って、具体的にどんな事してるの?
あと警告って、どんなメッセージ?
それぐらい判らないと解答のしようがないけど。
つーか、問題個所のソース出せ。>870
873 :
870 :2001/01/03(水) 06:21
ウルトラ初心者なのですさまじいことをやっているかもしれませんが、そこはかんべんしてください。 Generation *Gdata=NULL; ・・・・・ ・・・・・ if((Gdata = (Generation *)calloc(NumberOfGeneration@`sizeof(Generation))) == NULL) { printf("メモリ確保失敗!強制修了します\n"); exit(-1); } のようにしてコンパイルしたら、 ”警告W8004 Height1_MKG.c 20:"Gdata"に代入した値はつかわれていない とでます。チェックの為にNULLを初期値として代入したので使われないのが当然です。しかし警告はなんとなくいやなので別の方法があればいいなぁ~・・と。
874 :
観鈴ちんLove :2001/01/03(水) 08:21
DLしてるついでに観て感じたこと、書くよ。 この警告は、無駄な代入を知らせているんだけど 基本的に気にしなくていいんじゃないかな。 > "xxx"に代入した値はつかわれていない ちなみに Gdata はメモリを確保してからしか使えないわけで、それ以前で 使うことが間違いのモトなので 確保してない Gdata を使う間違い、 *Gdata = .. をはじきたいなら Gdata = NULL → Gdata; にして、たとえば "値の代入されていないオブジェクトの参照" として出すほうが わかりやすいんじゃないかな。 Generation *Gdata; ... ... Gdata = calloc(...); if( Gdata == NULL ) { ... } こんな感じ。
875 :
観鈴ちんLove :2001/01/03(水) 08:41
>874 でも↑ method( 1@` 2@` &Gdata); なんて間違いがでてくると 対処できないし、いまいち。 C++ で局所的に使う変数なら、新しいスコープ {} 作るってそこに ほおりこむか、直前で Generation *Gdata = calloc(...); って 書くのも手なのかな。 広域的なら、クラスにして、メンバにして、コンストラクタあたりで 初期化しておくと警告は黙るけど。
876 :
cafe :2001/01/03(水) 11:47
free()してないの?>870
877 :
870 :2001/01/03(水) 15:09
>874 メモリ確保する前のポインタってどっか適当なところを指していて、、NULLではなかったようなきがしたのですけど気のせいですか? >876 最終的にします。
878 :
デフォルトの名無しさん :2001/01/03(水) 16:56
>877 ポインタに値を代入する前に指す先を参照しなければ平気でしょ。 もし、それが守られない可能性のあるコードだったら、 あなたがいま気にしているWarningとは別のWarningが出るし。
879 :
870 :2001/01/04(木) 15:58
玄人さん達はいつもメモリ確保失敗の対応手段はどうとっているんですか?
880 :
デフォルトの名無しさん :2001/01/04(木) 16:30
ログ吐いて終わり それすら出来なかったらしょうがないねー ものによっては監視してもらっている立場なんで落ちるだけ そもそも、構成から考えたほうが良いんじゃない? 確保される前のポインタにアクセスされるのを避ければ良いじゃん 最終手段としてcalloc(1.1)後realloc(....)する手もあるけど?(calloc(1.1)はプラットホーム、プログラムの内容によって変えたほうが良い) すすめません
881 :
870 :2001/01/04(木) 18:20
素朴な疑問。 宣言した当初のポインタ変数の値はNULLなんですか?
882 :
デフォルトの名無しさん :2001/01/04(木) 18:49
「宣言」した「当初」って何?>881 日本語とC言語勉強し直せ。
>>881 int *ptr;
って書いてから ptr に何か代入する前までの ptr の値ってことなら、
NULL とは限らない。NULL になってることもある。
884 :
881 :2001/01/04(木) 19:37
>882 それだからこのスレの意義があるのではないかと・・・ >883 わかりました。ありがとうございます。
885 :
>870 :2001/01/04(木) 20:17
「calloc に失敗した場合 Gdata にはなにも代入されず初期値の NULL が使われる」 という誤解をしているんではないかという気がするんですが どうでしょう ?
スタティックな変数なら0なことは保障されてっるんじゃなかったっけ?
>886 プロジェクトがDLLだと保障されないかもしれないので気を付けて! 昔VisualC++4.0時代に騙された事があるので(バグ取りに数時間潰れた)… でもおかしいな。'static'と打っておけば初期化されるんだったかな?
少なくともstaticな変数は明示的に初期化ができるのだから 0である事が保障されているかどうかで悩むよりも static hoge *huga=0; と、初期化しておくことをお勧めする。
少なくともstaticな変数は明示的に初期化ができるのだから 0である事が保障されているかどうかで悩むよりも static hoge *huga=0; と、初期化しておくことをお勧めする。
890 :
870 :2001/01/05(金) 02:03
>885 そ・・・・そのとおりですが・・・?
calloc は失敗した場合単に NULL を返すだけ (まあ、errno とかあるだろうけど)なので、 (Gdata=calloc(...)) の中の代入がおこなわれて Gdata == NULL になります。 なので、初期値を与えなくても (あるいはいい加減な初期値を与えても) 正しく動作するはずです。多分。
>891 おお!そうなんですか!重大なご指摘ありがとうございます。
なるほど。そこまで無知だったのか。>892 まず関数は使うまえにちゃんとリファレンス読みな。書いてあるから。
あ ついでに文法ももう一度やったほうがいい
855さんはじめ、ご返答レス下さった方、ありがとうございます。 >>printf("LANK %d"@`i); 恥ずかしい・・・
855さんはじめ、ご返答レス下さった方、ありがとうございます。 >>printf("LANK %d"@`i); 恥ずかしい・・・
897 :
いつでもどこでも名無しさん :2001/01/06(土) 21:01
ショートカットアイコンからアイコンを抜き出す方法を教えてください。 それともリンク先のアプリまで遡って抜き出さなければならないんでしょうか?
898 :
名無しさん@お腹いっぱい。 :2001/01/07(日) 02:06
>897 ショートカットのサイズは400バイトぐらい。 この中にアイコンのデータは入ってないと思うぞ。
899 :
デフォルトの名無しさん :2001/01/07(日) 02:10
>898 アホ発見!
>それともリンク先のアプリまで遡って抜き出さなければならないんでしょうか? 確かレジストリにアイコン格納アプリとリソース番号?が記録されとったよーな。 例えばテキストファイルなら HKEY_CLASSES_ROOT\txtfile\Defaulticon が、 C:\WINDOWS\SYSTEM\shell32.dll@`-152 てな具合。
ショートカットからは、IShellLinkインタフェースの GetIconLocationメソッドを使うのかな?よくわからん。
シェル関数一発だよ。たしか
903 :
897 :2001/01/07(日) 11:15
で、具体的にはどのように…?
904 :
デフォルトの名無しさん :2001/01/08(月) 01:22
つーか、そのショートカットを他のPCからみてみ? さすがに、やばいだろ?ここまでくると・・・ PG以前の問題
905 :
無理 :2001/01/08(月) 02:08
とりあえず今年から専門学校でプログラミングを習うのですが、 第1種情報処理技術者試験に受かるにはどれだけの 技術が必要なんですか? あと、その上のスペシャリストとはどのようなものでしょう?
906 :
デフォルトの名無しさん :2001/01/08(月) 04:02
>>905 1種は絶対に取れないよ。
どんなに努力しても彼方には出来ない。
もちろん俺にも(藁
905の思惑通り、一人(906)釣れたな。 これで満足か?(藁
906の思惑通り、一人(907)釣れたな。 これで満足か?(藁藁
909 :
900 :2001/01/08(月) 13:49
>>903 Delphiでのコード例ですまんが、
uses
ComObj@` ShlObj@` ActiveX@` ShellApi;
procedure TForm1.Button1Click(Sender: TObject);
var
Unknown: IUnknown;
ShellLink: IShellLink;
PersistFile: IPersistFile;
WFileName : WideString;
IconPath@` Path : String;
iIcon: Integer;
Win32FindData: TWin32FindData;
begin
if OpenDialog1.Execute then
begin
Unknown := CreateComObject(CLSID_ShellLink);
ShellLink := Unknown as IShellLink;
PersistFile := Unknown as IPersistFile;
WFileName := OpenDialog1.FileName;
Succeeded(PersistFile.Load(PWideChar(WFileName)@` STGM_READ));
if Succeeded(ShellLink.Resolve(Application.Handle@`
SLR_ANY_MATCH)) then
begin
SetLength(IconPath@` MAX_PATH);
ShellLink.GetIconLocation(PChar(IconPath)@` MAX_PATH@` iIcon);
if strlen(PChar(IconPath)) = 0 then
ShellLink.GetPath(PChar(IconPath)@` MAX_PATH@`
Win32FindData@` SLGP_UNCPRIORITY);
SetLength(IconPath@` strlen(PChar(IconPath)));
Image1.Picture.Icon.Handle := ExtractIcon(
Application.Handle@` PChar(IconPath)@` iIcon);
end;
end;
end;
910 :
デフォルトの名無しさん :2001/01/08(月) 21:14
VisualC++6.0で DLLだけ作ってあとはVBでプログラム をつくるのがいいと聞くのですが@` 具体的に、この際のVisualCでつくるプログラムとはわかりやすく 例を出して教えて下さい
あのう・・・ マジで俺は聞きたかったんですけど・・・
912 :
スタティック田中 :2001/01/08(月) 23:59
ウインドウズのスタティックテキストの背景が灰色なんですが、 どうすれば色を変えることが出来るんでしょうか? CreateWindow("STATIC"・・・ で作成したスタティックテキストです。 VCの非MFCです。
>905 まじでとれないよ。
914 :
Phantom of C++ :2001/01/09(火) 00:18
>911 平成13年度春期から試験制度が改定されて名称が変わるんですよ。 1種は知らんけど2種は確か基本情報技術者試験という具合。 (1種はソフトウェア開発技術者試験という名前だったかも知れません) これからはOOPの問題がどんどん出題されて 前より難しくなるかも知れませんね。
915 :
ファントム オブ マジレッサー :2001/01/09(火) 00:20
>911 平成13年度春期から試験制度が改定されて名称が変わるんですよ。 1種は知らんけど2種は基本情報技術者試験という具合。 (1種はソフトウェア開発技術者試験という名前だったかも知れません) これからはOOPの問題がどんどん出題されて 前より難しくなるかも知れませんね。
あ、2重カキコだ。ハズカシイ・・・。すみません・・。
917 :
デフォルトの名無しさん :2001/01/09(火) 04:04
>>912 親ウィンドウの WM_CTLCOLORSTATIC を処理する。
ブラシのハンドルを return で返せばその色になる。
とりあえずMSDNライブラリ調べれば詳しく書いてあるよ。
918 :
デフォルトの名無しさん :2001/01/09(火) 04:36
そのハンドルはDestroy時に破棄する必要があるか?>917
919 :
デフォルトの名無しさん :2001/01/09(火) 04:49
>>918 >The system does not automatically destroy the returned brush.
>It is the application's responsibility to destroy the brush
> when it is no longer needed.
だってさ。
920 :
スタティック田中 :2001/01/10(水) 23:49
ありがとーございます! WM_CTLCOLORSTATICとって、ブラシ返してみます!
921 :
見てください。 :2001/01/11(木) 00:23
for (index=0;index<result_count-2;index++) { if(strcasecmp(disp_qr_list[index]->ip@`disp_qr_list[index+1]->ip) == 0){ k++;} if(strcasecmp(disp_qr_list[index]->ip@`disp_qr_list[index+1]->ip) != 0){ k++; memcpy(ip_qr_list[l]->ip@`disp_qr_list[index]->ip@`4); ip_qr_list[l]->ref=k; k=0;l++;} } これでsegmentation faultでるのですがどうしてですか? disp_qr_list@`ip_qr_list@`は同じ構造を持つ構造体です。
922 :
奥さん、名無しです :2001/01/11(木) 00:29
>921 人に聞く前にデバッガ使ったら? 多分XXX[hoge]が、NULLかごみかで->が失敗してんだと思うが。
923 :
デフォルトの名無しさん :2001/01/11(木) 00:36
デバッガ使っても分からないほど初心者です。
924 :
デフォルトの名無しさん :2001/01/11(木) 00:53
NULLかごみというのはどういう場合におきますか? 申し訳御座いません。初心者です。
925 :
921 :2001/01/11(木) 01:06
memcpy(ip_qr_list[l]->ip@`disp_qr_list[index]->ip@`4); どうもここで、 11: ip_qr_list[index]->ip = Error accessing memory address 0x61636f6c: Bad address. がおきるようです。
926 :
デフォルトの名無しさん :2001/01/11(木) 01:06
しかしよくわかりません。
あなたにはわかっているつもりでも、見ている側にはわからない ことがたくさんあります。 ip_qr_listとdisp_qr_listは同じ構造をもつ構造体だと主張 されていますが、構造体には通常[]演算子は使いません。 二つは同じ型の構造体へのポインタの配列という意味なのでしょうか? それとも[]演算子を再定義なされているのでしょうか? disp_qr_list、ip_qr_listはここに来るまでにどのように初期化されていますか? memcpyの行のip_qr_list[l]のlはどういう値なのでしょうか? そもそもこれらのどの位置でsegmentation faultが起こっているのでしょうか?
構造体のサイズが3byte以下だったりして‥
929 :
デフォルトの名無しさん :2001/01/13(土) 01:36
関数内でcallocを使ってhoge = (hog *)calloc(5@`sizeof(hog))として、かえり値としてその先頭のアドレスを返しました。その後main内でhoge[i]というようにして参照しようとしたのですがうまくいきません。通常こういうことはできないのでしょうか?
930 :
デフォルトの名無しさん :2001/01/13(土) 01:47
こうしてみそ。 ip_qr_list[index]->ip 似たようなところをすべて ip_qr_list[index].ip へ。
931 :
デフォルトの名無しさん :2001/01/13(土) 02:01
932 :
名無しさん :2001/01/13(土) 02:03
多重カキコごめんなさい。
見て見ます
935 :
デフォルトの名無しさん :2001/01/13(土) 03:10
救出age
936 :
デフォルトの名無しさん :2001/01/13(土) 04:26
ある構造体の型である変数hogeがあり、そのメンバにhogehogeがあってそれにメモリを当てました。次に同じ構造体の型である変数hoge1があり、このhoge1のメンバhogehogeにはメモリを割り当てませんでした。 この状態でhoge1 = hogeとして、hoge1のhogehogeにはhogeのhogehogeはきちんとコピーされるのでしょうか?
937 :
デフォルトの名無しさん :2001/01/13(土) 05:10
hoge1 の hogehoge は hoge の hogehoge がコピーされる。 メモリ割り当てはポインタでしょ?だからポインタの内容 (=メモリの割り当てアドレス)がコピーされるんんん。 こうやってくと、コピーがどんどん増えて面白いよね。(藁)
938 :
937 :2001/01/13(土) 05:15
ポインタの内容ってか、ポインタ、だね。
939 :
デフォルトの名無しさん :2001/01/13(土) 05:18
>937 ???すいません、勉強不足で理解不能です。 つまることろhogehogeにメモリを割り当てていようがいまいが関係ないのですか?
940 :
デフォルトの名無しさん :2001/01/13(土) 05:36
そう。CやC++のデフォルトの状態では、 構造体の代入はそのままコピーです。 hogehoge がなんであろうとおかまいなしです。 struct HogeTag { char * hogehoge; } Hoge; Hoge hoge; Hoge hoge1; hoge.hogehoge = 1; // なら hoge1 = hoge; // hoge1 はそのままそっくり hoge がコピーされるから hoge1.hogehoge は 1 です。 (char *) に 1 を代入は変だけどさ。。
941 :
デフォルトの名無しさん :2001/01/13(土) 05:45
hoge.hogehoge = (char *)calloc( 10@` sizeof(char)); とすると hoge.hogehoge は割り当て先を指すでしょ。 割り当て先がアドレス 0x1234 だったとするね。 そうすると hoge.hogehoge は 0x1234 です。 ここで、 hoge1 = hoge; をやると hoge1 には hoge がそのままコピーされるから hoge1.hogehoge も 0x1234 になるのね。 ところで hoge の hogehoge を free したあとで hoge1.hogehoge を使うと・・?
942 :
デフォルトの名無しさん :2001/01/13(土) 06:14
hoge1 にもメモリ領域を割り当てて、ポインタじゃなくて 内容をコピーしたいなら hoge1 = hoge; じゃなくて hoge1.hogehoge = (char *)calloc( 10@` sizeof(char)); // メモリ割り当て memcpy( hoge1.hogehoge@` hoge.hogehoge@` 10*sizeof(char)); // 内容をコピー
943 :
デフォルトの名無しさん :2001/01/13(土) 14:35
>942 なるほど!すごくよく理解できました。 ありがとうございます。
944 :
名無しさん@POC :2001/01/13(土) 14:58
そろそろパート2を立てようよ。 というわけで950を書いた人が作るってのはどう?
このスレッドはウルトラ初心者がいつづける限り続くのですね(笑
946 :
デフォルトの名無しさん :2001/01/13(土) 17:03
すみません。質問させてください。 今回作成してるプログラムで関数を 呼び出しても、たまに(3割くらいの確率)で その関数がよびだされずに、次にすすんでしまう(かのような) 挙動をとるのですが、こういうことってあるものですか? 呼び出される関数に間違いがないことは確実です。
言語も環境もわからないのでなんともいえませんが そのようなことは通常ありません。 呼び出される関数に間違いがないことは「確実」と言い切る あたり、相当のスキルをお持ちのかたとお見受けしますが、 質問するスキルも身に付けてください。
948 :
デフォルトの名無しさん :2001/01/13(土) 17:12
プログラム板の人達は、自分よりスキルのない相手には高圧的で 居丈高だね(藁
>946 ソースはってみ。
950 :
デフォルトの名無しさん :2001/01/13(土) 18:17
こんにちは。 プログラムである入力を与えることによって 計算された5種類くらいの変数の結果 (大きさ、速さ、数、種類などの計算結果です) をいったんfileにでも出力して、その後、同じプログラム で別の入力で計算を行い、これを4回ほど繰り返した後に、 ファイルに出力された結果を用いて違うプログラムで計算 を行うことはできますか? もしできるとしたらどんな漢字で行えばいいのでしょうか? 分かり図らい説明ですが、ご容赦を。
951 :
デフォルトの名無しさん :2001/01/13(土) 18:18
どんな感じです。
952 :
デフォルトの名無しさん :2001/01/13(土) 19:06
>950 何がわからないの? 自分の書いたとおりそのまま書けばいいんじゃない。 どの関数を使えばいいかわからないってこと?
953 :
わら>950 :2001/01/13(土) 19:26
JavaScript?CGI?
954 :
デフォルトの名無しさん :2001/01/13(土) 19:26
Dim i() As Long Dim Index As Long Index = 20 ReDim i(Index) As Long i(20) = 50 Print i(20) と同じように、Cで動的に確保したいのですが。 どうやるんでしょう?
955 :
デフォルトの名無しさん :2001/01/13(土) 19:38
>954 Cだと配列の大きさを動的に確保することはできないけど、ポインタ変数と演算子[]を使って配列と似たようなことはできる。 こんな感じ。 int *i; int Index; Index = 20; i = (int *)malloc(Index * sizeof(int)); i[19] = 50; printf("i[19] = %d"@`i[19]); free(i);
956 :
950 :2001/01/13(土) 19:48
>>952 cです。
分からないのはそういうことができるのかということと、
どんな関数をつかっていけばいいのか、ということです。
スレのタイトル道りのウルトラ初心者なので
ご勘弁を・・・・
957 :
954 :2001/01/13(土) 19:48
>955 int *i; int Index; Index = 20; i = new int[20]; i[19] = 50; printf("i[19] = %d"@`i[19]); delete i; これでもいいのですか?
958 :
955 :2001/01/13(土) 19:55
>957 オレC++はわかんねーや。 ごめんよ。
959 :
954 :2001/01/13(土) 19:58
>958 帰って試してみます。 ありがとう。
960 :
SAGE :2001/01/13(土) 20:29
>>957 流れからして、new のとこは
i = new int[Index];
だな。あと、最後の delete は
delete [] i;
が望ましい。
int *i; int Index; Index = 20; i = new int[Index]; i[19] = 50; printf("i[19] = %d"@`i[19]); delete i; 今、気が付いたけどこうだった。
962 :
954 :2001/01/13(土) 20:38
>960 ご指摘どうも。 あと、以前C言語の入門書で free()を忘れても、プログラム終了の時に 自動的に開放されるとあったんですが、 本当ですか? Win環境の時も開放されますか?
963 :
デフォルトの名無しさん :2001/01/13(土) 20:57
>962 それ俺もいま書きこもうとしていた質問です。 プログラム終了したらヒープは自動的に復活しますか?
964 :
デフォルトの名無しさん :2001/01/13(土) 21:01
>>962 される。
逆にいえば終了するまで開放されない。
ちゃんとdelete@`freeするかどうかは
そのソフトを使う立場になって考えれ。
(つか一瞬で終わるコマンド以外はすべてちゃんとメモリ開放すべき)
965 :
デフォルトの名無しさん :2001/01/13(土) 21:05
C++、クラスでつまづきました。 参考になる書籍はありますか?
966 :
954 :2001/01/13(土) 21:05
>964 メモリのムダ使いにもなりますしね。 いや、忘れた場合でも安全かどうか知りたかったのです。 ありがとうございました。
967 :
マジレスさん :2001/01/13(土) 22:51
return文って、どういう意味ですか? 返し値って、何に使うの?
968 :
デフォルトの名無しさん :2001/01/13(土) 23:06
↑ひさびさの真ウルトラ登場。
969 :
デフォルトの名無しさん :2001/01/13(土) 23:08
↑ひさびさの真ウルトラ登場。
タタ重スアソ
タタ動キコスアソ
タタ動キコスアソ
そろそろやばい。 はやくだれかスレ立てれ。
974 :
954 :2001/01/13(土) 23:53
帰ってVCのヘルプ見たのですが、C++には std::vector なんてのもあるんですね! これだと、ポインタを使わなくてもいいんで便利です。 ちゃんとヘルプ見ないといけませんね・・ お騒がせしました。
975 :
950 :2001/01/14(日) 00:15
おしえてほしいあげ
976 :
デフォルトの名無しさん :2001/01/14(日) 01:17
977 :
デフォルトの名無しさん :2001/01/14(日) 01:20
後者に10票
978 :
デフォルトの名無しさん :2001/01/14(日) 03:33
>>950 fopen@` fprintf@` fscanf@` feof をつかって
テキスト形式でファイルを読み書きするといいのではないでしょうか。
お手軽です。
fscanf はマニュアルを丁寧に読んでお使いください。
返値などの解釈を間違えるとはまります。
返し値じゃなくて 返り値じゃないの?