C言語なら、俺に聞け! <9>
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001C言語ハッカー Kusakabe Youichi
NGNGあちこちの言語に手を出したが結局極めたのはC言語だけだった。
大体のことなら分かるからオレに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・前スレ C言語なら、オレに聞け! <8>
http://pc.2ch.net/test/read.cgi/tech/1005811510/l50
0859Kusakabe Youichi
NGNG> お前素人だろ、糞壁通の俺から言わせてもらえばコイツが潜在能力のすべてを
> 発揮するのはNetNewsに於いてのみだよ。
そう自分に言い聞かせると安心できるのですね :)
> ここだと常識を超える質と量の厨房に圧倒されて中々力を発揮出来ないと思ってるね。
それは「希望」ですか? :)
> 後コイツは頭の回転が悪いからIRCだと駄目なんだよ、
はつみみです ;)
0860デフォルトの名無しさん
NGNG初心者の漏れにとっては、すごくいいスレだったのだが。
「彼のいない」C言語質問スレってある?
もしあるならそこへ行って質問したいんだけど。
0861デフォルトの名無しさん
NGNGお前がここで聞いて、誰かが答えた時点でその板はもう
「彼のいない」C言語質問スレではない。
徹底的に無視して聞くか、だめなら2ちゃんでは聞くな。
0862デフォルトの名無しさん
NGNGホットゾヌを入れて NG ワードに Kusakabe Youichi と指定しろ(メニューバーから [ツール]
- [NGワード設定])。これでヤツの発言は自動的に透明あぼーんされる。
0863Kusakabe Youichi
NGNG> もうここではC言語の質問を出来そうにないな…。
ということにしたいのですね?
0864デフォルトの名無しさん
NGNG:)←これはどうした?
0865Kusakabe Youichi
NGNG>:)←これはどうした?
ということにしたいのですね? :)
0866デフォルトの名無しさん
NGNGそうです。そうしたいです。
それ以外にどの様に読めますか?
0867デフォルトの名無しさん
NGNGscanf("%s")でfputs関数を使うのと、scanf("%c")でfputchar関数を使うのはどちらがいいですか。
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGどっちでもいいよ。
scanf()は使わないにこしたことはないけどね。
0870デフォルトの名無しさん
NGNGgetchar(), putc()
そもそもCにはfputcharという標準関数は存在しないし、
putcharは標準出力に出力する。
# その機能はcatでもできるような気がするが(゚ε゚)キニシナイ
0871867
NGNGごめんなさいです。fputc使おうと思ってました。
どっちでもいいのはわかるんですが、一般的にどちらが使われているのか
知りたくて質問しました。
あと、もしstrという配列(バッファというやつですか?)を使ってファイルに書き出そうとしたら、
要素数はどのくらいがいいんでしょうか。
やっぱりstr[256]とか2の倍数がよいのでしょうか?理由は知りませんが…。
0872デフォルトの名無しさん
NGNGということにしたいのですね? :)
ってサッパリ意味がわからん。
何これ、キティ語なの?
0873デフォルトの名無しさん
NGNGその質問はスレ違い。
マ板の該当スレで聞け。
0874デフォルトの名無しさん
NGNGどこくらいのバッファがいいかは、実際に動かす環境で
実験してみるしかないね。
標準入出力関数を使えば、一応バッファリングはしてくれるから、
そんなにせいいっぱいの性能を求めるんじゃなかったら、
一文字ずつ処理してもいいよ。
0875デフォルトの名無しさん
NGNG最近のマシンなら、1メガくらいとってみるとか。>バッファ
0876867
NGNGありがとうございます。
レスを読むと、どうも文単位で読み込むのが常識みたいですね。
とりあえずscanf("%s")→putsで作成してみます。
0877デフォルトの名無しさん
NGNGバッファサイズは BUFSIZ を使うのが普通かもね。
だが、普通は getc()/putc()マクロを使えば十分速いです。
fgetc()/fputc() はたぶん一番遅いっす。
0878デフォルトの名無しさん
NGNG866 に返事を書けないことでわかるが、無意味な言葉。
「ぼく、降参」程度に受け止めておけばよい。
0879デフォルトの名無しさん
NGNGscanf("%s") 使うぐらいなら、fgets() 使えって。
キケンでなおかつ遅くて良いことないよ。
0880デフォルトの名無しさん
NGNG> とりあえずscanf("%s")→putsで作成してみます。
scanfでファイルの終わりをどうやって検出しようと思っているのか
小一時間問いつめたい
# まぁ無理すればできなくはないが...
0881デフォルトの名無しさん
NGNGscanfを使うと、シロウトあつかいされますよ。
0882デフォルトの名無しさん
NGNG戻り値見ろよボケ。
0883867
NGNGファイルの終わりはctrl+Dで出力します。(UNIX環境です)
学校の自習問題の一部ですので…。
fgets()ならEOFの時NULLが返るので扱いやすいのでしょうか。
でも、これだと先ほどのstr[256]とかしたときに256文字を越える行が
出て来ると処理できないのかと思うのですが。
たとえば260字の行が出てきたら、最後4文字が読み込めないのではないですか?
これが気になってscanfを使おうと思っていたのです。
無知でスミマセン。
0884867
NGNGほんと素人なので、右も左もわかんないんです。
なぜscanfを使うべきではないのか、理由を教えてもらえないでしょうか?(煽りではなく、マジ質問です)
0885デフォルトの名無しさん
NGNGそれでもバッファオーバランを防止できないんですよ
そこでまたブチギレですよ。
0886デフォルトの名無しさん
NGNG> でも、これだと先ほどのstr[256]とかしたときに256文字を越える行が
>出て来ると処理できないのかと思うのですが。
fgetsは2回に分けて読めばいいのですが、
scanf, getsだと256文字を越える行が出て来ると
何が起こるかわかりません。
0887867
NGNGあ、二回に分けて読むことができるんですね。
それだとどんな長い文がきても安心できます。
ありがとうございます。
fgets→fputsでやってみることにします。
0888デフォルトの名無しさん
NGNGgetchar(),fputc()で一文字ずつ処理したほうが簡単かも。
0889デフォルトの名無しさん
NGNGヤーヤーヤー
0890867
NGNG標準入力からファイルに書き出す時は、ファイルオープン、ファイルクローズをしなくてもよいのでしょうか?
0891デフォルトの名無しさん
NGNG> 標準入力からファイルに書き出す時は、ファイルオープン、ファイルクローズをしなくてもよいのでしょうか?
標準入力、標準出力、標準エラー出力は最初からopenされていて、
プログラム終了時にcloseされていることは保証されている。
だから(゚ε゚)キニシナイ
0892867
NGNGレス下さった皆さん、本当にありがとうございました!
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNGバッファサイズ指定しろあゴルァ
0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNGアンサーブックの通りになっていたのですか。
いや簡単なやつなら全く同じになりますが
複雑な方はちょっと
0897Kusakabe Youichi
NGNG> > とりあえずscanf("%s")→putsで作成してみます。
> scanfでファイルの終わりをどうやって検出しようと思っているのか
> 小一時間問いつめたい
> # まぁ無理すればできなくはないが...
そう「無理」はしなくてもいいでは?
0898Kusakabe Youichi
NGNG> ファイルの終わりはctrl+Dで出力します。(UNIX環境です)
> 学校の自習問題の一部ですので…。
その授業ではどんな教科書を使っているのですか?
0899Kusakabe Youichi
NGNG> >>881
> ほんと素人なので、右も左もわかんないんです。
<--こっちが右 こっちが左です-->
# 信用するかな?
> なぜscanfを使うべきではないのか、理由を教えてもらえないでしょうか?
教科書にそんなことも書いてないのですか?
0900!f84%3dm2
NGNG書いてない教科書多いと思うけど。
0901Kusakabe Youichi
NGNG> > 教科書にそんなことも書いてないのですか?
>
> 書いてない教科書多いと思うけど。
いい教科書を選びましょうね。
0902ig
NGNGc言語のキャストについての質問です。
環境は、Solaris2.6&SUNのccコンパイラです。
(intを返す関数へのポインタ)を(longを返す関数へのポインタ)型に
キャストするにはどのようにコードを書けばよいのでしょうか?
---以下、詳しい説明
(longを返す関数へのポインタ)をメンバ変数に持つ構造体
を宣言しました。
仮にこの構造体を
typedef struct {
long (*function)();
} sa;
とtypedefするとします。
その後、.cファイルの中で
sa va[]={{a},{b},{c}}
てな感じで宣言したいのです。
ただし、a(),b(),c()は、intを返す関数として定義してしまって
るんですよね…
だからキャストして{警告: 初期値設定の型が一致していません}
ってな警告を黙らせたいなと思ってます。
0903デフォルトの名無しさん
NGNGtypedef int (*int_func)();
sa va[]={{(int_func)a},{(int_func)b},{(int_func)c}}
動作確認してないけど、こんな感じかな?
0904ig
NGNG>>デフォルトの名無しさん
ありがとうございます。
このやり方でコンパイラは黙ってくれました。
ただ、
typedef long (*long_func)();
でしたけども。
0905デフォルトの名無しさん
NGNG>typedef long (*long_func)();
だね。スマソ。
0906デフォルトの名無しさん
NGNGいような奴は最初から見込みないと思う(ゲラ
0907デフォルトの名無しさん
NGNG話が見えませんが…
0908Kusakabe Youichi
NGNG> ただし、a(),b(),c()は、intを返す関数として定義してしまってるんですよね…
> だからキャストして{警告: 初期値設定の型が一致していません}ってな警告を黙らせ
喇叭を使う :-P
0909Cハッカー日下部陽一
NGNG早めの移行をお願いします。
http://pc.2ch.net/test/read.cgi/tech/1008300863/l50
レス数が900を超えています。1000を超えると表示できなくなるよ。