[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/24 21:17 / Filesize : 258 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.38【環境依存OK】



1 名前:デフォルトの名無しさん [2007/06/03(日) 22:33:55 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.37【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1178432985/l50
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm


52 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:21:23 ]
>>51
www1.coralnet.or.jp/kusuto/PI/

53 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:25:23 ]
>>51
 ちょっと行ってみる。ありがとう。

54 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:25:41 ]
クロスコンパイラが.bssを分けてくれない?
.bssは分けてくれるけどそれをゼロクリアするスタートアップコードはついて
無いし、自分でも書いてない?(セグメント別れてるんなら書くの簡単だと思うけど)

組込みって奥が深くてわかんないや

55 名前:51 mailto:sage [2007/06/05(火) 03:35:07 ]
>>52
 だった・・

今見てきたけど、このくらいの質問は論外なんだなって思った。
学校で聞いてもそれは今関係ない、いつかやるからって言われるし・・
まぁいつかわかるとおもうけど

56 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:36:41 ]
>>55
「マチンの公式 多倍長演算」でぐぐってみろ。

57 名前:51 mailto:sage [2007/06/05(火) 03:45:42 ]
>>56
夜中に申し訳ない!

58 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:50:05 ]
>>41
Cなら enum を 0 で初期化してもエラーにはならないはず。
C++ ならエラーになるけど、その場合はコンストラクタが使えるし、
= {} も使える。

C/C++ のどっちかが決まってるなら問題にならないはず。
CのソースをC++でもコンパイルできるようにしたいときだけ、
面倒な話になる。

59 名前:デフォルトの名無しさん mailto:sage  [2007/06/05(火) 04:09:56 ]
>54
おそらく初期化ルーチンはライブラリ化されていると思うよ。
どこのマイコンコアだかわからんが、メーカー純正のコンパイラ?

組み込みのCの場合でもスタック以外のRAM領域はクリア(つまり0)されているのが基本


60 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:30:00 ]
連結リストを利用したプログラムを作ったんですがうまくいきません
ソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4155.txt
コンパイラ BCC5.5

デバッガを走らせて見たところ、39行目のscanf("%d",&ch);の実行後にstartPtrの値がNULLになったことが原因みたいなんですが、
なぜここでstartPtrの値が変わるかわかりません
BCC5.5のバグかなんかでしょうか?



61 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:38:02 ]
>>60
バグってるのはすぐ処理系のせいにする君の頭だ
char型の変数に%dを突っ込むな
%dはint型のポインタを要求する

62 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:43:00 ]
まぁ初心者のうちはありがちなことだな>処理系のバグを疑う

63 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:44:09 ]
ほんとだorz
ありがとうございます
なんか、こういうミスで詰まること多いんですよね

64 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:53:05 ]
>>60
startPtr + 9 は一体どこをポイントしているとお思いか?
自分の無理解無努力無責任のつけをコンパイラに転嫁させませぬよう。

65 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:54:23 ]
これって、char型の変数とか言ってる>61も大間違いなのに、それで勝手に納得している>63ってなんなの?

66 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 07:46:12 ]
>>64-65
startPtr + 9で問題ないだろ

67 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:23:53 ]
ってか、Cのソースなのに、for文の中で変数宣言しちゃうのはどうかと。

68 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:30:08 ]
C99だと思えば、ってBCCはC99非対応だけどね

69 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:23:44 ]
>>65
???
chはchar型でそのポインタにintサイズ書き込んだら近くのメモリ壊すのは当たり前だと思うが
まぁ言葉足らずとかのレベルで間違いとも言い切れないな

あとどうでもいいことだが
(startPtr+9)->
って書くよりは
startPtr[9].
のほうがスマートでわかりやすい気がする

さらに言わせてもらえば
startPtrは他の変数にコピーしといて
for(int c=0;c<10;c++;startPtr++){
printf("%d個目の文字を入力してください:",c+1);
scanf("%d",&(startPtr->data));
startPtr->nextPtr=startPtr+1; // ++startPtrにして上のstartPtr++無くしてもいいんだが
}
startPtr->nextPtr=NULL;
でとっといた startPtr のコピーを戻してやればスマートじゃないかと


