1 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 06:39:50 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 17 pc11.2ch.net/test/read.cgi/tech/1185286631/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 94代目 pc11.2ch.net/test/read.cgi/tech/1185452895/
237 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:40:18 ] セキュリティに関しても問題とされるバッファオーバーラン、固有の環境とか仕様で 対処すりゃみたいなことを言わず、プログラム側でしっかり対処すること。 とにかく、getsだけはありえん。
238 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:41:37 ] >>235 これくらいは理解してみて ykr414.com/dos/
239 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:42:40 ] 234 名前:デフォルトの名無しさん 投稿日:2007/08/22(水) 15:31:31 >>233 だから、それをここで君の言葉でいいなさいよ。 236 名前:デフォルトの名無しさん 投稿日:2007/08/22(水) 15:38:14 >>233 知らないならレスしないでください! ↑なんだこいつ?うざすぎ。説明してもらえなきゃ相手が理解していないってことになるなら そう思ってろ。すでに説明は済んでいるのにな。痛すぎ。お前みたいな奴が質問に答えるのも 問題があるだろ。とっとと失せな、夏厨。
240 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:44:14 ] >>239 知らないならレスしないでください!
241 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:44:55 ] 入力は何もプログラムを起動してユーザがキーボードで文字を入力する以外にも ファイルからリダイレクトってのもあるし、データを受ける側が用意した記憶領域を 超えて入力を受け付けてしまうことなんて考えたらキリがないが、そういうのも含めて getsだけはありえん。使った時点でアホだと思われるぞ。
242 名前:234 mailto:sage [2007/08/22(水) 15:48:10 ] gets関数は>>223 のいうとおりバッファオーバーランの危険性がある。 fgets関数と違ってgets関数の引数にはバッファのサイズの引数がないからだ。 でも、それは>>230 のいうとおりで、想定最大入力文字数のバッファを用意しておけば それですむはずだ。 プログラムを作るときは、入力データの種類やサイズの範囲、誤動作の許容レベル というものがあるはずで、自分または身内が使う簡単なテストプログラム程度のもの であればコンソール入力のバッファをchar buf[1000];ととってもなんら問題がないと思われる。
243 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:50:08 ] ttp://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%83%B3 問題点のヒントを出しても調べようとしないのか。頼む、お前みたいな無知が 生半可な浅はかな知識でいい加減な回答をするのは迷惑なんで黙っていてくれ
244 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:54:19 ] >>243 知らないならレスしないでください!
245 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 15:56:45 ] gets を使うことでバッファオーバフローのサンプルコードを出せる 反面教師のようなところが利点 #include<stdio.h> int main(void){ int a=3; char buf[8]; int b=5; int diffa, diffb, diff=-1; int i; diffa=(char*)&a-buf; diffb=(char*)&b-buf; if(diffa>0 && diffa<50) diff=diffa; if(diff>diffb && diffb>0 && diffb<50) diff=diffb; if(diff<0) return 0; printf("a=%d b=%d\n", a, b); printf("Input next string\n"); for(i=0;i<diff;i++) putchar('*'); printf("x\n"); gets(buf); printf("a=%d b=%d\n", a, b); return 0; }
246 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 16:07:32 ] getsでOKかNGかは作成するアプリのバッファオーバーランの例外処理の要求レベルによるだろう。 業務で使用するものなら、getsは使わないほうが望ましい。fgetsを使う。 テストプログラムや身内で使うものならgetsも可。 ただし、その場合でもバッファは「十分なサイズ」のものを用意しておくこと。 ということかな?
247 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 16:08:42 ] うん
248 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 17:19:09 ] バッファオーバーフローを利用したコードインジェクションの例を書こうと思ったが、 >>245 みたいに広い範囲で使えるソースを書くのって難しいね
249 名前:デフォルト名無しさん mailto:1111111 [2007/08/22(水) 17:43:25 ] >238 arigato mucho obrigado
250 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 18:10:52 ] 相変わらずおまいら gets 好きだね。 飽きないね。
251 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 18:35:48 ] gcc@linuxなのですが、 a というプログラム(プロセス)から b を必要に応じて起動し (aはbを起動した後引き続き起動し続ける)ようにしたいのですが、 どうやるのが正しいのでしょうか? 今は、 a側で pid = fork(); if (pid==0) execv(b); のようにしているのですが、このやり方であってます?
252 名前:デフォルトの名無しさん [2007/08/22(水) 20:06:36 ] >>244 Linux Programmer's Manualには「gets()は絶対に使用してはならない。」と書かれている
253 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 20:07:03 ] 教科書を終わったばかりでscanf()とか使いまくりなんだけど、 そういうやらないほうがいいマナーがまとまってる解説サイトはないですか
254 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 20:15:25 ] 少し古い気もするけど、C FAQ。 www.kouno.jp/home/c_faq/
255 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 20:18:37 ] >>246 みたいなのがいるところをみると、やはり日ごろ来ていない夏厨なんだなぁ〜って思う
256 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 20:38:43 ] >>252 捨てプログラムくらいならいいだろー
257 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 20:38:50 ] お前きもいよ
258 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:09:06 ] >>256 そういう話をしたらキリがないだろ。だったら話に入ってくるなよ。 なんでお前の個人的な都合を受け付ける話題になってんだ? 頼むからお前みたいな自分勝手なことしかいえない奴は大勢とやりとりする 場での議論には入ってこないでくれ。それからお前は二度とここで質問に回答するな。
259 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:10:12 ] >>256 こいつダメだ。「何が問題」とされているのか分かってないのか? そう思うなら自分だけが扱うソースでは使えば良いだろ。正式なものに書き換えるときに わざわざgetsの部分を探して仕様を変更して書き直してたらそれこそ手間が掛かるだろ。
260 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:12:11 ] >>256 確かにお前みたいな奴が作るプログラムなんて、他の人に使わせないだろうから良いけどさ。 getsを使った入力を受け付けるプログラムが、予期せぬ状況下でバッファオーバーランをして OSの動作にまで何かトラブルを起こすようなら話にならんのだよ。そういうことも考えて より精巧なプログラムを作れないようなら、お前はプログラミングには向いてない。 今すぐ将来の進路を変更した方が良いよ。
261 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:13:01 ] >>256 いいですよ^^
262 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:15:45 ] お前らきもいよ
263 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:29:42 ] >>258-260 同じ人ですか?
264 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:32:43 ] >>256 は今、布団の中で泣きながらダンディ坂野が24時間テレビでやっていた ゲッツ1万回チャレンジを思い出しているに違いない。
265 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:45:13 ] 捨てプログラムのはずなだったのに、 なぜか他人が使っているという不思議な事態も想定すべき。
266 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:46:38 ] 盲目的に使っちゃいけない、と思い込む方が楽だからな 自分で判断しないから 信号も赤なら渡らない、と決め込んで 青なら安全確認もろくにしないで事故に会うタイプだな
267 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:56:23 ] >>264 余計泣けるじゃないか 虚しさに
268 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:01:58 ] >>265 > なぜか他人が使っている ないない、お前日本語が理解できないアホだろ。だから議論に入ってくるなっつってんだが? 言葉以前に現状すら理解できんだろ。よく読め、アホ。 >>260 > 他の人に使わせないだろうから良いけどさ。 だから捨てなんだろ?getsを使ったプログラムを他人に使わせるなんて当然迷惑だ。
269 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:15:12 ] >>268 何をそんなに興奮してるんですか?
270 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:16:24 ] 自分も意見が言える話題になって嬉しいんだよ
271 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:26:26 ] こんなの拾った 167 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/21(火) 10:24:11 >>145 どこが > 読みやすさを損なう のかさっぱり。やっぱ、主観的なことしかいえないだろ? だからやめろつってんのにw コンパイルが通ればどっちでも良いんだよ。 むしろ必要性について知らない方がダメ
272 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:29:37 ] 拾うな 捨てとけ
273 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:33:11 ] #define mygets(s) fgets((s), sizeof (s), stdin) sが配列型でなかったら死亡。 C++ならもっと頑張れるが、std::string使えという罠。
274 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:38:26 ] >>167 > むしろ必要性について知らない方がダメ もっともらしい理屈がいくつが挙がってるけど、そのスタイルを採用してないプロダクツでも 世間で評価されてるような実績をあげてるってことは、それらは机上の空論ってことだろ。 センスも見識もない人間が頭の中だけで考えたスタイルなんて、そういうことになりがち。 と遅レスしてみる。
275 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:50:02 ] 個人的な主観や特定の条件を述べられても結論が出ないんで、話を根本に戻すと >>221 の質問は > ではどういう風にすればいいのでしょうか これに対して十分な領域を確保しとけってのは不適切。 なぜなら、確保した領域を 超えて受け付けることが出来る仕様 になっている以上 getsを使ってたら対処にならないんだよ。 その問題点の解決の対処をすることが >>221 に対して適切な回答になる。 getsに問題があるけど、問題が起こらないように使いましょうって だからgetsを使うからセキュリティーホールなるものが出来てんだろって報告も無視するし。
276 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:52:05 ] 堂々巡りいいよ堂々巡り
277 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:52:07 ] >>274 お前のバカじゃね?理解してなさすぎ。個人的な主観による 読みやすさ っていう基準が 無意味だって話だろ。自分が思う通りに処理が出来るソースがコンパイルに通れば どういうスタンスやスタイルをとろうが自由だろ。あんたの言う世間で評価って言うのは 括弧を付ける付けないが評価の対象じゃないだろ?アホ杉・・・
278 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:53:43 ] そんな危険な関数が何で備わっているんですか?
279 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:54:22 ] >>274 んじゃ世間で評価されるプログラムのソースに1文のみで括弧が必要ない部分にも 括弧があったらどーすんだよ?くだらねぇ
280 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:54:22 ] それはもちろん使って欲しいから
281 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:56:14 ] >>277 だから「必要性」ってなんの話だよ。 それに理解できてないのはおまえのほうだろ。 括弧つけてるつけてないが評価されてるなんてどこにかいてる?
282 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:59:28 ] >>279 だから、上のほうで挙がってる括弧のをつける理由ってのは机上の空論ってことだよ。
283 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 23:14:49 ] ×煽り合いスレ
284 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 07:56:31 ] 読んでてふと疑問に思ったんだけど、 今時捨てプログラム以外でCUIで書くことってあるの? getsなんぞそもそも使う場面が思いつかない
285 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 08:02:28 ] >>284 君はサーバプログラムを知らないようだ。 他にもシェル上から使えるちょっとしたフィルタプログラムは便利だ。 まあ君には必要のないことなのかもしれないがな。
286 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 09:39:29 ] >シェル上から使えるちょっとしたフィルタプログラム はスクリプトで書くからなー
287 名前:286 mailto:sage [2007/08/23(木) 09:40:16 ] あ、でもオレもCUIでCのプログラムは結構書くよ
288 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 09:50:46 ] CUIエディタ使ってる奴なんかいないと思ってた…
289 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 09:53:35 ] 最近はGUIの定義が変わってきているから vi みたいなスクリーンエディタもCUIエディタと呼ぶのかも
290 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 09:53:51 ] vi 使うべ。
291 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 09:55:06 ] まあ揚げ足はともかく、ApacheやRubyのモジュールをCで書いたりするしな。
292 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 11:15:37 ] CMAGAZINEのガイドに従ってBorland C++ Compiler 5.5.1の「コンパイルの 実行手順」まで来ました。Hello, World!というソースプログラムを用例通り に作ってc:\に「cppprog」フォルダを作成しました。 コマンドプロンプトの\system32\cmd.exeの画面で C:\Documents and Settings>の後にcd \cppprogを入力しenterキーを押すと 「指定されたパスが見つかりません。」と表示されます。なぜか教えてください。 保存の状態は、C:→Documents and Settings → 大野→ My Documents → cppprogフォルダです。 よろしくお願いします。
293 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 11:31:47 ] cd "C:\Documents and Settings\大野\My Documents\cppprog"
294 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 11:32:42 ] ユーザーアカウント名?Oh no!
295 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 11:51:34 ] cd \cppprog だと、 C:\cppprog になる cd cppprog なら、現在の場所からの相対位置になる
296 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 12:02:09 ] C言語についてじゃないな、却下。
297 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 12:10:49 ] 最近この手のプログラミング以前の質問多いよな
298 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 12:14:18 ] >293, 204, 295ありがとう。 漢字を打ち込む方法を教えてください。
299 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 12:18:02 ] >>298 ショートカットの作業フォルダに指定するべし
300 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 12:19:07 ] >>298 Alt+半角/全角
301 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 12:33:59 ] まあ漢字めんどうならTABキー連打で
302 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 13:06:34 ] >301 TABキーで C:\Documents and Settings\All Users>まで進みました。 この後ろへcd \My Documentsを入力しエンターキーを押すと、 「指定されたパスが見つかりません。」が出ました。 対策を教えてください。
303 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 13:24:33 ] >>302 >>295
304 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 13:25:06 ] サーバやモジュールはgetsを使える場面があるのか… 標準入力もまだまだ捨てたものじゃないってことだな やったことないから勉強になった
305 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 13:34:04 ] >303 Documents and Settings\All Users>cd cppprogでエンターキーでも 「指定されたパスは見つかりません。」が出ます。
306 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 13:39:53 ] All Usersじゃなくて、自分のログインネームで 一個上に行くのは、 cd .. な
307 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 13:48:19 ] コマンドライン初めてなら、それなりのとこ見ながらやったほうがいいよ そこからコンパイルまでいくのは大変だし、ここはスレ違いになるから みんな相手してられなくなるぞ
308 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 13:51:00 ] ルート直下でやればいいじゃん
309 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 14:04:48 ] >306 当たり前ですが、Borlandに対するログインネームでしょうね。 「一個上に行く」というのは,>cd ○○○○(ログインネーム)と 置くことを指しているのでしょうね。
310 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:10:13 ] >>309 これ見て勉強して ykr414.com/dos/
311 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:29:10 ] OS :Borland
312 名前:311 mailto:sage [2007/08/23(木) 14:31:45 ] ちょっと質問なんですけど、たとえば key=value という文字列をsscanfをつかって'='で分解したいんですが char text[256] = "key=value"; char *key,*value; sscanf(text,"%s=%s",key,value); という感じで打ってもできませんでした。だれかご教授おねがいします
313 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:34:45 ] BorlandっていうOSは知らないなぁ
314 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:46:44 ] だーかーらー カレントディレクトリが C:\Documents and Settings\All Users なんだったら、 その状態で cd cppprog ってやったら C:\Documents and Settings\All Users\cppprog へ移動することになるし、cd 大野 ってやったら C:\Documents and Settings\All Users\大野 へ移動することになる。もちろんそんなディレクトリは存在しないから、エラーが出るわな。 君が移動したいのは C:\Documents and Settings\大野\My Documents\cppprog だろ? だったら1つ上のディレクトリ(つまり C:\Documents and Settings)に戻ってから、 大野 → My Documents → cppprog へと移動すればいい。 具体的には cd .. cd 大野 cd "My Documents" cd cppprog と順に移動していけばいい。 だいたいなんでCマガの書いてあるようにやらないんだよ。
315 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:46:59 ] >>312 strtokでも使え
316 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:49:51 ] >>312 OSはおいといて、key と value の領域確保の問題が一つ。 もう一つは、keyが"="まで読み込んでしまうこと。 "%[^=]=%s"とかでどうか
317 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 15:40:26 ] >314 問題は、漢字のフォルダ名をコマンドプロンプトへ 打ち込めないことです。フォルダ名をローマ字に変えようと してもできません。よろしく。
318 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 15:46:12 ] >>317 コンパイラ起動できるようになるまで、Win板で聞いたら? とりあえず>>300-301 ちなみに、 C:\Documents and Settings\大野\My Documents は、エクスプローラーの「マイ ドキュメント」のことだって知ってたか?
319 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 15:57:57 ] せっかく答えてもらったのに礼は言わない、 それどころかレスをまともに読んですらいない、 救いようがないなこりゃ
320 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 15:59:00 ] さすがに釣りだろwww
321 名前:デフォルトの名無しさん [2007/08/23(木) 16:05:44 ] おじゃまします。質問です。 typedef struct{ char a[2]; char b[3]; char c[4]; }AA; typedef struct{ char e[16]; }BB; AA aa; BB bb; …こんなんで、aaに代入された値をbbに一発で書き込んで、 しかもスペースで埋めてくれる関数とかありませんか? VBからCに書き直してたら、LSetで一発だったので。。
322 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 16:13:02 ] 関数使わんでもできるけど、一発(スペース埋めるなら2発か)でやるなら memcpy() と memset() でどうか
323 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 16:18:12 ] >319 ありがとうございました。cd 大野といわれても漢字をコマンド プロンプトに打ち込めないみじめさ。嬉しさも中ぐらいなり、秋の風。
324 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 16:21:37 ] どうしても無理ならマウス使ってコピペ 右クリックかシステムメニューでできる
325 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 16:31:15 ] Alt+半角/全角 で入力できるぜ
326 名前:321 [2007/08/23(木) 16:35:43 ] >322 できました。ありがとうございます!
327 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 16:49:57 ] >>322 ,326 構造体のパディングは大丈夫なのか? 文字列の連結ではないのか? いやできたならいいんだけど。
328 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 17:09:58 ] 同じ型が続いてるなら多分パディングはないんじゃないかなあ。
329 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 17:13:26 ] パディングはcharが並んでるだけだったからあえて書かなかったが LSetの仕様を考慮しないとね。どっちにしても一発は厳しい
330 名前:デフォルトの名無しさん [2007/08/23(木) 19:09:03 ] char *func_b( char *str, char ch ) { char *p; for( p = str; *p != '\0'; p++ ) if( *p == ch ) return p; return 0; } これと同等の処理を行う標準ライブラリ関数を教えてください お願いします
331 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 19:18:28 ] strchr?
332 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 19:18:52 ] strchrかな
333 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 20:06:37 ] Borland
334 名前:デフォルトの名無しさん [2007/08/23(木) 20:23:42 ] >>331-333 ありがとうございます strcharだと char *func_b( char *str, char ch ) じゃなくて char *func_b( char *str, int c) になるんじゃないかと迷ってました
335 名前:デフォルト名無しさん mailto:1111111 [2007/08/23(木) 20:26:41 ] プログラム実行できました。今日中にできるとは思いませんでした。 Borland C++ Compiler のつぎはTurbo Debuggerです。 ありがとう!ありがとう! >293,294,295,314,318, 325さんAlt + 半角/全角や漢字のコピペが可能だとは驚きでした。 まだいろいろ教えていただくこともあろうと思います。
336 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 20:26:46 ] >>321 memset(&bb, ' ', sizeof(bb)); bb = aa; これでいいような気がするんだが、 構造体の要素って順番に並んでるとは規定されてないけどね。
337 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 20:29:48 ] >>334 char *strchr (const char *s, int c) だよ