1 名前:デフォルトの名無しさん [2008/04/29(火) 09:44:57 ] 言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 26 pc11.2ch.net/test/read.cgi/tech/1206196600/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 105代目 pc11.2ch.net/test/read.cgi/tech/1208268461/
151 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:25:08 ] system はセキュリティ上の問題があるからな。 一応そこんとこは分かった上でよろ。
152 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:11:28 ] >>148 だからそのコードをキーボードから入力することについての話だったんだが・・・ 何ごちゃごちゃその定義にまで話を持ち込もうとしてんだ??? お前ってさぁ、自分のステータスは良くなくても、所有している スポーツカーがかっこいいだろ?乗るかい?って乗った女性を 家までさらっていくタイプだろ?目的がちがーうって振られるタイプでしょ?
153 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:19:13 ] スレ違い
154 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:25:20 ] ttp://www.google.co.jp/search?q=EOF%E3%80%80%E5%85%A5%E5%8A%9B&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t EOFの入力は余裕で可能です、ありがとうございますた。
155 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:36:35 ] 入力の終わりを通知することを「EOFを入力する」と定めるなら、余裕で可能です。
156 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:47:55 ] この前だってそういう話で終わったじゃないか。
157 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:01:33 ] 荒らしに付き合うやつも荒らし キチガイに付き合うやつもキチガイ
158 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:38:01 ] getchar()が云々はどうでも良い。キーボードから入力が可能です 当然EOFコードを検出するのに、ファイルの終わりを示している コードを使うのもありです、本当に本当に、重ね重ね、ありがとうございますた!
159 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 09:40:33 ] □!!!これを見た貴方は3日以内に死にます!!!■ ■死にたくなければ、このレスをコピーして他のスレに □ □10回貼り付けて下さい。1時間以内にです!もし無 ■ ■した場合は、今日寝ている間に富子さんがやってきて□ □貴方の首を絞めに来ます。富子さんは太平洋戦争の■ ■時に16歳という若さで亡くなった女の子で、未だに成 □ □仏していないそうです。信じる信じないは貴方次第。 ■ ■今年になってからこのレスを無視した人で、“呪われ □ □て死亡した人”が続出しています。これは富子さんの ■ ■呪い。呪われて死んでもいいのならこれを無視するこ□ □とでしょうね。 ■ ■――貴方がこうしているうちに富子さんが後ろから見□ □ていますよ…。 ■ ■□■□■□■□■□■□■□■□■□■□■□■□
160 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 11:08:02 ] おまえらがくだらん煽りあいをしてると初心者の人が質問しにくいだろ
161 名前:その1は宿題スレね mailto:sage [2008/05/02(金) 11:30:28 ] どうせここは隔離スレ(その2)だからどうでもいいよ。
162 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:51:56 ] 一つ目のウィンドウにHello、二つ目のウィンドウにWorld を表示させるにはどうすればいいんでしょう?
163 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:53:07 ] レベル7のエスパーを求む!
164 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:53:47 ] >>152 何か切れてる? Unixなら伝統的に ^D = EOF そそ、だからといって通常に ^D (0x04) が現れても EOF にはならないよ。 とにかくファイルに EOF というコードが有ると勘違いしるのかとおもった。 >>160 おっと、すまん。そのとおりだ。
165 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:07:28 ] >>164 どのOSならとかどーでも良いんじゃい(竹原風に) キーボードからの入力は可能だし、EOFはマクロで値が定義されているし なんならそれに応じた入力をしてやりゃ良いんだよ。所詮俺らが視覚的に 見えているものは、デジタルデータ、0と1の組み合わせの符号、信号。
166 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:52:18 ] 配列の宣言時に[]の中に変数って使えないんだっけ? char num[sum]; みたいな
167 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:52:54 ] >>166 C99じゃあるまいし
168 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:54:49 ] >>163 すまない。俺はまだレベル6だ
169 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:02:16 ] つまりC99では使えると
170 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:06:20 ] 「可変長配列」この辺かな ttp://seclan.dll.jp/c99d/c99d04.htm#dt19990719
171 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:14:11 ] >>170 そのページのsizeofのところでふいたw 図からわかるようにって、代入しただけで何がわかるんだよ
172 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:16:40 ] >>171 図の中のコメントに代入されるはずの値が書いてあるから それを見ろということだろ。
173 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:23:54 ] >>166 結論からいうと変数は使えない・・・ので malloc alloc がある。 char* num = (char*)malloc(num*sizeof(char)); ... *(num+5) = 5; // or num[5] = 0; // みたいな... ... free(num);
174 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:26:19 ] C99では使えるっつーの。
175 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:32:18 ] >>165 どうも何かごかいしているね。 EOF = (-1) が定義されているとしてこの -1 は入力できない値(int)なのよ。getchar() などが EOF と判断した条件の時に文字として存在しない値 (int)-1 0xffff あるいは 0xffffffff が返されるものなのだから。。。判るかな?
176 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:37:27 ] >>175 君ね、いい加減鬱陶しい。マクロを知らないのか?所詮、プログラム言語も仕様も 人間が都合よく定義、規格化しているだけ。EOFがどうとかどうでも良いんじゃい。 所詮 数値データ だと何度も言っているだろ。あとはマクロを使うことで より幅広い環境で通用するという話。いい加減、大学にも通ってないような 低レベルとは話はしたくないんで。
177 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:38:13 ] >>174 使えた。
178 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:39:06 ] >>175 > この -1 は入力できない値(int)なのよ これだけ取り出しても、こいつが相当な勘違い野郎だということがはっきりしたな。 入力の意味も広義で説明されていたというのに。ねぇ、こういう知ったかが どこか政府が運営する機関の関係者にいたらどう思う?マジでやべーよ。 まぁ、こんな似非理系は当然、専門学校程度だろうけど。
179 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:46:30 ] ttp://www.google.co.jp/search?q=EOF%E3%80%80%E5%85%A5%E5%8A%9B&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t EOFの入力は余裕で可能です、ありがとうございますた。
180 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:47:14 ] >>172 コメントの数字が正しいことはどうやって証明するんだよw
181 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:48:12 ] >>180 …
182 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:50:47 ] プログラムが扱う変数として、EOFの数値データをchar型などで扱うかまで 入力受付のライブラリを用いて話をするが、while(getchar()!=EOF); で ループを止める際に、どうやって止めたいんだい、プログラムは?w 論点はそこじゃない。EOFが入力可能か?答えはYES。適切に処理しない 環境をいちいち持ち出されても迷惑。256色しか表現できない環境で 24ビット画像を正確に表示しようとしても無理なようにね。 くどいが、こんな目の前にある機械なんて、所詮人間がルール(規格)を決めて 定義されたとおりにコンピュータがデータを実装された能力に応じて 展開しているに過ぎない、人間が都合よく解釈できるように。 コンピュータには目の前の文字も画像も映像データも、0と1の塊にしか見えんよ。 あとは規則に則って処理しているだけ。
183 名前:166 mailto:sage [2008/05/02(金) 23:57:21 ] >>173 ありがとう 何故か、当然変数で宣言できると思っててエラーでまくってた
184 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:57:49 ] >>178 そんなむきにならならなくても。
185 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:59:05 ] >>175 > この -1 は入力できない値(int)なのよ 別にint型とは限らなくね?符号ありのchar型にも収まる数値だが? #include <stdio.h> int main(void) { char a=EOF; unsigned char b=EOF; if(a==EOF) printf("a=EOF\n"); if(b==EOF) printf("b=EOF\n"); printf("a : %d / b : %d \n",a,b); return 0; }
186 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:10:02 ] さすがにそれはないわw
187 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:29:06 ] >>185 fgetc(), getc(), getchar() の返り値は int ですから、EOF (-1) はファイル中に存在する値でも なければ、stdin から入力できる値でもないと思うのですが。
188 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:30:53 ] >>185 ああ、ようやく普通の人にであえたきが・・。勘違い >>182 系に辟易だったので・・・ で、実はそうではない。上位ビットが負号を示すのに用いられてるわけだけど 負号無しの unsigned char の場合 0x00 = 0, 0xff = 255 になって 負号付きの signed char の 0x80 〜 0xff は -127 〜 -1 とするから -1 という意味合いはある。 だけどこの -1 を EOF とみてしまうと・・・それはとても困る。 なぜなら(0x00〜0xff) の範囲にあるものすべて扱えないといけないから。 (0xff)が出現するバイナリーファイルの入出力はできないって事になるでしょ? キーボードなどから (int(-1)) を入力できないデバイスはどうしたらいいかって事になるけど何度も既出だけど ^D (0x04) を犠牲にしそれを終端と意味付け、これをみて intサイズの -1 を返すという決めをしてる。 例で挙げている char a = EOF; の行でコンパイラから警告がでていない?(オプションによるけども char = int とするときの警告文) 後の比較系は int に負号拡張されるから見かけ動くようにみえてしまうので誤解しやすい。 0x7f (char) が 0x0000007f (int) に・・・同じ値 127 となる。 0x80 (signed char) が 0xffffff80 (int) に・・同じ -127 となる。 0x80 (unsigned char) は 0x000080 (unsigned int) ・・ 128・・という具合に・・ 上位ビットを負号ビットに割り当てたのは負号拡張がとても容易だから。 a b が printf に渡った時点で負号拡張された int となっているからね。
189 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:32:33 ] #include <stdio.h> int main(void) { char a=EOF; unsigned char b=EOF; int aa=EOF; unsigned int bb=EOF; if(a==EOF) printf("a=EOF\n"); if(b==EOF) printf("b=EOF\n"); printf("a : %d / b : %u \n",a,b); printf("aa : %d / bb : %u \n",aa,bb); return 0; } 後は受け付けた変数の型によって、それ相応に解釈されちゃってるけどね。
190 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:44:20 ] >>188 暴れてるのは一人だけで、まともに相手にすると余計暴れるからスルーしてるだけ
191 名前:デフォルトの名無しさん [2008/05/03(土) 01:01:03 ] 正直ここで何か聞こうかと思ってスレちょっと読んだが 「C言語きやすく質問おk」と書かれた扉を開けたら 腕組んでイライラした奴らがこっちを見て来た状況と同じくらい 質問しづらいんだが。
192 名前:デフォルトの名無しさん [2008/05/03(土) 01:22:02 ] 喋り方がむかつくってだけで正しい意見に対して脊髄反射で反論始めるとこうなるって良い見本だなw
193 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:33:53 ] >>183 おっ、丁寧に。サンプル間違ってたけどそこはなんだ。うまく修正してくれたわけか。C99 あるいは今の GNU C/C++系だと気付かなかった世界かもしれん。再変更する realloc もあるで。
194 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:53:55 ] >>191 あ!?んだよ!?
195 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:59:58 ] 放置のできないバカはプログラム以前のことを勉強しなおせ
196 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:41:22 ] IDの出ない板はNGにしにくくて困る いっそコテハンつけてその話題をやって欲しいんだが
197 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:47:00 ] とりあえずEOFをNGワードにすればおk 来月ぐらいまで我慢すれば飽きるでしょ
198 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:54:18 ] ちょ、宿題スレで解答書くときEOF使うから困るw
199 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 03:55:41 ] どうしても駄目なときはうpろだ使え むしろsizeofを間違ってNGしないように気をつけろ
200 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 04:57:32 ] EOFで騒いでいるキチガイ様はこちらの一等席(最高に頭の悪い発言をしてくださいスレ)へどうぞ pc11.2ch.net/test/read.cgi/tech/1179394713/l50
201 名前:デフォルトの名無しさん [2008/05/03(土) 08:33:17 ] --- EOF
202 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 10:55:48 ] ポインタ文字列、char* p = "ABCDE"; って場合は p[0] = 'F'; って変えれないんだよね? char num[80] = "ABCDE"; char* p = num; ってポインタが文字列のはいった「配列」をさしてないと ポインタに添え字つけて一文字代入するのは無理?
203 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 11:01:29 ] うん。規格の範囲内では無理ってことになってる。
204 名前:202 mailto:sage [2008/05/03(土) 11:04:39 ] >>203 ありがとう サンプルソースがなぜかポインタ文字列を直接操作してて エラーでまくるから、自分の環境が悪いと思い込んでた サンプルが間違ってたって事だね
205 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 12:21:00 ] 正確には未定義じゃなかったっけ 運が良ければ動くけどやるべきじゃないね
206 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 14:08:20 ] ポインタといえばちょっと前の zdnet builder の記事も酷かったな。 202のサンプルと同じ間違いもしっかり犯してたし。
207 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:24:32 ] >>206 過去形にするなや。未だに「レビュー中」のままだぞ。
208 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:43:08 ] >>207 なんでこいつ偉そうなの?w
209 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:48:07 ] 自分の意に沿わない発言は全て「偉そう」ですか。大儀ですな。
210 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:01:49 ] 大儀である。下がってよいぞ
211 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:04:02 ] 大昔、リテラル文字列をいじっていい時代があったんだよ・・・。 リテラル文字列を char* に代入できるのはそれとの互換性のため。 今はもちろんいじっちゃいけないが。 いじっちゃいけないようにすることで、 同じリテラル文字列が登場したらそれを共通化できるようになるし、 もっと言えば "ABC" と "BC" みたいなのも共通化できるようになる。
212 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:12:22 ] いやリテラル文字列は const char* constだから 普通にchar*に代入して参照できるわけだが。
213 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:19:39 ] >>212 おかしなこと言わない。 リテラル文字列は const char の配列であってポインタじゃないし (sizeof でサイズを取得できるから)、 char* に代入できるのは 「文字列リテラルは char* に代入できる」 という仕様が 特別に用意されているから。
214 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:20:47 ] const char* constってchar*に代入できたっけ?
215 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:21:06 ] >>213 おしい、後一歩だ、がんばれ
216 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:23:10 ] char* に暗黙にキャストできる、と言った方が良かったか。
217 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:32:05 ] >>207 過去形じゃないよ。現在完了形だよ。
218 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:43:46 ] >>216 ここのところずっとC++しか触ってないからできないもんだと思ってた Cだと警告しか出ないのね
219 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:46:24 ] なんか大卒の奴にいい負けしてかなり悔しいのぅ悔しいのぅな 時代遅れのオッサンが、GW中にどこにも出かけられないから ここで楽しんでいたところ、気分を悪くしてしまったようでw
220 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:53:58 ] >>218 チガウチガウ リテラル文字列を char* に暗黙にキャストできるという話。 これは C も C++ も同じ。
221 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:55:57 ] EOFの次はchar*にリテラル文字列ですか。とことん暇な人が多いですね。
222 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:57:54 ] EOF って何の話?
223 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:59:09 ] Eroi Oneesan Fujikochan
224 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:01:17 ] EOF<ガオー 人
225 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:01:49 ] >>220 「リテラル文字列は const char* const」 「const char* constは普通にchar*に代入して参照できる」 だからリテラル文字列は普通にchar*に代入できるって意味の発言だと思ったんだが 私が単に読み間違えただけか。
226 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:08:48 ] 普通はconst外ししようと思ったらキャストがいるけど、const char* const→char*だけは歴史的な理由によりそれが要らないってことだろ。
227 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:12:37 ] >>225 >「const char* constは普通にchar*に代入して参照できる」 こんなこと212しか言ってないような、 そして>>220 =216=214と>>212 は別人のような気がする。
228 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:15:30 ] >>214 と>>218 と>>225 が私で、 >>212 と>>216 と>>220 が同一人物だと思ってたんだけど それがすでに勘違いだったのか orz こりゃまた失礼しました
229 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:38:13 ] ttp://www.sgnet.co.jp/c/2-1.htm ここのサイトで #include <stdio.h> void main() { printf( "好きなことを書きましょう" ); } ってなっているので、実際にやってみると testa.c:1: error: missing terminating " character testa.c: In function `main': testa.c:3: warning: return type of 'main' is not `int' というふうにエラーがでます。 で、大学では #include <stdio.h> int main(void) って習ったのですが、どう違うんですか?こっちではうまくいったのですが。
230 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:40:19 ] Cの初心者なんですが、コマンドプロンプトに関して 質問があります。 こちらで聞いてよろしいんでしょうか??
231 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:41:49 ] >>229 そのコンパイラが日本語に対応してないんじゃね?
232 名前:229 mailto:sage [2008/05/03(土) 18:44:18 ] >>231 あ、すいません。 #include <stdio.h> int main(void) { printf("好きなことを書きましょう"); } で、うまく実行できたという意味です。
233 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:44:52 ] 素早い返答感謝です。 実行すると、内部ファイル云々、操作可能なプログラムと 認識されていません、と出ました。 内定先から頂いたDISCの指示に従ってインストールしたんですが・・・・
234 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:46:24 ] 何の話か知らないが内定先に聞けよ
235 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:46:26 ] >>232 ttp://www.kijineko.co.jp/tech/superstitions/void-main.html
236 名前:229 mailto:sage [2008/05/03(土) 18:50:11 ] >>235 難しすぎてわからないのですが… ようは、void main() と int main(void) は同じような意味だから できたほうを使えってことですか?
237 名前:デフォルトの名無しさん [2008/05/03(土) 18:53:32 ] C++とCで仕様がちがうのでは?
238 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:55:36 ] >>236 戻りはint。引数は依存って書いてあるな。void main(void)は不可か
239 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:58:44 ] >>236 全部 int main でおk
240 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:01:50 ] >>229 そのサイトが嘘つき、もしくは正しい知識をもってない。 大学のほうが正解。
241 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:05:22 ] あとint mainでやるなら 正常終了したって事を示す「return 0;」を忘れずに
242 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:08:20 ] C99 なら大丈夫だけどね。 まだ C89 の環境多いから return 0; 書いた方がいいけど。
243 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:13:18 ] >>232 みたいなちょっと「動作確認しました」くらいのやつならC89でもreturn 省略してもいいよ。 逆に、いちいちつっこむヤツを見ると、省略できるの知らないの? って思う。
244 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:15:48 ] 質問します。 Linuxのコンソールで擬似和音のビープ音鳴らすのにエスケープシーケンスを 使おうとおもってるんですが、printf関数でエスケープシーケンスを 出力すると、一旦出力バッファに貯められてしまうため、時間差で 音を出したくても上手く音が出力されません。 出力バッファを介さずに文字列を出力する関数ってなにかありますでしょうか?
245 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:31:43 ] >>243 return を省略した際の動作は規格上は未定義。 C99 や C++ だと main 関数は特例として省略が可能だが、 C89 では main 関数にもそれが適用される。 大体の処理系は警告出すだけだがね。
246 名前:230 mailto:sage [2008/05/03(土) 20:03:24 ] 妙な事をきいてしまってすみません。内定先もGW中で 担当の方がいらっしゃらない物で。 失礼しました。
247 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:10:18 ] >>245 動作が未定義ってかリターン値が未定義だろ。 省略しても問題ないよ。 お作法的には書くほうがいいけど、書き捨てのコードにいちいちツッコミ入れるほどじゃないよ。
248 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:17:00 ] >>244 Drawin / *bsd 系なので Linux はどうかしらないが fflush 使うか raw モードにするというのももある // うまく管理して { int fd; struct sgttyb bk, fm; } { if((fd = open("/dev/tty", O_RDWR)) == -1) return -1; ioctl(fd, TIOCGETP, &bk); fm = bk; if(fm.sg_flags != RAW) { fm.sg_flags = RAW; ioctl(fd, TIOCSETP, &fm); } read(fd write(fd でどちらもバッファリング無しで入出力...
249 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:22:02 ] >>236 int main() { .... ; return 0; } ですればどうでしょうね。 return 無しの例外が許されてるといいながら return 0; 記述がそれほど手間でもないのでは? void main() の登場はいわゆる void 型が導入された次期からしばらくの間ではなかったか。サンプルが古いのであって目くじら立てずに見過ごせばどうかな?。
250 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:25:31 ] めくじらっつーか、gcc じゃコンパイル通らんし。
251 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:37:49 ] >>250 だから int main に読み替えればいいでしょって事なの。参考にしてる物に目くじら立てて(その例文は可笑しい)って作者に文句のメールでも送る?。そんな方向に行くのはどうかという事。