70 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:27:54 ]
>>69
for(int c=0;c<10;c++;startPtr++){
これは
for(int c=0;c<10;c++,startPtr++){
の間違い




71 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:36:12 ]
>>69
for(int c=0;c<10;c++,startPtr++){
これは
for(int c=0;c<10;c++;startPtr++){
の間違い探し

72 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:40:54 ]
てんで話にならない。

73 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:43:07 ]
>>72
誰がうまいことを言えと(ry

74 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:43:49 ]
いやー、わからんかったw
画面上でも1ドットだぜ・・・

75 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:57:56 ]
大学2年です。現在、C言語の勉強をしています。
制御構造やポインタなど基本的なことは理解できました。
これから何をしていけばいいでしょうか?将来はプログラマ志望です。
授業ではアルゴリズムを勉強しています。
勉強しておいたほうがいい言語や順序みたいなものを提示してくださると嬉しいです。

76 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:00:29 ]
フローチャートを勉強してるの?

77 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:00:50 ]
>>75
擬似でいいからアセンブラ

78 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:04:44 ]
分かりました、専ブラに挑戦してみます。

79 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:08:57 ]
プログラマでも入る分野で結構違うと個人的には思う。
>>77のアセンブラもいいと思うし、割り込みとかマルチスレッドなんかもいいんじゃね?
可読性とか汎用性とかデザインパターン、テストとかデバッグ技術もあってもいいかも?

アルゴリズムって実際に役に立つかな?
いろんなプログラムを山ほどこなしてるほうがいい気がする。

80 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:15:30 ]
>>79
>>75の大学がどこかは知らないが、大抵大学の授業で教えるアルゴリズムっていうと
基礎の基礎で結構重要だろw



81 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:18:43 ]
学生時代を思い返してみると、オートマトンとかやってたような・・・
俺、役に立ってねぇ・・・
もっと基礎的な内容かな?ソートとか?
ソートなんて、バブルソートとクイックソート以外は必要なときに毎度調べてるな。

82 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:19:09 ]
>>75
宿題スレで宿題解くのオススメ

83 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:25:36 ]
アルゴリズムでオートマトンはやらなかったなぁ
ソートとか探索とかリストとかやったかなぁ・・・?
仕事でそのまま使えるってことは少ないだろうけど、基礎を覚えておいて損は無い

84 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:29:01 ]
問題「ソートするプログラムを書け」
俺「qsort(...); はい終わり^^」

85 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:30:50 ]
まあ、一口にプログラマといっても
「標準ライブラリに丸投げでOK」から「自力でアルゴリズムをひねり出すことを要求される」まで幅広いわけで

86 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:32:25 ]
つ[安定ソートするプログラムを書け]

87 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:32:29 ]
あぁ、言われて見れば重要だなぁと思ってきたw
リスト、スタック、キューとかのデータ構造とかか。
素因数分解とかは、暗号化とかの分野いかなきゃ使う機会はなさそうだな


88 名前:75 mailto:sage [2007/06/05(火) 22:50:14 ]
有り難うございます。
授業のアルゴリズムではソートやリスト構造、木構造などをやっています。
アセンブラですか。何か必要な環境等は必要でしょうか?
またC++も興味があるのですが勉強可能でしょうか?環境はCygwinです。

89 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:55:43 ]
>>88
やる気があれば何でも可能。
>>82のアドバイスをうけて、慣れてきたら同じ課題をCっぽい解き方、
C++っぽい解き方の両方やってみたりしても良いかも。



90 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:57:04 ]
>>86
つ[std::stable_sort()]



91 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:08:45 ]
>>88
紙とペンさえあれば勉強できる

>>90
C言語で解け

92 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:18:29 ]
紙と鉛筆で間に合うのは頭のいい人だけ
常人は適当にmasmなりインラインアセンブラ等ケースで身に着けましょう

93 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:19:30 ]
やべぇ俺頭いいのか

94 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:26:17 ]
アセンブラの勉強するときはシミュレータ上で動かしたいよね

