1 名前:デフォルトの名無しさん [2007/02/01(木) 23:08:46 ] このスレは標準Cのみの限定スレです。 まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。 質問する前には最低限検索を。 エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。 C FAQ 日本語訳 www.kouno.jp/home/c_faq/ Cプログラマ必読 ・プログラミング言語C(通称 K&R) www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244 他の過去ログはここに nssearch.hp.infoseek.co.jp/clang/ 前スレ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130 pc10.2ch.net/test/read.cgi/tech/1159613789/ GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は 専門の別スレッド↓があるのでそこへさようなら。 【初心者歓迎】C/C++室 Ver.34【環境依存OK】 pc10.2ch.net/test/read.cgi/tech/1169039760/ C/C++の宿題を片付けます 82代目 pc10.2ch.net/test/read.cgi/tech/1169575464/
515 名前:デフォルトの名無しさん [2007/05/10(木) 18:10:54 ] ごめんなさい。でも真剣に困ってるし助けてほしいんです。よろしくお願いします。
516 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 18:12:27 ] だからscanfつかえよ
517 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 18:13:24 ] 帰れ
518 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 18:13:55 ] 常識知らずにかける情けは無い
519 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 18:20:37 ] スレ違い
520 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 19:38:09 ] だーから相手すんなってば。 相手するなら誘導してやれ。
521 名前:デフォルトの名無しさん [2007/05/10(木) 22:03:02 ] >>515 ですけどもういいです。もっとできる人探しておしえてもらいます。 ここにいる人達はどうせこのプログラムがかけないんでしょ? こんなしたてに聞いているのにひどい人達ですね。みなさんわからない 時期はなかったんですか?
522 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:07:50 ] 君は自分の要求を受け入れる人の言うことにだけ耳を傾けるのかね。
523 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:24:34 ] >ここにいる人達はどうせこのプログラムがかけないんでしょ? こういうこと言うやつに何も教える気は無い、消えろ。 その聞き方じゃどこ行っても同じだぞ、初心者にしか相手してもらえない
524 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:26:54 ] 少なからず相手しちゃってる件
525 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:26:59 ] ネタにマジレスカコイイ
526 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:30:26 ] でしょでしょエヘヘ
527 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:53:21 ] でも実際こういう新入社員は居る事実。
528 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 16:58:23 ] >>521 を本人が書いているという保証はどこにもないなあ・・・。
529 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 17:41:56 ] だから?
530 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:21:44 ] 疑問文に感嘆符つけて質問する奴は俺の中ではスルー対象だわ。 非常に高い確率でDQNだからな。相手してられん。
531 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:23:12 ] 疑問文に感嘆符とはどういうことだね!
532 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:35:48 ] ?!
533 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:37:02 ] >>530 感嘆符つけて質問する奴なんてお前のレス以前に見たこと無い。
534 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:39:36 ] 勘違いしつつぼやく奴は俺の中ではスルー対象だわ。 非常に高い確率でDQNだからな。相手してられん。
535 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:43:23 ] インテロバーング
536 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:46:44 ] 疑問符と感嘆符を間違える奴は俺の中ではスルー対象だわ。 非常に高い確率でDQNだからな。相手してられん。 って、スルーできてねーっつーの。
537 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 13:03:18 ] 今こそスルー力が試されるとき!
538 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 13:34:27 ] throw new NullPointerException("ぬるぽ");
539 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:05:17 ] try { >>538 } catch(Exception e) { System.out.println("ガッ"); }
540 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:06:41 ] Javaはスレ違い。 C言語で書け!!
541 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:06:53 ] >>483 あんまり暴れるな 「IDが一致してたら表示」でいいんだよね FDからIDを1つ取ってくる それをPCのファイルのIDを照らし合わせて一致したら表示 次のIDをFDから持ってきて上を繰り返す という手順でいいんじゃない? いまケータイだからソースは載せられんけど
542 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 16:43:12 ] >>541 >あんまり暴れるな 君みたいに、いちいち反応する連中がいなくなってくれれば もっと早く収束してたんだろうけどね。
543 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 16:47:37 ] あまりにくだらない
544 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:24:35 ] >>542 いちおう>>541 はやり方書いてるけど?
545 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 18:18:25 ] >>544 は?関係ねえよ。 >>486
546 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 18:36:30 ] てst
547 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:56:34 ] >>545 とりあえずおまいが氏ね
548 名前:デフォルトの名無しさん [2007/05/15(火) 23:15:56 ] どなたか www.cns.ci.ritsumei.ac.jp/~kitano/exp1/ex3.html の08、09の解析をしていただけないでしょうか?
549 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 23:22:45 ] >>548 スレ違い
550 名前:デフォルトの名無しさん [2007/05/20(日) 06:03:52 ] 整数12ビットの列を扱うには、構造体のビットフィールドを使うしかないのでしょうか?
551 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 06:33:12 ] 16bitなり32bitなりで読み込んで 必要な部分だけマスクして取りだしゃいい。 それでも外部に記録されているものを読み書きする場合には エンディアン依存は避けられないが ビットフィールドよりはまし。
552 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 13:14:54 ] charを介して変換すればマシンのエンディアンには依存しない どう変換するかは元データのエンディアンによる(6ビット1バイトだとすれば)
553 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:36:09 ] どうせ外部とのI/Fなら、コンパイラもセットで依存し捲くってもいいというコンセンサスを得た上で ビットフィールドを使うのが一番楽だと思うが。 #後は野とn(ry
554 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:00:06 ] そしてBeOSの悲劇
555 名前:デフォルトの名無しさん [2007/05/21(月) 16:02:25 ] 1000までの素数を求めて出力するプログラムの作成を教えてください。 mod使う方法で。
556 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:14:04 ] mod 素数 C言語あたりでググったほうがはやい
557 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:15:12 ] つか、Cでmod使えとは。 >>555 宿題スレへ行け。そしてもう来るな。
558 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:18:27 ] #define mod(a, b) ((a) % (b))
559 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:27:29 ] inline int mod(int a, int b) { return (a % b); }
560 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:15:06 ] ファイルの行数を数えてその分配列を確保したいのですが、 このような配列の使い方(foo関数の部分)をしていいのでしょうか? malloc()した方がいいんでしょうか。 よろしくお願いします。 int main() { int line_count; file_line_count(&line_count); //ファイルの行数を数える関数 foo(line_count); } void foo(int line_count) //foo関数 { int array[line_count]: ^^^^^^^^^^^^^^ : : }
561 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:33:19 ] >>560 対象とする規格による。いわゆる C99 なら標準で認められている。 C99 より前の C の規格や現行の C++ では認められていない。
562 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:34:16 ] >>560 そのような可変長の配列はC99で採用された仕様だから、 一部のC89信者に蛇蠍の如く忌み嫌われる。 まぁ、C99限定でいいのなら使っていいと思うよ。 但し、スタックサイズに注意すること。
563 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 02:47:44 ] 関係ないけどファイルの行数を数える関数で戻り値使わないでポインタ渡しなのが気持ち悪い・・・
564 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 02:51:17 ] 昔あった、関数は全部voidで宣言しろっていうとんでもないコーディングルールを思い出した
565 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 04:45:24 ] >>564 戻り値を表示できるデバッガが無かったとか?
566 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 08:22:36 ] でも結構しっかりしたC用のAPIだと戻り値はエラー状態を表すのに使われていて、 本来戻り値になるであろうものもポインタの引数になるというのはよく見かける。
567 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 08:33:37 ] MPI とかそんな感じだったような。
568 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 09:41:44 ] 余計 void はありえないなw
569 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 11:30:55 ] 戻り値のチェックを忘れる馬鹿がいるから、とかじゃね?
570 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 11:36:05 ] is〜な問い合わせ関数でも、戻り void でステートをポインタ引数に取るのか… たまんねーコーディング規約だな
571 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:25:39 ] >>570 うんにゃ ポインタは渡さない 後はわかるな?
572 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:33:04 ] よりよってグローバル変数かよ。
573 名前:572 mailto:sage [2007/06/04(月) 23:33:55 ] "に"が抜けた。 ×よりよってグローバル変数かよ。 ○よりによってグローバル変数かよ。
574 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:52:32 ] >>572-573 が妙にイラッと来る
575 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:02:58 ] ×>>572-573 が妙にイラッと来る ○>>572-573 が妙にムラッと来る
576 名前:560 mailto:sage [2007/06/05(火) 00:03:24 ] >>561 >>562 有難うございます。 色々つっこまれてる。(;゚□゚)
577 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 05:00:17 ] >>571 まあ、N88-BASIC のコードを移植するプロジェクトならアリかもしれんが・・・。
578 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:40:27 ] >>572 eax だってグローバル変数だー (i86系)
579 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:42:30 ] スマン環境依存スレじゃなかった
580 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:42:38 ] >>578 いくらなんでもスレ違い。どっか他所でやってくれ。
581 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:53:48 ] レジスタはスレッド切り替わる時に退避されるからスレッドセーフで、 グローバル変数なんかとは格が違う。
582 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 14:01:55 ] >>581 >580
583 名前:デフォルトの名無しさん [2007/06/13(水) 23:07:43 ] pc11.2ch.net/test/read.cgi/prog/1175485506/758 char *data = 30000; ↑これに対して↓を行うと gcc -fsyntax-only -x c -std=c99 -pedantic -Wall -Wextra :1: warning: initialization makes pointer from integer without a cast と警告は出るけどエラーにはならない。あれ?と思って規格を見た。 6.7.8 Initialization p11 に "the same type constraints and conversions as for simple assignment apply" とあったので 6.5.16.1 Simple assignment の Constraints を見たけど、 左辺ポインタで右辺が整数というのは認められないように見える。 規格ではエラーになるべきなんじゃないの? ちなみに C++ では思ったとおりエラーになった。
584 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 23:09:15 ] 暗黙の・・・
585 名前:デフォルトの名無しさん [2007/06/22(金) 04:01:03 ] ファイルサイズの取得方法って、「ftell」を使用するのが常道なんでしょうか。 Cでファイルサイズを取得する場合、自分は「fgetpos」を使用すのかなーと漠然と考えていて【B】のようなソースを考えていたんですが、 >>402 がファイルサイズの取得方法として「ftell」を利用してるとのことだったので、【A】のようなソースも考えてみました。 やはりAのほうがよいのでしょうか。。。 ======================== 【A】 ======================== long size = 0L; FILE *fp = NULL; fp = fopen( "hogehoge.jpeg", "rb" ); if ( fp == NULL ) { /* エラー処理 */ } else { if ( fseek( fp, 0L, SEEK_END ) != 0 ) { /* エラー処理 */ } else { size = ftell( fp ); if (size == -1L ) { /* エラー処理 */ } if ( fclose( fp ) != 0 ) { /* エラー処理 */ } } } /* sizeの値がhogehoge.jpegのファイルサイズ */
586 名前:585 [2007/06/22(金) 04:01:52 ] で、Bです。 ======================== 【B】 ======================== fpos_t *pos; FILE *fp = NULL; fp = fopen( "hogehoge.jpeg", "rb" ); if ( fp == NULL ) { /* エラー処理 */ } else { if ( fseek( fp, 0L, SEEK_END ) != 0 ) { /* エラー処理 */ } else { if ( fgetpos( fp, &pos ) != 0 ) { /* エラー処理 */ } if ( fclose( fp ) != 0 ) { /* エラー処理 */ } } } /* posの値がhogehoge.jpegのファイルサイズ */ /* fpos_tってキャストできそうだからサイズの値が取れると思ったのですが。。。 */ ========================
587 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 04:02:02 ] 環境依存の方法を使うのが普通じゃないかな。
588 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 04:04:05 ] >>586 全然本質じゃない細かいところで > fpos_t *pos; これは fpos_t pos; だよね。多分わかってはいるとは思うんだけど。
589 名前:デフォルトの名無しさん [2007/06/22(金) 04:14:58 ] fpos_tって別の変数にキャストしたりするとき困らない? fpos_tって環境依存だからlong long型とは限らないと聞いたことがある。
590 名前:デフォルトの名無しさん [2007/06/22(金) 04:19:29 ] 横からすみません。 この>>585 って、もしhogehoge.jpegのファイルサイズが巨大だった場合、 どうなっちゃんですか?
591 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 05:16:26 ] 標準Cでは2GBを超えるファイルのサイズを知る手段はないって結論になる。 fpos_tがキャスト可能であることは保障されていないことだし。 ファイル関連は標準Cだけで書くのを諦めて、64ビット系のstat()相当の関数を使うのが無難じゃない?
592 名前:デフォルトの名無しさん [2007/06/22(金) 06:19:36 ] >>587 〜のみなさん、ありがとうございました(588さんご指摘ありがとうございます)。 ファイルのサイズが大きい場合のことまで頭が回っていませんでした。 標準Cでは難しそうですね。 stat等の機能を持つ関数使用が無難といったところでしょうか。 一応stat使用時のソースも考えてみましたが… struct stat fInfo; if ( stat( "hogehoge.jpeg", fInfo ) != 0 ) { /* エラー処理 */ } else { /* fInfo.st_sizeにファイルサイズが入る */ } あるいは・・・非 POSIX 標準 API インタフェースで(UX上で動作) struct stat64 fInfo; if ( stat64( "hogehoge.jpeg", fInfo ) != 0 ) { /* エラー処理 */ } else { /* fInfo.st_sizeにファイルサイズが入る */ }
593 名前:デフォルトの名無しさん [2007/06/22(金) 07:49:47 ] 相乗り質問ですいませんが ファイルサイズ自体を知りたいのではなくて ファイルサイズがある一定値を超えているか否かを判定したい場合も、 やはりstatなりftellなりでバイトサイズを一度取得してから if文で判定するしかないですよね。 2GBだろうが3GBだろうが、とにかくある値を 超えてるか超えてないかだけわかればいいのですが。。。
594 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 08:16:12 ] ファイル開いたらある値まで無理矢理ファイルポインタ動かしてみて エラーが出るかを拾うってのはどうだろう やっぱ2GB超えちゃうとダメなのかな
595 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 08:36:48 ] そもそもファイルが開けないとサイズが調べられないプログラムはどうかと思うんで、 stat64 なりで調べた方がいいと思うよ。
596 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 08:45:05 ] ていうかPOSIX環境だと_FILE_OFFSET_BITS=64が無ければ 2G以上のサイズはのopen/fopen自体が失敗する。 Windows環境だとopenは出来るけど、seekが出来ない(シーケンシャルには読める)。 それぞれ、open64や_lseek64(bccには無い)を使う。 もちろん、_FILE_OFFSET_BITS=64なら、openだけでよい。 また、statも同様に、_FILE_OFFSET_BITS=64ならstatだけで良いが それ以外はstat64等を使う。
597 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 09:31:14 ] そもそもfseek()はエラーを返せない。
598 名前:デフォルトの名無しさん [2007/06/22(金) 09:54:27 ] stat構造体のst_sizeはoff_t型だから、…… long int型になるのかな、 そうするとlong int型に格納しきれないバイト数のファイルは 桁あふれするのかな? 0? 再現させてテストしたいが 環境が手元にないのだが。。。。。。
599 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 10:00:42 ] だからoff_t型の大きさは_FILE_OFFSET_BITSや_LARGEFILE64_SOURCEによって変わる。 off_tに格納できないようなサイズのファイルは、そもそもstat自体が失敗する。
600 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 10:07:58 ] あ、Windowsだとstatは失敗しないな。たぶん。 で、結果がどうなるかは処理系(ライブラリ)依存。 何故ならstatはエミュレーションしているので、 stat("c:/*", &st)が成功してしまったりする処理系があるから。
601 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 11:44:19 ] ファイルサイズというのが何を意味するかによる。 OS上でのサイズのことなら、 そもそも環境依存なので環境に用意されたAPIを好きなように使えばいい。 Cの入出力関数で読んだときのバイト数のことなら、 読めないようなものは無視してしまえばいい。 まあ、なんでファイルサイズを知りたいのかってとこまで 一回さかのぼって考えてみるのも一計。
602 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 22:25:44 ] サイズは「サイズ」以外ないだろ。 「文字数」とは違う。
603 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 08:17:34 ] 昔のCP/Mはセクタ数でしか管理してなかったなぁ
604 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 08:53:01 ] >>603 今のCP/Mとやらはどう管理しているの?
605 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 09:23:37 ] >>603 最終セクタの0x1Aまでがファイルの「サイズ」だろ?
606 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 09:45:36 ] でもそれは管理されてない。
607 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 09:54:38 ] ん、「管理されているかどうか」という話なの? 「ファイルのサイズとは何か」という話の揚げ足を取ろうとして墓穴を掘っただけじゃなかったの? だったらそれでいいけど。
608 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 09:57:38 ] あっと、 「ファイルのサイズとはOSに管理されていなければならない」という 話の流れとは関係ないことを言いたかっただけで 「ファイルのサイズとは一意に決まるものである」ということに対する反論じゃなかったって事ね。
609 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 10:25:40 ] バイナリファイルは「0x1aまで」というルールを採用できないからセクタ単位でしかサイズを得られない。
610 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 03:19:11 ] ファイルシステムがファイルのサイズをセクタ単位でしか管理してない上に、 テキストとバイナリで終端の扱いが違うようなシステムだって存在してたんだ。 統一した「ファイルサイズを得る方法」なんてあるわけがない。 あー、それから人の書き込みが何でも揚げ足取りに見えるとしたら重症だぞ。
611 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 03:23:51 ] ファイルサイズを取得する関数が標準で用意されなかったのは、 そのあたりが理由なのかな?
612 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 04:03:56 ] >>611 そそ、ファイルシステムという概念も統一できないからディレクトリ操作関係も入れられていないし ファイル操作もストリーム処理系を除くとremove()位しかない。
613 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 04:31:09 ] MS-DOS 1.0 もディレクトリないんだっけ?
614 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 04:43:31 ] 汎用機もねーよ
615 名前:デフォルトの名無しさん [2007/06/24(日) 22:22:42 ] C言語をはじめたばかりであまりわからないのですが、 ビットシフトはなんの役に立つのでしょうか?