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/
684 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 22:37:32 ] いやコンパイルエラーになるんだろ。 たぶん、構文的に駄目になっているのだろうとしか言えない。 後できちんと規格書に当たってみる。 とりあえず、文字列リテラルの中でタブ文字を表現したければ、 タブを直接入力する代わりに\tを使えばいいと言っておく。
685 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 22:44:18 ] >>683 ほんとにCはかじったばっかりなんでよく分からない上に 今気づいたんだけどスペースに半角使用してしまったため↑の位置が変すぎる('A`) "と7のスペースね。 strlenって言ったら文字列の長さだよね? Tabキーのスペースは普通のスペースの何個分もあるけど1カウント?しかしないという解釈でいいのだろうか?
686 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 22:48:07 ] >>685 やってみたほうがよく分かる
687 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:05:02 ] >>684 指導書に基づいてプログラム作ってるんだ。 基本的に書き換え不可だからそういうことはできないんだ >>686 ほんとに実習でやってるだけだしそんな環境ないんだけど('A`)
688 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:12:54 ] 環境もないのに実習なんて言うのか?
689 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:28:53 ] >>688 ヒント:やるのは学校今は家にいる 学校のPCは勝手に使っちゃいけないんだ。
690 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:30:22 ] じゃぁ学校でやれよ。ここで文句言われてもどうしようもない。
691 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:32:15 ] >>689 今書き込みをしているのが自分の自由に使えるPCからなら、 開発環境をインストールすることを勧める
692 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:36:48 ] >>691 今やってみたがページが真っ白のまま止まってしまう。 ダメみたいだ/(^o^)\
693 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:38:11 ] とりあえずお前はCの勉強する前にPCの勉強をしろ。
694 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:40:29 ] >>692 Windows Vista と予想
695 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:49:11 ] やっぱり聞くんじゃなかったかな。 もう書かないよ。僕のせいで13レスも進んでしまって申し訳ない。
696 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:54:59 ] そりゃあんた、初心者スレなりに行けばいいものをこんなスレに書くからだ。
697 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:59:16 ] 寿司食いたい
698 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 09:13:41 ] 基本的に書き換え不可なのに、なんでスペースをタブにしようとすんの?
699 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 10:29:56 ] スペースをタブにできるなら、スペースを\tにもできるだろう
700 名前:デフォルトの名無しさん [2007/07/12(木) 10:53:19 ] ファイルがテキストファイルかバイナリーファイルかを Cプログラムで判定したいのだけれど、方法を教えてくれ。
701 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 11:01:37 ] >>700 ファイルの内容を1バイトずつ全て調べて、テキストファイルに通常含まれない コードが含まれているかどうかをチェックするしかない。 ただし fopen() でバイナリモードで開くのを忘れずに。
702 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 11:23:16 ] つ[/usr/bin/file]
703 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 11:33:10 ] 文字データって言ってもいくつかの体系を考慮したら・・・ヘッダとか考えてみたけど それも当てにならんか・・・っつーことで、ちゃんと拡張子を付けい。
704 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 12:26:31 ] >>702 ここをどこだと思ってるんだ
705 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 12:27:18 ] そもそもテキストファイルとは何なのか。
706 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 12:28:40 ] SUBをファイルの終わりとして認識すべきファイルのこと。
707 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:25:59 ] >>706 CP/M の世界から、ようこそ!
708 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:46:50 ] 発注元がどうしても欲しい、というのでフローチャートを書いているのですが #if を if文とフローチャート上で区別する方法はありますか? 具体的には #if defined(MODEL_xx) if (zzz) { processYYY(); } #endif ソフトは MODEL_xx が定義してあるやつとそうでないもの、両方納品します。
709 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:58:46 ] 両方納品するんならフローチャートは2セット要るんじゃないか?
710 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 09:42:40 ] >>708 定義してあるかどうかで動作が変わる関数のみ 複数書けばいい希ガス。
711 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 10:21:15 ] if文は実行時に働くものだからフローチャートの一部だが #ifはコンパイル時に働くものだからそもそも異なる実行ファイルができるわけで よってフローチャートもその数だけ必要になる っていうかCの話かこれ?
712 名前:デフォルトの名無しさん [2007/07/13(金) 16:31:31 ] char型のcharってcharacterの略で%nのnはnewlineの略ですよね? こういう略してある語の元の単語が載ってるサイトってないですかね? 探してもこの2つしかわからなくて
713 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 16:36:42 ] 念のために言っとくが\nな 語なんてそんなに多くないから何がわからないか聞けばここで全部答えてもいいぞ(一回にまとめるなら)
714 名前:デフォルトの名無しさん [2007/07/13(金) 18:17:06 ] \nでしたすいません stdioとhの意味 printfのprintとfの意味 scanfのscanとfの意味 int型 int double型 double %f f %c c %s s \t t 全部でこれだけなんですがお願いできますか?stdioはstandard input outputかなとも思うんですが
715 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 18:28:06 ] とおりがかりだけど、 hはheader、fはformat、intはinteger(整数)、doubuleはDouble Precision(倍精度(実数))、 %f はfloat(floating point 浮動小数点)、%c はcharacter、%sはstring、\t はTAB あとは想像通り、辞書ひいてもいいし。 まあ誰かまとめてくれるかな。
716 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 20:07:17 ] printfはprint formatted
717 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 20:26:52 ] stdioはStandard IO(InputOutput)
718 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 20:42:49 ] 714は挙げていないけど、%gはe、fの次の文字だからという理由。 ANSI C言語辞典にはそう書いてある。
719 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 22:22:38 ] >>712 新ANSI C言語辞典って本にたいがい載ってるけど、それだけに買うのはもったいないしな。
720 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 00:13:43 ] 俺あれもってるけど、一度も引いたことないわ manかぐぐればいいだけの話しだしな
721 名前:名無し [2007/07/14(土) 05:10:14 ] hpcgi3.nifty.com/mmgames/patio/patio.cgi? ここの「ファイル入出力」ってやつ分かりません。 助けてください
722 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 05:18:33 ] >>721 初心者スレへどうぞ。
723 名前:デフォルトの名無しさん [2007/07/16(月) 03:14:46 ] (a+1)x^2+(b+1)x+(c+1)=0を 解くプログラムがわからないorz a=1b=1c=1を入れるのだが #include<stdio.h> int main(void) { int a=1,b=1,c=1,d,x,y; scanf("a=%f",&a); scanf("b=%f",&b); scanf("c=%f",&c); d=b^2-4*a*c; if(d>0) x=(-b+sqr(d))/a; y=(-b-sqr(d))/a; printf("x=%d,%d\n",x,y); elxe printf("解なし\n"); return 0; } ではダメみたいなんよ よくわからない、たすけておくれ
724 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 03:37:42 ] マルチすんな
725 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 10:19:32 ] elxe これなに
726 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 10:23:46 ] マルチ先で指摘済み pc11.2ch.net/test/read.cgi/tech/1184003625/
727 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 21:36:40 ] C99で、 for(int i = 0; i < 10; i++) /* something */ ; みたいにforの中で変数宣言できますけど、 while( int i = f() ) /* something */ ; みたいなことはできないんですね。不便。
728 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:26:34 ] >>727 C99だとできないんだっけ? その書き方ができるとどこが便利なのかわからないけど
729 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:27:05 ] 条件判定のところで変数宣言して何の意味があるんだい?
730 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:28:33 ] 判定のたびにブチ壊しては作り直すのであろうよ おほほほ
731 名前:727 mailto:sage [2007/07/16(月) 22:49:06 ] while( obj = nextObj() ) { // something } みたいなことしません?
732 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:55:17 ] int obj; while( obj = nextObj() ) { // something } でいいじゃんとか思ったら負け?
733 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:03:09 ] >>727 for文の第一節はループ開始前に一回だけ実行される。 だから for(int i=0; … は、ループ開始前に変数iを確保して0に初期化し、 ブロック(forループ)を抜けたら破棄することを意味する。 対してwhile文の条件節は、処理がループするごとに実行される。 もしここに while(int i= … と書いたとしたら、 それは処理の先頭にくるたびにiを宣言するという意味になるが、 まだその時点ではブロックを抜けていないから、 前に宣言したiは有効で、これは文法上エラーとなる。 もし while(static int= … と宣言してうまくいくとしても、 それはおそらく何の利益もない。
734 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:04:35 ] for(i=0;i=f();i=0){ とでも書いとけ
735 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:08:04 ] そんなにループ内だけで変数を使いたいなら関数にでもしてしまえばよろしい
736 名前:734 mailto:sage [2007/07/16(月) 23:10:44 ] まちがったが訂正はしない わかって おねがい
737 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:15:49 ] { int obj; while( obj = nextObj() ) { // something } } みたいにブロックで囲めばいいじゃん。
738 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:25:36 ] つーか for (int obj; obj = nextObj(); ) { // something; } でおk
739 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 08:18:31 ] はんのーした香具師らは負け組
740 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 10:40:12 ] >>733 >それは処理の先頭にくるたびにiを宣言するという意味になるが ブロック先頭での宣言と同様に扱えばいいわけですが 規格ではそうはしなかった、ってだけの話では?
741 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 15:04:07 ] >>740 そもそもそんな話じゃない。 規格では while に書いたステートメントは値を返さないといけないが、 int i = ... のような変数の宣言は値を返さないので書けないだけの事。
742 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 15:10:43 ] >>741 > while に書いたステートメント > 変数の宣言は値を返さない 現行の規格の話するんなら正確にな。 文法的に while の条件に文は書けない。 式だけ。そして文には値とかないから。
743 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 16:31:46 ] なんというマジレスの嵐
744 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 17:23:12 ] for (;int i = hoge();)
745 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 17:32:03 ] 寿司食いたい
746 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 17:35:08 ] >>745 ガリでも食ってろ
747 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 18:50:31 ] C++でできるんだから、C99でできるようにすることも可能だったとは思う。 どういう経緯があったかは知らないが、結果として制定されたC99では、 できるようになっていないけど。 以下チラシの裏 これは、こういうコード Tok* ct; if (ct = gettok()) { /* ... */ } に対して、条件式のところで変数を宣言できれば、未初期化の変数を減らせ、 ついでに条件文内に変数の有効範囲を閉じ込められるというアイデアだった。 if (Tok* ct = gettok()) { // ctはスコープ内 } // ctはスコープ外 参考『C++の設計と進化』 3.11.5.2 条件文の中の宣言 C++では、C以上に初期化と代入が区別されるので、 >>737-738 のような書き換えができないこともある。 それもあって、俺はたまに使うし、C++からは無くなれと思わない。
748 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 19:06:31 ] この文でコンパイルできるんだが結果が正しくでません。 どこか誤りありますか? #include<stdio.h> void main() { int a, b,c; printf("a = "); scanf("%d",&a); printf("b = "); scanf("%d",&b); printf("c = "); scanf("%d",&c); if( a == b == c ){ printf("%d\n",a); }else if( a >= b >= c ){ printf("%d\n",a); }else if( a >= c >= b ){ printf("%d\n",a); }else if( b >= a >= c ){ printf("%d\n",b); }else if( b >= c >= a ){ printf("%d\n",b); }else if( c >= a >= b ){ printf("%d\n",c); }else if( c >= b >= a ){ printf("%d\n",c); } }
749 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 19:14:43 ] >>748 「何をやろうとしているのか、また何が正しいのかは コードから読みやがれ」ってか。大した奴だ。 …とか思ってたら、ひと目で変な記述が。 >if( a == b == c ){ >if( a >= b >= c ){ :(略) そんな書き方できない。 面倒でも if (a == b && b == c) { if (a >= b && b >= c) { :(略) と書かないと。
750 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 19:16:46 ] >>749 スマソ。そしてありがとう。 そうやったら、できました。
751 名前:c言語初心者 [2007/07/17(火) 19:38:16 ] 突然すいません!!学校の問題でc言語の問題が3つ出たのですがまったくわからないです。問題書き込むんで誰か解いてもらえませんか? よろしくお願いします。
752 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 19:40:08 ] OKとりあえず宿題スレ逝け。
753 名前:c言語初心者 [2007/07/17(火) 19:43:22 ] 宿題すれってあるんですか??
754 名前:デフォルトの名無しさん [2007/07/17(火) 19:45:11 ] C言語なら俺に聞け(入門篇) Part 16 pc11.2ch.net/test/read.cgi/tech/1184003625/
755 名前:c言語初心者 [2007/07/17(火) 19:50:54 ] ここならしていただけるんですか??
756 名前:デフォルトの名無しさん [2007/07/17(火) 19:53:03 ] >>755 >>751 > 学校の問題 C/C++の宿題を片付けます 93代目 pc11.2ch.net/test/read.cgi/tech/1184506311/
757 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 19:55:22 ] ただし回答者の気が向いたら 気に入られなければスルーされる
758 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 05:49:19 ] スレ立てられなかった。誰かキボン。 スレタイ: 【初心者歓迎】C/C++室 Ver.40【環境依存OK】 エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 age 推奨ですが、自己判断で。 ◆ 前スレ: 【初心者歓迎】C/C++室 Ver.39【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1182740506/ ◆ アップローダー (質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
759 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 11:05:17 ] >>758 何故このスレで……
760 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:58:47 ] もう立ってるね
761 名前:デフォルトの名無しさん [2007/07/19(木) 01:02:10 ] cの入門書とポインタ攻略本を読んでほぼ理解できたんだけど次に何読めばいいかわからん 何かお勧めの参考書教えてください
762 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:05:40 ] アルゴリズムとデータ構造
763 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:10:14 ] 30日でできる! OS自作入門
764 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:13:03 ] K&R
765 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:41:38 ] アルゴリズム辞典
766 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:10:47 ] >>761 >読んでほぼ理解できたんだけど 本当なら大したもんだけど、 >cの も少しケースセンシティブになろうね。
767 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:12:03 ] ケースセンシティブにもう少しもないものだ
768 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 01:15:22 ] たしかにw まぁ、ポインタは理解したんだろう。 面倒なのはポインタよりも、ポインタの絡んだ型宣言の方だから。
769 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 01:38:29 ] えーとintの配列へのポインタを受け取って関数へのポインタへのポインタを返す関数・・・
770 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 11:12:34 ] typedef って便利だよな。
771 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:33:33 ] 俺は、typedef void (*func)(int)っていうのを見て 何をtypedefしてんだ?と思った時期もありました。
772 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:53:23 ] void (*const *foo(const int (*p)[10]))(void (T::*)(int (U::*)()));
773 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 17:03:50 ] typedef様様だな
774 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 17:16:19 ] >>771 それ何をtypedefしてるの? 初めて見た
775 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 17:29:32 ] >>774 intの引数が1つで値を返さない関数を func にtypedef 例えば、、、 void foo(int); func f = foo; とか
776 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 17:38:57 ] なるほどー 自分に使う機会が来るかはわからんけど覚えておこう thx
777 名前:デフォルトの名無しさん [2007/07/20(金) 18:12:25 ] C言語をはじめたばかりであまりわからないのですが、 ビットシフトはなんの役に立つのでしょうか?
778 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 18:13:29 ] typedef int (U::*FP1)(); typedef void (T::*FP2)(FP1); typedef void (*FP3)(FP2); const FP3* foo(const int p[][10]);
779 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 20:18:26 ] >>777 ビットフラグのクリアとか?
780 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 20:45:24 ] >>777 ビットの配列を作るときに使う
781 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 20:45:55 ] 「作る」じゃなくて「操作する」だな。すまん。
782 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 21:50:27 ] >>779-781 ビットシフトはなんの役に立つのでしょうか? でぐぐれ
783 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 21:56:19 ] そういえばどうしてローテートはないんだろ
784 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 22:20:58 ] >>777 コレ見るの、3回目か4回目くらいなんだけど、ギャグかなんかなの?