VirtualPC とか VmwarePlayer とか Bochs とか qemu とか
いろいろあるけど、どれがいいんだろう?

95 名前:75 mailto:sage [2007/06/05(火) 23:36:48 ]
なるべく無料で環境は揃えたいところです;
あと、どうもMicrosoft製はソフトが重いイメージがあるので微妙です。
なのでVisual Studioはどうも慣れません。
大学の先生もなるべくUNIX上でコンパイル・実行したほうがいいと言っています。

96 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:39:25 ]
じゃあnasmとかどうでしょ?

97 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:40:24 ]
>>95
はいはいかわいい子犬ちゃん

98 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:47:21 ]
VisualStudioの環境が重ければソースを外部で編集するようにして
構成ツールをmake代わりに使ったり、clだけ利用すればいい話
てかいくらなんでもUNIX推奨は冗談だろう…

99 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:48:45 ]
>>98
俺はそうしてる。つっても芽衣の開発環境じゃないんだが。
普段がテキストエディタなもんで、そっちのほうがやりやすい。

100 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:50:21 ]
VisualSutudioの環境が重ければPC買い換えればいい

・・・もしかしてだいぶMSにお布施してるかな、漏れ。



101 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:55:22 ]
>>95
かわいこちゃん・・・
人の話聞いて知ったかするより、自分でWinとUnix系の違いを
自分で調べて知りなさい。

102 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:43:54 ]
>>98
最近のゲーム機やパチンコ台の液晶なんかの場合はUNIX系環境が主流だな
そっち方面ならcygwinやlinuxでなれておくと楽だぞ
あのへんなら開発環境に金かからんし

Winだけのプログラム勉強したいならともかく、
広い意味でプログラムの勉強したいならVisualStudioはオススメしない


103 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:46:43 ]
プログラムの勉強なら環境はなんだっていいだろ

104 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:51:27 ]
いいだろ

105 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:53:21 ]
マジかよ
もうvsのインターフェースに慣れちゃったぜ…orz

106 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 01:23:45 ]
>>103
MSの環境は独自の俺様仕様が多過ぎる、それに値段も高い
SDKのバージョン変わるとコンパイル通らなくなったりするし
小規模なプログラムだといいけど大規模になるとあの互換性のなさには泣けてくるぞ
開発以外の余計な事に時間取られすぎるんだよ

いまだに一部ゲームで古いDirectXとか使ってるのはそのせいだろうし

仕事の関係で多数の環境、日立のshcとかgcc、ボーランドCとかLSI-C、CodeWarrior その他いろいろ
使ってきたけどあそこまでかけ離れてるのはMS環境だけだ


107 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 01:35:06 ]
それでもMSを勧める人がいるのはやっぱ「MSだから」だと思うよ?
SDKとかMFCをC++の勉強に使うなんて、とても勧められないし
コンパイラのバグもちょくちょくあったりする。
設定に困ったときにネットで探せば色々見つかるってのは大きいと思う。
コンパイラのバグなんて、MS環境でもなきゃ中々しにくくね?
まぁ、bccやgccならそれなりにサイトも多いけどやっぱMSに比べると・・・

やっぱ、作ったもんが動くからプログラミングって楽しいんじゃね?
とはいえ値段や仕様変更の多さには同感だw

108 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 02:56:46 ]
値段は(学割だけだけど)凄まじいダンピング始めたからなぁ
Visual C++ は単品で持ってたけど、VSのあの安さなら買っちゃうって

109 名前:デフォルトの名無しさん [2007/06/06(水) 04:25:45 ]
VC++.net2003でmain.cpp, Sphere.hとSphere.cppとファイルを分割しました
Sphere.hにint Collide( Sphere, Sphere )という関数を定義して, Sphere.cppで実装しました
このint Collide( Sphere, Sphere )をinline関数にしたいのですが、上手く行きません
.h, .cppのどちらにもinlineを書く, どちらか一方に書く場合と試しましたが上手く行きません
どちらにもつけない場合は上手く行きます
どうすればinline関数にできるでしょうか?無理なのでしょうか?
よろしくお願いします


110 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 04:26:58 ]
inline関数は内部リンケージを持つからヘッダファイルには書くな。



111 名前:109 [2007/06/06(水) 04:36:03 ]
内部リンケージで調べたら分かりました
ありがとうございました

112 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 04:55:09 ]
内部リンケージって言葉を聞いたばっかりで
理解せずに使ってるだけな馬鹿は無視しろ

113 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 04:56:48 ]
>>110
inline 関数はヘッダに書くもんだろw

114 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 06:07:24 ]
正しくはinline関数の「宣言だけ」ならヘッダには書くな、書くなら「定義」まで
書け、って事だな

115 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 06:13:31 ]
具体例としてはジャネリックな独自テンプレートライブラリを作る時とかか
なんか極めて限られるような状況ですな

116 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:31:36 ]
>>110
inline 指定とリンケージは関係ないよ。

117 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:32:28 ]
>>116
でもヘッダファイルに宣言だけしたらリンカエラーでるじゃん?

118 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:35:02 ]
なんという面倒くさい仕様…
これは暗に「よほどのことが無い限り使うな」と言っているので同じではないか

119 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:36:50 ]
>>117
定義が無いからだろ。リンケージも inline も関係ない。

120 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:39:09 ]
>>118
その認識で問題ない。 inline で速度が変わる状況なんてかなり減ってきてるし、
これからも減るだろうし。



121 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:40:49 ]
もうinline化なんかコンパイラに任せろよ
適当にやってくれるだろ

122 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:45:38 ]
>>118
ついでに言えば、最早コンパイラはオブジェクト間最適化を行なう時代。
inline指定なんぞせんでもコンパイラの方で勝手に(別ファイルの関数さえ)インライン展開してくれるよ。

123 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:46:05 ]
>>119
静的リンケージだから定義がないんじゃないのか?

124 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:47:01 ]
内部、だ。

125 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:51:14 ]
>>119
それはおかしい。extern宣言しても他のファイルで定義してある
inline関数は使えんぞ。

126 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:03:10 ]
>>125
なるほど。 inline は関係あるな。

7.1.2p4 より
"An inline function shall be defined in every translation unit in which it is used and
shall have exactly the same definition in every case."

inline 関数は使われるソースごとに定義が必要になるってことらしい。
エラーになるのはこのルールに違反するからであって、リンケージは
関係ない。

127 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:05:29 ]
>>126
お前最初にinline関係ないって言ったじゃん。いい加減な事を言うな。

128 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:19:03 ]
ごめんよ。 >119 を書いた時点では分割コンパイルを意識してなかったんだ。

129 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:20:18 ]
( ゚д゚)ポカーン

130 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:21:37 ]
分割コンパイルを使わないとC++の意味が・・・・・



131 名前:デフォルトの名無しさん [2007/06/06(水) 19:15:39 ]
getchar(c);

c - '0' /*cの中が文字か数字かをしらべる*/


c - '0' の意味がわかりません
これは何をやってるんですか?

132 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 19:18:36 ]
c - '0' は普通数字を 0 〜 9 の数値に変換するときに使うけど

133 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 19:43:22 ]
ざっと C++ のドラフトを見ても、
仮想関数テーブルに関する記述がないんですが、
仮想関数テーブルは C++ の仕様上には
全く存在しない概念なんでしょうか?

134 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 19:50:11 ]
ABIとか、Implementation Specificな話は規格には載らないんじゃないの

135 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 19:53:29 ]
>>131
'0'ってのは数値的には0x30、そこから順に0x39('9')まで並んでる
だから文字として入力したものを数値に変換するときはそういうこともするけど・・・

キャラクターコードの意味わかってないなら
isdigitとか使っとけ
変換するなら
atoiとかstrtol使えばいい

それコメントが間違ってるよw

関数使わずに調べるなら
if((c >= '0') && (c <= '9'))
でいいだろうし、
変換したいならその後に c-'0' したほうがいいと思う

c-'0' じゃ数字かどうか調べてないしな・・・


136 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 19:58:24 ]
直接プログラミングではない質問なのですが、
ネットワーク外部にインストールしたRuby等の.exeを、ファイル共有した状態で
例えば
\\マシン名\\Ruby\bin\ruby.exe
にあるruby.exeを実行したくて
Path環境変数に"\\マシン名\\Ruby\bin"を追加したのですが、うまくいきません。

そもそも無理なのか、または指定のやり方が間違っているのでしょうか?

137 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:02:41 ]
歯医者に風邪治してくれと言ってるようなもの
スレ違い

138 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:14:38 ]
下手な例えだな

139 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:43:07 ]
>>134
つまり、仮想関数テーブルは Implementation Specific な話ということなんですね。
了解しました。

140 名前:1/2 mailto:sage [2007/06/06(水) 20:51:48 ]
#include <stdio.h>
int main(void)
{
int a, b, n;
puts("整数を2つ入力してください");
scanf("%d %d", &a, &b);
puts("演算子を入力してください");
n = getchar();
switch(n)
{
case '+':
printf("%d\n", a+b);
break;
case '-':
printf("%d\n", a-b);
break;
case '*':
printf("%d\n", a*b);
break;
case '/':
printf("%d\n", a/b);
break;
case '%':
printf("%d\n", a%b);
break;
}
return 0;
}



141 名前:2/2 mailto:sage [2007/06/06(水) 20:52:58 ]
#include <stdio.h>
int main(void)
{
int a, b, n;
puts("整数を2つ入力してください");
scanf("%d %d", &a, &b);
puts("演算子を入力してください");
n = getchar();
switch(n)
{
case '+':
printf("%d\n", a+b);
break;
case '-':
printf("%d\n", a-b);
break;
case '*':
printf("%d\n", a*b);
break;
case '/':
printf("%d\n", a/b);
break;
case '%':
printf("%d\n", a%b);
break;
}
return 0;
}

142 名前:2/2 mailto:sage [2007/06/06(水) 20:53:38 ]
上記のプログラムを作ったのですがコンパイルして実行すると
「演算子を入力してください」
でプログラムが終了してしまいます。
何故でしょうか?
環境はcygwinです。

143 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:58:13 ]
>>142
getchar() で改行文字を読み込んでいるから

144 名前:142 mailto:sage [2007/06/06(水) 21:09:30 ]
>>143
"改行文字を読み込んでいる"、とはどういうことでしょうか?

145 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 21:22:48 ]
scanf で数値の後にいれた改行が stdin のバッファに残っている
getchar でバッファに残った改行文字が取り出される

とりあえず

scanf("%d %d", &a, &b);

scanf("%d %d%*[\n]", &a, &b);

または

scanf("%d %d", &a, &b);

scanf("%d %d", &a, &b);
while(getchar()!='\n');

としてみては?

146 名前:142 mailto:sage [2007/06/06(水) 21:29:59 ]
>>145
無事解決しました。有り難うございます。
直後の改行が残ってたんですね;
あらかじめ、a,bに値を代入してscanfを削除したらちゃんと実行できた訳ですね。

147 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 23:46:17 ]
Google Booksすげーな。言語の本無料でみれんじゃん

148 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 23:57:06 ]
>>147
それって、前にTVでやっていた著作権切れの本を公開する奴?

149 名前:デフォルトの名無しさん [2007/06/07(木) 06:26:40 ]
NULLが0でない環境が存在するのと同様に、
0がぬるぽじゃない環境ってのもあるんでしょうか?

150 名前:デフォルトの名無しさん [2007/06/07(木) 06:28:41 ]
0がぬるぽでない環境が存在するのと同様に、
NULLが0じゃない環境ってのもあるんでしょうか?



151 名前:デフォルトの名無しさん [2007/06/07(木) 06:49:24 ]
トートロってんじゃねぇよって事ですか
よく考えると自分も質問の意図を把握できてないのに気づいたので取り下げます

152 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:12:19 ]
>>149
0 こそが真のヌルポインタだよ。
ただ、これだけだと整数型とか小数型の値としてもとれるから、
NULL ってマクロを使ってそれを回避できるようにもしてるだけ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef