1 名前:デフォルトの名無しさん [2011/12/23(金) 22:51:14.19 ] C言語の*入門者*向け解説スレッドです。 ★前スレ C言語なら俺に聞け(入門編)Part 93 toro.2ch.net/test/read.cgi/tech/1322866566/ ★過去スレ 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++の宿題片付けます 154代目 hibari.2ch.net/test/read.cgi/tech/1322562648/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/
175 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:28:09.67 ] >>172 Visual C++ & glut
176 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:35:13.40 ] 今連結リストの方方向リストを使って入力した値をいれてっれ中央値を表示させようとしてるんですが、どうやって値をソートすればいいのでしょうか? バブルソート使って、値が入力された時にソートしようとしているのですが、どうしてもできません。よろしくお願いします。
177 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:38:32.35 ] できますよ。
178 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:38:37.06 ] >>174 >>175 ありがとうございます。参考になりました。
179 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:14:58.06 ] >>176 何ができないのか具体的に書け。 ソース全く出さずに、1から全部書いてもらおうとしているのか?
180 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:16:54.64 ] >>179 どう考えても1から全部書いてもらおうとしてると思うけど、どう考えても質問に答えてもらえるとは思えない
181 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:18:12.85 ] ここで>>180 を覆す回答者が!CMの後で!
182 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:22:42.90 ] , - , -─ - 、 /:::::::::::::::::::::::::::::::::`‐、 /::::::::::::::::::::::::::::::::::::::::::::::\ /::::::::::;:ィ::::::::';:::::::::::`ヽ::::::::::::::ヽ ,'::::::;':::/ l:::i::::::ヽ:::\:::::::';:::::::::::::::', i:::l::::i:/ ';:::';:::::::',\::ヽ:::::::::::☆::: l::l::;イ__, ヽ、ト、::::ヽ、\:',ヽ〃l:::::: >>176 さん ';l l::l ` ‐- l:::::l:::::: こ、ここ、これ読んで下さいっ! l::::l == 、 ,.ィ== l:::::l::::::::: l:::::li //////////// l:::::l:::::::::: , -ーl::::lヽ、 r....::´`ヽ /l:::;'> 、::::: , -ー 、'´`ヽl::::l// ` ‐-r‐ァ' ´ ,':/ー、 '; / , ノ ` l::::l li /ニく /⌒ヽ \.i , └ '´  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / ノ__ ', ,イ: / \ (⌒⌒) , └ '´ / i/ / ヽ / ー ' / /,.イ ∠ __ / / /  ̄ ̄ ̄プ ー r── -------/-‐'´ / | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | | | /  ̄ ̄ ̄ ̄ /_____ / お断りします / // / ハ,,ハ / / / / ( ゚ω゚ ) / / / / ____ / / / / / / / / / / /
183 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:47:33.78 ] #include <stdio.h> #include <time.h> int main(void){ time_t t; time(&t); printf("%s", ctime(&t)); return 0; } を実行したら↓みたいになってエラーがでるんですけどこれはコードをどう直したらよいのでしょうか? ------ ビルド開始: プロジェクト: Test, 構成: Debug Win32 ------ test.c d:\source\vc++\projects\test\test\test.c(7): warning C4996: 'ctime': This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\program files\microsoft visual studio 10.0\vc\include\time.inl(86) : 'ctime' の宣言を確認してください。 Test.vcxproj -> D:\source\vc++\Projects\Test\Debug\Test.exe ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
184 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:50:33.38 ] >>183 エラーじゃないよ。 警告 ctimeはあぶないのでctime_sを使ったほうがいいです。この警告がうっとうしかったら _CRT_SECURE_NO_WARNINGS を定義してくださいな。 ってかいてる。
185 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:57:08.62 ] ありがとうございます 書き方はこんな感じでよいでしょうか? 直すところがございましたらご指摘お願いします #include <stdio.h> #include <time.h> int main(void){ time_t t; char c[26]; time(&t); ctime_s(c,sizeof(c),&t); printf("%s",c); return 0; }
186 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:04:07.20 ] ctime_sとかってvisual studioのみでしか使用できないんじゃなかったっけ つまり問題ないから直さなくていいって感じで記憶してるけど 警告がうっとおしいと思うなら_CRT_SECURE_NO_WARNINGSを定義するって感じで
187 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:06:45.42 ] 値比較後の要素交換の記述 双方向のリストなら単純にいけそうだけど、単方向リストだと自分の1個前が欲しくなるから面倒 (ex. i番目 j番目の交換が発生 リスト繋ぎ変えでi-1 と j-1 が欲しくなる
188 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:10:14.02 ] 他環境に移植できなくするためのMSの罠だよ。
189 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:16:22.88 ] visual studioとかvisual C++って無償?
190 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:28:03.88 ] ありがとうございます セキュリティーコードということを検索して理解しました メモリが汚れるのはいやなので警告をオフにしたいと思いますが 検索してttp://sunrisebyeast.blogspot.com/2011/07/crtsecurenowarnings.htmlにたどりついたのですが #pragma warning(disable:4996)をtest.cの1行目に書いたんですが警告が消えません 僕が使ってるのはVC++2010なんですが2008念のバージョンじゃないとダメってことですよね? 今VC2008のバージョンがないので探しているのですが見当たらず、2010でも警告を消す方法ってございませんか?
191 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:38:12.54 ] すいませんプロパティのプリプロセッサに_CRT_SECURE_NO_WARNINGSを書いたら出来ました ttp://tiano.cocolog-nifty.com/tears_diary/2007/09/vc_2005_6591.htmlを参考にしてできました
192 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:51:17.46 ] >>189 無償版もある。てかそれくらいはぐぐってください
193 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:07:11.17 ] 実行すると tarou.name = "tarou";の部分で error C2106: '=' : 左のオペランドが、左辺値になっていません。 ってエラーがでます どこが問題でしょうか? #include <stdio.h> struct profile { int age; char name[10]; int sex; }; int main(void){ struct profile tarou; tarou.age = 21; tarou.name = "tarou"; tarou.sex = 0; printf("%d - %c - %d", tarou.age, tarou.name, tarou.sex); }
194 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:23:32.71 ] strcpy()使え
195 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:37:32.17 ] >>194 strcpy使ったら出来ました なんでstrcpy使わないとだめなのですか?
196 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:47:36.17 ] せめて入門書の一冊も読んでからにしてくれないか?
197 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:48:31.78 ] struct profile tarou = {21, "tarou", 0}なら出来るとおもう
198 名前:196 mailto:sage [2011/12/26(月) 18:52:20.68 ] 言い過ぎたごめん
199 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:53:20.28 ] tarou.nameはポインタだから、そのプログラムだと初期化するかstrcpyするかじゃない ユーザーに入力を促すようなものだとscanfつかって出来る
200 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:54:05.41 ] あと%cじゃなくて%sね
201 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:57:45.25 ] >>199 勘弁してくれ
202 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:03:04.04 ] ああ、tarou.name[0] = 't';って一つ一つ入力する方法あるか
203 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:10:37.55 ] 初心者スレなのに適当なことばかり。
204 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:11:25.98 ] >>199 tarou.nameは確かにポインタを生み出すコードではあるけれど、tarou.nameは配列と言うべきタイミングだろ。 ということを>>201 が言いたいんだろうので同意。
205 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:15:03.11 ] って置いてけぼりにするところだった。 >>195 一般に、配列(文字列=文字配列)に配列を代入することはできないため。 それをしたい場合は、memcpy、特に文字列をコピーしたい場合にはstrcpyを使う。 初期化の場合は別だし、構造体でラッピングしたものを利用して代入を行うこともできるけれど、それは後から覚えればいい。
206 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:25:01.72 ] リテラルを書き換えられない設計にしてるのがおかしい
207 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:26:59.45 ] × ポインタ ○ ポインター
208 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:28:04.87 ] JISはまだ変わってなかろ。
209 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:34:11.15 ] JASに従えよ。
210 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:37:38.30 ] tarou.nameは配列の先頭要素へのポインタであって配列ではないよね
211 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:43:38.03 ] >>210 構造体のメンバ名だよ。って返せばいいのか?何をしたいのかわからん。
212 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:44:41.11 ] struct { char *taro; char hanako[10]; };
213 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:50:37.68 ] >>210 tarou.name自体は配列 ポインタとして解釈される場合に配列の先頭要素へのポインタに変換されるだけ sizeof(tarou.name)の結果を考えてみろ
214 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:59:09.61 ] そりゃ型が違うだけ。 char[10]型ってことだろ。
215 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:59:53.58 ] テトリス作りたいのだが、time関数はいるわけ? テトリスが落ちる時間ってtime関数だよな?
216 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:02:19.02 ] mySQLって具体的にどんな用途があるの? 聞いたことあるけどイマイチ利便性が分からない。
217 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:09:53.98 ] >>216 データ管理で重宝してる。 機能をCで一から組んだら大変だと思う。
218 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:24:24.37 ] >>217 は?ライブラリみたいな?
219 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:27:59.19 ] 組み込み用途ならSQLiteのほうが使い勝手はいいよ
220 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:40:04.03 ] テレビとかイメージでも会社でパソコン打ってる風景って良く見るけど、 あいつらってプログラム組んでるの?何してんだろ。
221 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:46:26.97 ] パソコン使う仕事って全部プログラミング?
222 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:07:02.67 ] プログラマ以外でずっとパソコンに向かってる仕事ってデザイナーとかCADとかのイメージがあるな
223 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:10:32.94 ] 経理とか総務とかは思い浮かばないの?
224 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:14:45.19 ] 丸一日向かい合うほど経理するとは想像できなくて
225 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:24:49.58 ] ホワイトカラーなら、今時はどんな職種でもPCに向かって仕事すんじゃねーの?
226 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:30:36.14 ] 何をするのかがわからんってのに、向かうだろって言われてもなぁ。 ホワイトカラーでPCに向かわない職種なんてくさるほどあるし…
227 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:48:20.41 ] 仕事せずに、サーフィンしてるのかもしれない
228 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:52:21.78 ] 天皇さまですらPC使ってるのに
229 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 05:21:29.11 ] 明らかにキーボードだけをカタカタカタカタしてるよな。 テンキーもマウスも使う素振りもない。
230 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 05:54:32.60 ] 日がな一日書類を書いていたら殆どマウスに触る必要もないが、 一般事務職でそこまでショートカットに精通している奴は少ないと思う。
231 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 06:00:14.70 ] それはそうと、pthreadを使ったスレッドプールの手頃なサンプルないかな。 pthread_cond_wait()が意外に使い難くて参った。
232 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 06:48:49.97 ] 引きこもりが熱く語る「僕の考えるパソコンを使った事務仕事」とか笑えるわ
233 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 07:17:16.15 ] >>232 >230のことを言っているなら、それを書いたのは会社員の私だ。
234 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 09:13:32.51 ] >>231 www.google.co.jp/search?q=pthread_cond_wait+%E4%BD%BF%E3%81%84%E6%96%B9
235 名前:231 mailto:sage [2011/12/27(火) 09:34:21.72 ] >>234 それで見つかるところは大抵最低限の使い方だけなんだよね。 この板のマルチスレッドのスレでも同じように梃子摺っている質問は幾つか見つかるのに、 具体的な回答が見つからないし。
236 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 13:10:19.29 ] 具体的に何をしようとしてどうなったか書いてないと答えようがなくね?
237 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:56:47.40 ] >>215 clock()のほうが良いと思いmath
238 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:58:54.71 ] clock は精度が秒の環境もあるぞ。
239 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 16:53:33.36 ] WindowsならtimeGetTime()かQueryPerformanceCounter()を使うしな time()はかなり機種依存的性格を持っている
240 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 16:57:23.48 ] DOSの時は走査線待ち。
241 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:31:40.69 ] ヒープソートを書いたのですが codepad.org/gQnTXtfr 最後の20 10が整頓されません どうすれば昇順になるのか教えてください
242 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:48:08.47 ] 自己解決しました for(i=N; i>2; i--)あるべきでした
243 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 19:11:58.83 ] C言語でこのスレに書き込めるプログラム教えてください
244 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 20:34:02.21 ] 平松邦夫/民主党 大阪市役所・自治労・大阪市労働組合・日教組・大阪市教育委員会・自民党・共産党・社民党・関西電力・住友グループ ・毎日放送・毎日新聞・関西経済連合・日本原子力発電株式会社 ・ 週刊文春・週刊新潮・NHK・朝日新聞・読売新聞 ・部落解放同盟・朝鮮総連・在日本大韓民国民団・日本遊技関連事業協会・全日本遊技事業協同組合連合会・日本弁護士連合会・生活保護受給者・反日左翼・9条の会・革マル派・中核派 VS 橋下徹/維新の会 大阪市民・みんなの党・国民新党・亀井静香・石原慎太郎・東国原英夫 様子見:公明
245 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 00:50:51.04 ] >243 ttp://www23.atwiki.jp/psp_2ch/ 適当に選べ。
246 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:17:50.61 ] Windowsでコンソールプログラムで右下にバルーンを表示させたいのですが それだけのシンプルなほどシンプルな本当に登竜門なサンプルで公開してるページありませんか?
247 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:01:39.93 ] つくってみよう−タスクトレイアプリケーションの作成 ttp://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html
248 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:06:02.01 ] ダブルポインターのコピーについての質問です。 二次元配列の文字列をコピーしたいのですが、コピー元の二次元配列は ヒープメモリの確保が必要になりますが、コピー先のメモリも動的に確保しようと コメントアウトの部分を外すと、メモリエラー(ヒープの破壊)が起こりますが、 コメントアウトした状態の実装で、メモリの使い方は間違っていないでしょうか? #include <stdio.h> #include <stdlib.h> char **getString(); char **strSrc; int main() { char **strDst; // コピーされる側はヒープメモリの確保は必要ないのか? //strDst = (char **)malloc( sizeof(char * ) * 2 ) ; strDst = getString(); printf("%s\n", strDst[0]); printf("%s\n", strDst[1]); free( strSrc ); //確保していないので、解放は当然不要なわけであるが・・・・ //free( strDst); return 0; } char **getString() { strSrc = (char **)malloc( sizeof(char * ) * 2 ); strSrc[0] = "ABCD"; strSrc[1] = "1234"; return strSrc; }
249 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:08:45.08 ] >>246 NOTIFYICONDATA NIF_INFO でぐぐれ
250 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:15:53.20 ] 再帰って関数内が終わったら自動でreturnされるの? codepad.org/dAqEkNzj このコードみたんだけど HeapSortの中に--reetcountってあるけど 関数の最後でreturnが自動で呼ばれてるんですか?
251 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:19:28.01 ] そう。
252 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:23:26.60 ] この場合戻り値がvoidなんですが returnっていうより 最初の if (left >= right) { --reentcount; return; } で条件に引っかからず一番したの処理まできたら 自動で前の処理の再帰に戻すってこと? returnって書けば戻るんだけど 終了には--reetcount(カウント数)だけだよね 自動で前の再帰に戻るの?
253 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:26:14.43 ] voidって値を返す必要がないのに どうやって前の再帰に戻ってるんだろう void HeapSortだけど voidの場合でも関数終了時に再帰が残ってる場合は前の再帰に戻してくれるの?
254 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:27:37.30 ] いや、あたい返しても返さなくても仕組みは一緒だろ…
255 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:27:40.69 ] >>248 ポインタの基礎ができてない悪寒。 >248の場合、strDstにメモリ確保しても、それをgetString()の戻り値で上書きしてしまっている。 なので、free(strSrc)で解放したメモリ空間をfree(strDst)で更に解放しようとして異常終了している。 そもそも、何がしたいのか判らんが勉強中はグローバル変数は使うな。
256 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:28:33.27 ] >248 strSrcとstrDstが同じポインタ値になってる。 free( strSrc ); //確保していないので、解放は当然不要なわけであるが・・・・ free( strDst); 同じメモリを2回開放しようとしてる。 >strDst = (char **)malloc( sizeof(char * ) * 2 ) ; >strDst = getString(); やるなら strDst = (char **)malloc( sizeof(char * ) * 2 ) ; memcpy(strDst,getString(),sizoef(char * ) * 2 ) ; だろう。
257 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:30:12.51 ] >>253 例えばこういうコードがある。 -- void subFunc() { puts("subFunc()"); } void someFunc() { puts("before sub"); subFunc(); puts("after sub"); } -- このとき、どう出力されるかは判るかい?
258 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:34:08.14 ] before sub subFunc() after sub ですか? なんかひねって before sub 1 after sub だったりしそうですがわかりません
259 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:38:47.32 ] #include <stdio.h> int main(void) { int i=1; printf("%c\n",a()); return 0; } int a(){ } これだと1って返されますね void a()に変更するとコンパイルエラー だけどcodepadの再帰はVoid型なのに関数ブロックの最後になったら前の再帰が返されてる 再帰はVoid型とか関係なくコードブロックの終了に返されるってこと?
260 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:43:06.17 ] >>258 値を返すとかなんだとかを脇において、処理がどう推移するかを考えろ。 1を出力しているところはどこにもないぞ。
261 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:53:17.58 ] >257の例で、処理がどう流れているかを処理される順番で表現してみた。 # main()はないが、someFunc()を呼んでいると仮定。 -- void subFunc() // 5 { // 6 puts("subFunc()"); // 7 } // 8 void someFunc() // 1 { // 2 puts("before sub"); // 3 subFunc(); // 4...9 puts("after sub"); // 10 } // 11 -- subFunc()の途中にreturn文があれば、こうなる。 -- void subFunc() // 5 { // 6 return; // 7 puts("subFunc()"); // この文は実行されない。警告レベルを上げると警告されるはず。 } // 8 void someFunc() // 1 { // 2 puts("before sub"); // 3 subFunc(); // 4...9 puts("after sub"); // 10 } // 11 -- これで判るかねぇ。
262 名前:155 mailto:sage [2011/12/28(水) 15:12:32.15 ] >>252 意図は MergeSort() の入り口でカウントアップ 出口でカウントダウン して、 再帰の深さがいくつになってるかを分かりやすくしたかっただけ できるかぎり元ソースの形(>>145 リンク先)を維持したまま追加したので 途中脱出の部分で --reentcount してるけど void MergeSort(int x[ ], int left, int right) { /* ... */ ++reentcount; if (lest < right) { /* 本体 */ } --reentcount; } こういう記述にしたほうが良かったかな?
263 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:21:23.52 ] C言語で逆引きサンプルでいいサイトありませんか?
264 名前:デフォルトの名無しさん [2011/12/28(水) 15:39:11.42 ] コンパイル時に、 % gcc -DHEX=12 a.c とやって、ソースを int hex = 0x12; としたいのだけど、どう書けばいいんだっけ... ("0x"を追加したい) int hex = 0x00##HEX; じゃだめだよね..
265 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:55:16.80 ] VCでしか確認できてないけど、↓じゃだめ? #define HEX_VAL(arg) 0x##arg int hex=HEX_VAL(HEX);
266 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:59:39.30 ] それだとgccじゃだめなんだな... って、確かgccはその書き方じゃダメだったような気がしてきた。 コンパイラ別にするのイヤだから別の方法で回避するわ。
267 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 16:11:10.19 ] ああ シンボルHEX の実体展開がなされるかどうか か 2段にすれば解決するんだっけ #define HEX_VAL(arg) 0x##arg #define HEX_V(arg) HEX_VAL(arg) 過去 ttp://pc11.2ch.net/test/read.cgi/tech/1144824670/139,143
268 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:14:57.72 ] お前らマージソートを何も見ないでかける? 難しくない?再帰といい処理といい マージソートなんて使う意味あるのか?
269 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:31:29.27 ] >>268 マージソートはクイックソートと同じO(NLogN)オーダーの速度を持ちながら安定なソート だからstable_sort()に使われる 欠点としては多量の記憶域が必要な事と、クイックソートの約2倍の時間が掛かる 安定でなくてもいいならクイックソート、安定で速度が必要ならマージソート
270 名前:デフォルトの名無しさん [2011/12/28(水) 17:33:47.68 ] ふうん
271 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:04:35.58 ] 教科書に載ってるようなくらいのC言語しかしたことないんだけど 仕事でC言語って行ったらどんなことするの?
272 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:33:08.35 ] >>271 個人的な感想ですが、担当者レベルだと、ひたすら、 ビジネスロジックを設計(詳細設計)して書く、 そして、コーディング規則は現場によって違うけど、 厳しい方が後々良い。けど、書いているときはすごく面倒。 で、大体、テンプレート(見本のソース)を誰かが作ってくれて、 それを、自分のビジネスロジックに合わせて記述する。 ビジネスロジック意外の定番のロジックは大抵、 テンプレートを先輩が作っておいてくれるから、 C言語的には、基本は知っておけば良い。 っていうか、ポインタ程度の理解はすごい重要。 で、よほど、性能を優先する処理以外は、 「他の人がメンテナンスしやすい(理解しやすい)処理を書く」が 基本、というのが自分の大昔の大雑把な経験。 他の人(後任)が理解できない記述やロジックは嫌われる。 もちろん、処理速度を優先する場合は仕方ないけど・・・。
273 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:47:24.27 ] >>272 ポインタをどのくらいまで理解すればいいの?
274 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:55:07.18 ] ポインタを「このくらいは理解できた」なんてのは妄想。 理解できたか、理解できていないか、どちらかしか有り得ない。 面接で「ダブルポインタは大丈夫ですが、トリプルポインタは自信がありません」なんて 言っているような輩は、実際ポインタを理解できていない。
275 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:55:45.50 ] トリプルポインタなんて使う場面はほとんどないけどな 大抵ダブルポインタまで
276 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 19:14:22.51 ] ダブルポインタなんて言われた時点で「きっと理解できてないんだろうなぁ」と思っちゃう この単語は使わない方がいい
277 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 19:33:09.97 ] そもそもそんな質問する面接があんの? 今時Cの仕事ってなにがあるんだろうか。 8bitとかのワンチップマイコンくらい?
278 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 19:34:00.92 ] パチンコ
279 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 20:22:22.00 ] ■民主党政権になって放送禁止になった言葉一覧■ [道義的責任・進退問題・発言のブレ・閣内不一致・派閥・プライマリーバランス 空気が読めない・庶民感覚・国民目線・バラマキで人気とり・国民に信を問うべき・OECDの貧困率 ワーキングプア・ネットカフェ難民・世襲・料亭・漢字・読み違え・直近の民意・国民の生活が一番、政権交代が最大の景気回復策、公務員改革 ガソリン値下げ、景気回復策、解散総選挙、ホッケの煮付け 世襲制廃止、地域主権、議員定数削減、地球温暖化対策]
280 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 20:24:40.34 ] NGワード情報ありがとう
281 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:48:58.32 ] カーナビ除く車載ソフトはだいたいC言語
282 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:58:45.07 ] >>275 execv*() の引数 char **p を malloc() で確保する場合に、 それが子関数を呼び出して呼び出し先で確保して親関数に戻ってくる場合には、 途中で char ***, が出現しないだろうか? codepad.org/EhhHbMVZ
283 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:39:07.02 ] ぼくも先輩方のような立派なCプログラマーになりたいのですが 今は大学で学んだ程度の基本的なC言語の文法くらいしかわかりません。 この先はどのように学習していけば良いのでしょうか?
284 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:42:44.85 ] >>283 一口にC言語って言っても、それを使って何をやるかってのはすごく幅広い そして目的によって全然ノウハウは違ってくるから、実際みんな得意分野不得意分野がある 具体的に目標となる分野を決めて、その分野のプログラミングの勉強をすればいいんじゃないかな
285 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:57:38.97 ] >>284 Webプログラミングに興味あります
286 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:01:07.81 ] C言語はLinuxをかじっとけば大体大丈夫になる
287 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:05:44.32 ] >>285 じゃあC言語ではないが、HTML と CSS は覚えておいて欲しいな Webプログラミングと言っても細かく分けると色々あるから その後に何をやるのかは知らんが、何れにしろその辺の知識は役に立つはずだ あとWebプログラミングなら専門板もあるんだぜ WebProg kohada.2ch.net/php/
288 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:28:13.34 ] なんでWebって文理不問なの やっぱ組み込み系の方が賢いんですよね
289 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:28:56.60 ] 流石にC言語の質問から離れ過ぎでしょそれは
290 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 00:33:45.06 ] 大学で1年間プログラミングを習い、文法やポインタや構造体などを理解し、 簡単なCUIプログラミングをいくらか演習したようなレペルです amazonのレビューで好評だったんで S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル www.amazon.co.jp/dp/4434124234 この本を買ったんですが、難しすぎです こんな自分に、おすすめの書籍かサイトを教えてくださいませ
291 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 01:06:00.17 ] webweb言ってる香具師はweb板いけばいいのに
292 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 03:44:07.66 ] >>272 ああ、同意だわ。 後続が理解しやすい、には、他のソースと程度をあわせることも含まれるね。 いかに当たり前のような記述であったとしても、その書き方が他のソースでされていなければ「何だこの小難しいコードは」と思われてしまう。 C++をベターC(…)として使っているプロジェクトでstd::vector使っただけでその洗礼を受けた。
293 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 07:04:39.91 ] 例えばみんな手作業でマグロの一本釣りしてるのに一人だけ全自動リール使って楽してたら 空気読めない奴だと思われて村八分にされるのが落ちだろ 全自動リールってすごいね俺も今度からそれ導入しよう!とは絶対にならない 日本とはそういう国だ
294 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 07:29:09.68 ] PHPを開発の主において、C/C++をアセンブラに翻訳するように PHPをCに翻訳して使えば良いと思う。 生産性的に。 そういうコンパイラがあるが、winで動かず確認してない。
295 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:25:52.21 ] なんでその程度の知識と技術しかないのにえらそうに言うの?
296 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:54:28.71 ] × ポインタ ○ ポインター
297 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:56:53.53 ] アクセントは「ポ」  ̄\___ ポインター
298 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 09:05:03.26 ] ポリンキーか!
299 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 09:11:51.70 ] 犬かよ。 理系ならJIS使え。
300 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:46:23.09 ] CRCを計算するソース。 #define CRC32_POLY 0x82F63B78 // CRC-32C (Castagnoli) #define CRC32_POLY 0xEDB88320 // CRC-32-IEEE 802.3 class CrcCalculate { public: unsigned int crc32table[256]; void make_crc_table(); CrcCalculate() { make_crc_table(); } friend unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal); } CrcCalculate_; void CrcCalculate::make_crc_table() { unsigned int i, j, x; for (i = 0; i < 256; i++){ x = i; for (j = 0; j < 8; j++) if(x&1) x=(x>>1 )^CRC32_POLY; else x>>= 1; crc32table[i]=x; }} unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal) { unsigned int i; unsigned char *p = (unsigned char *)ch; for (i = 0; i < byte; i++) cal = (cal >> 8) ^ CrcCalculate_.crc32table[(cal ^ p[i]) & 0xFF]; return cal; } unsigned int crc32 (void *ch, unsigned int byte) {return crc32base( ch, byte, 0xFFFFFFFF ) ^ 0xFFFFFFFF ; } unsigned int crc32 (const std::string &ch) { return crc32( (void *)&ch[0], ch.size()); }
301 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:01:48.33 ] >>300 荒らし市ね。
302 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:04:48.42 ] CRC32は重要な割に、標準関数に組み込まれてないから、簡単に使えるように貼ったんだよ。
303 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:09:43.25 ] 頭悪そうだな。
304 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:20:16.19 ] チェックサムで十分
305 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:23:17.43 ] Cでもないもの貼るな。
306 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:25:37.35 ] つーか、CスレにC++貼るとか頭に蛆でも湧いているのかと。
307 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:41:44.93 ] C++をやるとバカになるっていう見本を、身をもって示してくれてるんだよ
308 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:45:31.04 ] お前ら、プログラミング以外だとイキイキしてるなw
309 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:02:11.94 ] c99の可能性は考えないのか。
310 名前:309 mailto:sage [2011/12/29(木) 15:02:54.34 ] 俺が悪かった。
311 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:20:39.12 ] C99禁止って職場は、レガシー以外の理由があるのかな?
312 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:46:10.20 ] 大抵は低レベルに合わせるためだと思うけどな。 それ以外だと互換性か。
313 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:59:30.55 ] C99を導入する理由がそもそもないだろ
314 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:00:30.91 ] c99禁止と言いながら、//コメントやブロック先頭以外での変数の宣言は使う顧客もいるにはいる。
315 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:25:21.48 ] windowsではfopenは同時にオープンできる数に制限がある。 オープン、クローズを繰り返して使うか、APIを使うしかない。
316 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:25:59.03 ] 大体は職場がターゲットにしてるコンパイラの問題だと思うけどね。 例えば、VC++はC99非対応。 まぁ、コーディング規約があって、上司が老害な可能性は否定出来ない。
317 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:33:17.25 ] >>315 windows以外だと制限がないの?
318 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:34:41.06 ] FOPEN_MAXで分かる。 windowsでは50になってた。 しかし47あたりで開けなくなる。
319 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:37:35.02 ] 標準入力や出力というものがあってだな。
320 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:37:48.58 ] >>318 そりゃデフォで3つディスクリプタつかうもん。
321 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:39:36.03 ] 移植性をたもちつつWindowsのUTF-16に対応できる_wfopenが良いと思っていたが ファイル数の問題にぶち当たるとAPI使うしかなくなるな。
322 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:43:22.77 ] 移植性のために、UTF-16(UNCODE)対応とファイル数制限を外した fwopenなどの関数群はないものか。自作しかするしかないか。
323 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:43:58.90 ] つーか、なんでそんなにたくさん同時オープンしたいん?
324 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:04:38.17 ] そんなに沢山オープンしていると却って管理が面倒な飢餓。
325 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:07:55.94 ] そのオープン数の制限はスレッド単位? プロセス単位? どっちにしろ、子スレッドなり子プロセスなりを立ててやらせたらいい。
326 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:23:44.04 ] #include <windows.h> #include <stdio.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { printf("てすと"); MessageBox(NULL , "Error" , "エラー" , MB_OK); return 0; } 失礼します。 メッセージボックスを出して、かつコマンドプロンプトにも文字を出力させたいのですが 上記のプログラムではメッセージボックスしかできません。どうすればよいのでしょうか?
327 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:33:02.27 ] Win32API質問箱 Build100 toro.2ch.net/test/read.cgi/tech/1323365008/
328 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:19:33.98 ] >>326 >editbin /subsystem:console hoge.exe
329 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:03:01.03 ] >>322 UTF-16なんて普通にfopenでいいじゃん ファイル数制限も普通に解除できるし
330 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:13:10.32 ] >>327 そこのスレすごくこわい
331 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:17:46.19 ] W32を敵視する奴がいるから
332 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:32:34.93 ] >326 プロジェクトをWin32コンソールアプリケーションで作成する。
333 名前:290 mailto:sage [2011/12/29(木) 20:42:25.03 ] おすすめサイトや書籍の質問は駄目なのか?
334 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:27:20.85 ] すいません #include<stdio.h> int main(void) { int a, sum=0; for(a = 1; a <= 10; a++ );{ sum= sum+a; } printf("1から10の数の和は・・・%d", sum); return 0; } だとなぜか11になるのですが なぜでしょう
335 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:30:55.69 ] >>334 );{
336 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:58:09.79 ] | ┏━━━┓ 従軍慰安婦は反日朝日新聞の捏造でした。 | ┃借収安┃ デマだらけの報道に注意しよう | ┃三三婦┃ | ┃○○大┃ | ┃○○募┃ | ┃○圓集┃ | ┃圓以 ┃ | ┃迄上 ┃_ \┃可 ┃ \ ┗━━━┛ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | img04.ti-da.net/usr/wishcomestrue/t02200190_0220019010786142693.jpg
337 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:42:56.45 ] int n = 1234; ↑のような数字の各桁を上から取り出す方法はあるでしょうか? 最初に1を取り出し、次に2を取りだしていくような感じです。 nの桁数は決まっていません。 よろしくお願いします。
338 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:44:53.84 ] >>337 遅くても良いなら sprintf してから一文字ずつチェック
339 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:56:00.70 ] むしろsprintfでいい
340 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:58:20.03 ] 桁数が決まってないなら無理。 実装上の int や long の最大数を制限値とするならできる。
341 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:04:26.96 ] いやどっちにしろできるだろ。
342 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:08:42.62 ] >>340 どういう形であれロジック中で表現されているのに、それを取ることができないと断言するのはいかがなものか。
343 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:16:50.59 ] >>337 ほらよ。 codepad.org/XhObtVpm
344 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:17:59.15 ] 皆さん意見ありがとうございます。 桁数の方は2桁のときも4桁のときもありますが 最高は6桁で抑えれそうです。 引き続きsprintfを調査します。
345 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:18:20.93 ] 桁数が決まってないってどんな状態だよw そんなもん扱えるわけねーだろw
346 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:19:15.50 ] >>345 もういいから。
347 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:22:13.36 ] 実る前の林檎を食べることはできない。 時空を超越してる。
348 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:24:00.49 ] >>347 そんなことはない。>>343
349 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:25:53.41 ] >>343 凄いスマートなコードですね。 ありがとうございます。
350 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:26:13.53 ] codepad.org/Mr8A4yOo
351 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:29:22.16 ] まぁsprintf()の中で同じことをやっているわけだが。 >>350 せめてlimits使え。
352 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:37:02.91 ] 関数形式マクロの展開で、 #define max(x,y) (x>y?x:y) ・ ・ printf("max(x,y) = %d\n",max(x,y)); ・ ・ この場合""内のmax(x,y)が置換されないってのがいまいちしっくりこないんですが ""中の文字列は、定数としてメモリ上に取っておかれるようなイメージであってるでしょうか?
353 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:38:18.26 ] limits.hに最大桁数がマクロ定義されてるの?
354 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:42:33.87 ] >>348 >>>343 f()を呼び出すときに桁数決まってるじゃん。
355 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:49:09.72 ] じゃぁ桁数決まってない場合を書いてみろよ。
356 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:49:39.72 ] >>353 そんなこともわからんのか?
357 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:51:58.95 ] >352 なんか難しく考えてないか? コンパイラが文字列にはマクロを適用しない様にしてるってだけだろ。
358 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:53:12.66 ] >>355 だから桁数決まってないと無理ってんじゃん。
359 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:54:20.95 ] >356 なんだ、適当に反論したいだけか。
360 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:03:47.30 ] >358 元の要求は int n = 1234; なんだから問題ないだろ。
361 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:04:24.41 ] >>359 アホは黙ってろって。
362 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:13:03.12 ] 環境が書かれていない以上intの最大値(最大桁数)も決まっていない。 よって桁数が決まっていない。
363 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:14:25.96 ] つ アホは黙ってろって。>361
364 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:15:54.85 ] >>362 で、その場合、>>343 だと何の問題があるわけ?
365 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:18:41.99 ] そいつと俺は違う人。
366 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:19:40.90 ] >>343 が桁数を決めずに処理できる良い例ってことだろ。
367 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:20:50.71 ] 桁数が決まってない = 値が決まる前 これを扱うのはこの四次元時空においては不可能。
368 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:23:15.96 ] >>360 なんだからintの上限に決まってるだろ、アホ。
369 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:24:02.86 ] おこちゃまは寝る時間だぞ
370 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:25:21.77 ] intの最大値と最大桁数は違うと思うの。たとえ計算で求めることが出来るとしても。
371 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:26:59.27 ] 最大値がわかれば桁数もわかるだろ。 どこの世界に住んでんだよお前は。
372 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:31:27.50 ] ( <. | l // __ ヽ\,.ィ´ .ニニェ‐、// 〈〈〈〈 ヽ >、.く^┘ `) 〈 〈⊃ } // ´ , -‐-、 〈,ヘヘ ∩___∩ | | | l <丶`Д´> l | | ノ ヽ ! ! | l ヽ、__.ノ /./ / ● ● | / ,,・ ヽヽヘ、____,,..ィ,ン′ | ( _●_) ミ/, ’,∴ ・¨ `/`'‐--ヽ''´ 彡、 |∪| / 、・∵ ’ /、//|/  ̄ヽ / __ ヽノ / / // 異常 /\ 〉 (___) / / // TV/\ /
373 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:53:44.48 ] >371 子供は寝る時間だよ。
374 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 02:02:38.61 ] >371 アスペ乙
375 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 02:08:21.14 ] 低脳乙。
376 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 02:53:38.46 ] >>355 桁数の決まってない数字を出力するから、入力が終わっている状態を示してくれ
377 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:21:47.78 ] >>376 getchar()が-1を返したら終わり。
378 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:30:43.88 ] 1休さんかよw 屏風の虎w
379 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:32:30.81 ] >>377 ttp://ideone.com/2jocf
380 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:08:52.51 ] >>379 それだとnがINT_MAX越えたらAUTO。
381 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:12:14.92 ] INT_MAXを超える桁数ワロタ
382 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:15:28.48 ] 元々そういう話だろ、何言ってんだお前。
383 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:18:34.50 ] 元々そういう話ワロタ 元々はちげーだろw
384 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:24:14.62 ] INT_MAX桁以上の数を扱うのってどういうときだろう 天文学的な数字っていうのもせいぜい数十桁だろうに
385 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:30:02.86 ] そんな話だったのならとっくに終わってるってこと。
386 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:30:42.41 ] >>384 intが16bitならいくつかわかるか?
387 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:33:11.05 ] DXライブラリってどこでダウンロードすべき?
388 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:34:54.76 ] >>387 homepage2.nifty.com/natupaji/DxLib/
389 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:36:54.45 ] 有限でない数を内部で扱うのはむりだろ、それで結論? >>386 3万ぐらいでしょ
390 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:59:09.72 ] >>375
391 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:02:45.24 ] >>388 dクス
392 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:15:34.07 ] ファイル数制限を外して、UTF-16LEに対応するためにここまでできた。関数の中身はこれから調べて作る。 typedef void _WOFILE; _WOFILE* _WOfopen( const wstring &fn , const wstring &mode){} int _WOfseek(_WOFILE *fp, long offset, int origin){} long _WOftell(_WOFILE *stream){} size_t _WOfread(void *buf, size_t size, size_t n, _WOFILE *fp){} size_t _WOfwrite(void *buf, size_t size, size_t n, _WOFILE *fp){} int _WOfclose(_WOFILE *fp){} int _WOfeof(_WOFILE *fp){} #define FILE _WOFILE #define _wfopen _WOfopen #define fseek _WOfseek #define ftell _WOftell #define fread _WOfread #define fwrite _WOfwrite #define fclose _WOfclose #define feof _WOfeof
393 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:34:29.35 ] C言語で無限大の数を扱うにはどうしたらいいですか?
394 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:34:36.77 ] >>392 ファイル数制限を超えてしまうような設計は考え直した方がいい
395 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:35:11.50 ] >>393 "無限大"って文字列でおk
396 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:45:29.90 ] >>393 n = 1/0;
397 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:48:32.05 ] C言語で桁数の不明な数を受け取って表示するにはどうしたらいいですか? 何桁になるかは全くわからず、制約もつけられませんが、受け取り終わってから表示したいです
398 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:00:25.04 ] どんな方法にせよ、上限は必要
399 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:08:57.78 ] 結論が出ました
400 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:09:10.99 ] >>397 まだやってるのかw
401 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:11:07.84 ] >>393 IEEE754に定義があるからそれ使え。大抵の実装で使える。
402 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:26:35.95 ] >>397 toro.2ch.net/test/read.cgi/tech/1313183984/22
403 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:40:01.02 ] 最近「頭悪い質問で釣ってみた」の投稿多いな。
404 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:40:58.52 ] 冬休みで暇なんだよ 面白いTV番組も無いし
405 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:27:10.92 ] >>404 これでも解いてろ judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0120 制限時間1秒以内 メモリ32MB 以内だからな
406 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:30:14.66 ] >>392 違ってたら悪いんだけど、先頭4KBの人?
407 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:32:02.05 ] >>405 AOJって問題が日本語で書かれてるからか、ここ最近よく見るようになったね。 海外サイトならお金くれたりするのにね。。
408 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:39:00.44 ] 日本語で書かれていても条件の見落としが多いのに 英語だと問題文何回も読み直さなきゃいかんのがしんどい
409 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:42:55.01 ] >>408 ちなみにAOJ、英語設定で解いていくと条件の翻訳不足で詰む問題がいくつかあるんだぜ
410 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:46:00.99 ] まちまちな大きさのロールケーキをたくさん作るケーキ屋さんなんて、ない。
411 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:19:35.70 ] >>407 マジで金くれるの? 未解決問題でもコンテストでもないのに?
412 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:25:20.52 ] メールで鍵を交換するソフトのことなんですが 質問いいでしょうか
413 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:26:50.35 ] スレタイとどう関係あるかを説明できたらな。
414 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:55:44.49 ] sscanfで、一度読んだところは飛ばして次から読むような方法って何かありますか? char *str = "1 2 3 4"; while(sscanf(str,"%d",&i)) で4回ループして1〜4を読むような感じのことがしたいです
415 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:57:30.52 ] ポインタ(アドレス)を進める
416 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:58:24.26 ] >>414 %n ってのを調べればおk
417 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:59:45.84 ] 【フジテレビ】東日本大震災を体験した人々の証言を集め、 被害の実情を検証 『わ・す・れ・な・い〜東日本大震災・命の記録』 12月30日(金)午後6時〜午後8時54分放送 prtimes.jp/main/html/rd/p/000000251.000000084.html
418 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:05:49.40 ] >>415-416 %nで取得した分だけポインタを進めることでできました ありがとうございます
419 名前:デフォルトの名無しさん [2011/12/30(金) 19:29:27.09 ] 朝日新聞は一時期300人のネット工作員をかかえ、反日工作していた。 捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。 Domain Information: [ドメイン情報] a. [ドメイン名] ASAHI-NP.CO.JP e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ f. [組織名] 株式会社 朝日新聞社 −「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」− これはおそらく週刊誌さえ書けない。 「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ 09.3
420 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:30:59.82 ] ロールケーキの問題わからんなあ 普通に総当りしたら時間切れになるし どういう考え方で並びを求めるんだろう?
421 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:57:01.68 ] 凸凹になるようにする。 たとえば半径5と5をつなげると、距離20を使ってしまう。 凸凹だと節約出来る。
422 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:59:26.05 ] そうね、一番凸凹になる並びを求めて入るかどうか調べればいいんでないか。 つまり、隣同士の半径の差の合計を最小にする問題かな。
423 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:59:38.68 ] あ、最大ね。
424 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:19:52.33 ] うむ、一番凹凸になる並びとはどのように求めるのかわからん
425 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:34:47.35 ] てんさいです 【東京都渋谷区】 12/31(土) 年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ! 年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ! 12時00分 渋谷駅ハチ公前広場 「街頭演説」(〜13時30分) 13時30分 移動 14時00分 渋谷公会堂前 「街頭演説」(〜14時45分) 15時00分 代々木公園・NHK横「イベント広場」 「年忘れしてはならない!紅白桜祭」 抗議集会・コンサート・炊き出し等々 盛りだくさんでお送りします!(〜21時00分)
426 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:36:22.19 ] 誰も行かないだろ
427 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:04:10.36 ] 動的計画法にすればよいことが分かり 保持すべき結果も分かったつもりなのにacceptされない。。。 どこが悪いのか指摘ください ttp://ideone.com/uWKcO 数時間かけてできないなんて俺やばいなあ
428 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:00:44.90 ] >>427 何やってるのかさっぱり分からん 俺やべー
429 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:00:55.97 ] >>427 printf("%d %.5f¥n",width,min); ↑の行が余計とか?
430 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:27:09.54 ] >>427 while(sscanf(buf+offset,"%d%n",&cake[num],&oftmp) > 0){ ↑ケーキ12個の場合、cake[12]をアクセスしているみたいだが。
431 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:55:23.02 ] #include <stdio.h> int main() { printf("円の面積計算機\n"); printf("半径を入力してください\n"); double pi,hankei,S; pi=3.1415926535; scanf("%f",&hankei); S=hankei*hankei*pi; printf("面積は%fです",S); return 0; } 結果が0.000000になるんだが
432 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:58:56.20 ] %fはfloatへのポインタじゃないとだめ。
433 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:59:55.64 ] scanf("%f",&hankei); ↓ scanf("%lf",&hankei);
434 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 03:15:15.47 ] printfでは%fでも大丈夫だからscanfでも大丈夫だと思ってた ありがとう
435 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 08:37:07.48 ] printf()系とscanf()系には色んな点で互換性が無いから要注意。 互換性があるかのごとく書いてある入門書で勉強した人は特に。
436 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:21:54.70 ] scanなんとかは型とサイズの指定が必須という事でいい?
437 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:39:54.94 ] >>397 長さを問わないということは、文字列だという想定で。 終わりの検知(EOFとか)の仕方があれば、人間がタイプできる長さくらいは受け取った後で表示できる。
438 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 11:43:04.99 ] >>436 正確には、ISO/IEC 9899:1999 6.5.2.2.6。 可変長引数では float -> double の型変換が行われる。だから printf() に float と double の区別は不要。 scanf()系にわたるのはポインタだから float->double は不可能であり区別しなければならない。
439 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:49:43.19 ] >>397 pastebin.com/jN5Mbsut realloc 使ってあとは上限を処理系にまかせるのがラク。 もっと厳密にやるならヒープ管理とか双方向リストとか、reallocの必要ない形式のバッファ管理を行うことになる。 オンメモリや仮想メモリに収まらない長さまで想定するならmmap とかも使う
440 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:09:34.26 ] >>439 それだとcapaがINT_MAX越えたらAUTO。
441 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:12:03.88 ] >>438 floatとdoubleの違いも知らないやつが出てくるなよ。
442 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 13:16:54.04 ] >>441 ほう。 >>438 のどこに問題が?
443 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:27:45.55 ] >>441 じゃないが、まぁ別に不可能じゃないわな。 float=doubleの処理系もあるし。
444 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:29:16.49 ] >>440 >>439 じゃないが、同じようなのを考えてた。 一般論としてINTの上限は、取得できるメモリの最大長だったっけ?
445 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:32:24.67 ] INTの上限=コンパイラの仕様 取得できるメモリの最大長=OSの仕様
446 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:33:58.93 ] まぁ今時64bit OSも多いし、そんな一般論はないわな。
447 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:01:37.70 ] コマンドライン引数で、コマンドのオプション処理のところなんですが if(**(++argv)=='-'){ switch(*++(*argv)){ case 't': } } のように++(*argv)のポインタの移動で、argv[1][0]→argv[1][1]の処理が出来るのに、 double型4*3の配列の行ごとの合計を求めて表示する関数 void sum(double z[][3],int n){ //nは行数=4 で受け取って for(i=0;i<n;i++){ for(j=0;j<3;j++) sum+=*++(*z); //←ここでエラーが出ます printf("%d行めの合計は%f\n",sum); z++; } だとコンパイラからは「インクリメントの被演算子として左辺値が必要です。」とエラーが吐かれます "sum+=**z;"は通りますが、その次に"++(*z);"を入れると、「二項演算子 + への無効な被演算子です (‘double[3]’ と ‘int’)」とエラーが出ます そこで、該当個所を 「sum += *(*z+j);」にするとコンパイラも通り、期待通りの挙動をしてくれるのですが 配列z[i]の要素の、配列の要素z[i][j]を指すポインタをインクリメントするといったことはできないのでしょうか? 上の例で、それができる理由などはありますか?
448 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:13:52.63 ] int a[10]; a++;
449 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:21:13.88 ] 初心者はC++のstringつかってしょりしろ
450 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:42:12.76 ] >>448 なるほど・・・まさしくな例ですね それができないというか明らかに見慣れないのは分かるのですが int a[10]; a++;が出来ないのは内部的にどういう理由なんでしょうか? ポインタzが配列z[0]〜z[3]の先頭アドレスz[0]を指すのに対し *zはx[0]のエイリアスで、 *zは配列z[0][0]〜z[0][2]の先頭アドレスz[0][0]を指す とは単純に言えないのですかね・・・ それと if(**(++argv)=='-'){ switch(*++(*argv)){ case 't': } } ができるのはchar型特有なんでしょうか?
451 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:46:14.72 ] int a[10]は配列。 int *aはポインタ。
452 名前:450 mailto:sage [2011/12/31(土) 15:48:10.79 ] すいません、>>450 に追記すると int a[10];に対してaのアドレスをint *ptrとして別の関数に渡してやれば ptr++;の操作はできることと a++;との差異は何なのでしょうか
453 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:50:08.40 ] 別の関すに渡しているのは値。 その関数ではポインタで受けてるから操作できるってだけ。
454 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:52:30.61 ] >>451 あぁ、aは配列なのに対して、>>452 で言うならint *ptrはポインタですもんね なるほど、zはポインタで、*zが配列を指しているってことですか 確かにコンパイラのエラー表示がしっくりきました ありがとうございます
455 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:54:57.70 ] ほう、飲み込みが早いな。 もうこれでQZを越えたぞ。
456 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:59:50.53 ] constなのか書き換え可能なのか考えろよ。 char a[]="0123";でa+1はできるだろ。 a=a+1は無理だろ。 何で無理なのかはそういう仕組みで作ってしまったからだな。
457 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:05:05.60 ] 文字リテラルと書き換え不可能とは別の事柄だな。 文字列リテラル - mkubara.com mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB リテラル文字列は適切な const char[] 型を持つ msdn.microsoft.com/ja-jp/library/16c4s7yy (v=vs.90).aspx 文字列リテラルと char* (C++ 移行ガイド) docs.oracle.com/cd/E19957-01/805-7888/z4000220f2c4c/index.html
458 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:10:08.03 ] char a[]="0123";のアドレスが書き換えられないのは、 コンパイラが確保した変数のアドレス配置を書き換えられないって事だな。 例えば int n=1;のアドレスは&nだが、&n=&n+1とはできないのと一緒だな。
459 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 16:11:57.47 ] >>447 複数の点ではまっているようだ。 (1) double[][N] は double ** と可換ではない。 コマンドライン引数の内容が格納されている *argv[] は決して char[][] にはならないことと同様。 codepad.org/SNGc1UiK (2) >>448 ×double z[][3] で z++; (3) ×sum+=*++(*z); ○sum+=*((*z)++);
460 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:17:03.58 ] またわけのわからないことを言い出したな。
461 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:18:13.28 ] char str[]="0125634"; や char str[]="3120456"; のように、0から6までの半角の数字を重複する事無く全て含んでいるかチェックしたいと思っています。 現在、forループ中で if(str[i]-'0'==3)flag3=TRUE; のように一つずつチェックしているのですが、もっとよい方法はありませんか?
462 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 16:19:20.37 ] >>457 char *p = "0123"と char p[] = "0123" とを混同していないか?
463 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:19:21.30 ] >>461 qsort使えば?
464 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:21:37.95 ] >>456 なるほどなるほど・・・ 確かにいろいろ繋がりました constと書き換え可能の視点で見ると良さそうですね >>457 のサイトをちらちら読ませてもらいましたが コマンドライン引数として受け取った、文字列リテラルに関しては 配列で実現する文字列というより、ポインタで実現する文字列として扱っているから *argvは配列ではなくポインタであるんだろうと気づきました(違ってたら言ってください >>459 ++も*も右結合の優先順位は同じですから(3)に関してはどっちもエラーが出ました
465 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:24:24.97 ] >>461 用途は?
466 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:25:30.52 ] 面白そうだからやってみよう。 でも、if(str[i]-'0'==3)flag3=TRUE; と大差なさそうだな。 int n = 0; for (int i = 0; str[i]; ++i) { n |= 1 << (str[i] - '0'); } if (n == (1 << 7) - 1) { } ちゃんと動くか確かめてない。 それに、速度的には全然ダメだろう。
467 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:25:41.36 ] >>459 (3) それに関してはコード自体が間違ってました、すいません しかしエラーという点では同じです いろいろと考えることありそうなので、少し吟味させてもらいますねー
468 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:29:09.99 ] >>461 もっといいかはわからんが、俺ならこうする。 int counts[7]; int i; const char *p; for(i = 0; i < 7; i++){ counts[i] = 0; } for(p = str; *p != '\0'; p++){ assert('0' <= *p && *p < '7'); counts[*p - '0']++; } int ok = 1; for(i = 0; i < 7; i++){ if(counts[i] != 1){ ok = 0; break; } }
469 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:29:47.47 ] >461 char chk[7]={0}; flag = FALSE; ... if( (++chk[str[i]-'0']) >1) { /*重複あり*/ flag=TRUE; }
470 名前:デフォルトの名無しさん [2011/12/31(土) 17:07:19.61 ] ◆QZaw55cn4cって昔は質問者に対しては敬語だったのに、何か上からになったな。 あ、 ttp://mentor-diamond.jp/blog2/kokusai/?p=1017 この子が言ってる計算機科学なんだけど、こういうのって プログラミングできないと勉強とか研究できないものなの?
471 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 17:14:51.70 ] ゲームクリエイターってゲームのインターフェースだけを考えて プログラムは全くできなくてもいいんですか?
472 名前:デフォルトの名無しさん [2011/12/31(土) 17:19:21.90 ] cp2.uh-oh.jp/read_img/index/ab83e09400ff17d99f45ceee15a37e09.jpg cp2.uh-oh.jp/read_img/index/a58c2ddc9cdbe45529ef0d58c95cc232.jpg テレビに騙されるな(自称街の人-台本読んでるだけの業者)
473 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 22:46:36.69 ] >>455 >>447 の根本的な問題がまったく指摘できていない件について
474 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 22:47:05.77 ] >>440 べつにsize_tでもlong long でも使えばええがな
475 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:01:57.23 ] >>471 そりゃボードゲームとかカードゲームとか作るのもいるし
476 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:17:43.23 ] >>471 そりゃそうだろ。ザクっとデモとかモックアップ持ってける人は強いと思うけど。 映画監督がセット全部建てられる必要は無いだろ。
477 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:34:53.55 ] >>461 codepad.org/7bb5M4x6
478 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:45:33.44 ] >>474 それだとcapaがLONGLONG_MAX越えたらAUTO。
479 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 00:30:29.22 ] あけましておめでとう! Javaプログラマーの私が初書き込みを獲らせて頂きますね^^
480 名前: 【大吉】 【1860円】 mailto:sage [2012/01/01(日) 00:43:45.15 ] 派遣でCやってた俺の初カキコ。 学校でCを習ってたころに、このスレを発見できればよかった。
481 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 01:33:27.67 ] C言語さん今年もよろしく頼むよ
482 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 01:34:29.10 ] おう、まかせとけ。
483 名前:461 mailto:sage [2012/01/01(日) 02:37:00.06 ] 皆様、回答ありがとうございます。 そして明けましておめでとうございます。 まさかこれ程の答えてくれる方がいらっしゃるとは...それぞれ確認していきたいと思います。
484 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:44:50.76 ] まだ明けてねーだろ馬鹿。 一日の始まりは日の出からだ馬鹿。
485 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:52:25.06 ] 新年早々何キレてんだ坊主
486 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:58:52.45 ] >>484 一年の始まりは1月1日 0:00 からだ、ボケ。
487 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 03:01:07.54 ] >>484 それが何の仕様かは知らんが、2chの仕様としては0:00からじゃね?
488 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 03:28:00.45 ] 一日の始まりが日没からだった暦では、「クリスマス・イブ」はクリスマス日の始まりを意味してたけどな。
489 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 04:47:24.46 ] printf("ba------ka\n");
490 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 06:16:00.89 ] >>478 そのまえにヒープが足りなくなるからどうでもいい。
491 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 10:38:43.33 ] 「経世会(旧田中派)」VS「清和会」> (田中派)田中角栄 逮捕 ロッキード事件 (←東京地検特捜部) (経世会)竹下登 失脚 リクルート事件 (←東京地検特捜部) (経世会)金丸信 失脚逮捕 佐川急便献金・脱税 (←東京地検特捜部&国税) (経世会)中村喜四郎 逮捕 ゼネコン汚職 (←東京地検特捜部) (経世会)小渕恵三 急死(←ミステリー) (経世会)鈴木宗男 逮捕 斡旋収賄 (←東京地検特捜部) (経世会)橋本龍太郎 議員辞職 日歯連贈賄事件 (←東京地検特捜部) (経世会)野中広務 議員辞職 日歯連贈賄事件 (←東京地検特捜部) (経世会)村岡兼造 逮捕 日歯連贈賄事件 (←東京地検特捜部) (経世会)小沢一郎 西松不正献金事件 (←東京地検特捜部) (経世会)二階俊博 西松不正献金事件 (←東京地検特捜部) (清和会)岸信介 安泰 A級戦なのに釈放。 (清和会)福田赳夫 安泰 清和会を創設 (清和会)安倍晋太郎 安泰 国際勝共連合、統一教会に深く関与 (清和会)森喜朗 安泰 子息の押尾事件関与疑惑ほか (清和会)塩川正十郎 安泰 小泉構造改革の旗振り役 (清和会)小泉純一郎 安泰 郵政米営化、りそな問題他、疑惑の総合商社。 (清和会)尾身幸次 安泰 (清和会)中川秀直 安泰 統一協会(=米国福音派)に祝電 (清和会)安倍晋三 安泰 統一協会(=米国福音派)に祝電
492 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 11:48:18.18 ] 一年の計は元旦にあり ですよ。 自由でなんというか救われてなきゃあダメなんだ 独りで静かで豊かで・・・
493 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:11:57.53 ] unsigned int n = 0 ; n -= 1 ; if(n == UINT_MAX) { /* proc */ } else { /* error */ } これって環境によらずprocのブロックに行きますか?
494 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:15:54.15 ] いいえ。
495 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:21:12.12 ] 何がやりたいかわからない。
496 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 17:26:32.84 ] >>470 丁寧語にしても上から目線だといわれ、丁寧語をやめて常体にしても上から目線といわれるのであれば、今後は敬体にするしかないですね。
497 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:30:45.95 ] (unsigned int)-1はUINT_MAXになるように規格に決まってたはず だからこの場合も常に正しいんじゃないかな
498 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:31:03.13 ] >494 たとえばどんな環境だと駄目なの?
499 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:33:17.03 ] 以下のスレの最後のほうでC言語もまじって議論になってますが本当ですか? 【PHP】下らねぇ質問はID出して書き込みやがれ 113 kohada.2ch.net/test/read.cgi/php/1322564127/
500 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 19:43:13.35 ] JISに記載はあるが、減算のオーバーフローの場合”剰余”ってのはどうなるんだろう? (引用 JISX3010 6.2.5 型) 「符号無しオペランドを含む計算は,決してオーバフローしない。 すなわち,結果を符号無し整数型で表現できないときは, その型で表現しうる最大値より1 だけ大きい数を法とする剰余を結果とする。」
501 名前:デフォルトの名無しさん [2012/01/01(日) 19:58:44.67 ] だからオーバーフローしないって、そこに書いてあるだろ
502 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 20:55:21.28 ] >>470 符号化とか純理論でもいけると思うけど。
503 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:02:51.91 ] >>499 phpは昔数か月だけやったので、覚えていないけど。 php等の言語が当たり前にサポートされている機能が、C言語ではサポートされていないことも多いから。 だから、知識として必要なアルゴリズムは別なはずだよ。
504 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:05:03.10 ] >>503 >C言語ではサポートされていないことも多いから。 C言語使う奴は、サポートされてなければ自分でどうにかするもんだ
505 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:15:14.23 ] 負数の剰余ってなにか数学的な定義があるのか? ないとしたらC言語でも環境依存?
506 名前:デフォルトの名無しさん [2012/01/01(日) 21:17:48.83 ] 符号なしがどうやって負数になれるんだよw
507 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:30:24.04 ] 符号なしの演算結果が負数になるときが 「結果を符号無し整数型で表現できないとき」 じゃないの?
508 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 21:31:10.01 ] >>505 除法における剰余は実質的に厳密に定義されているわけではないからなあ。 wikipedia ja.wikipedia.org/wiki/%E9%99%A4%E6%B3%95#.E5.AE.9A.E7.BE.A9 では、正剰余、負剰余、最小非負剰余、絶対値最小剰余、等があるようで、その場その場で便利であるように解釈されていると思います。 で >>500 の場合は、正剰余と考えるのが妥当でしょう。
509 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:33:14.95 ] >>505 C言語では負数の剰余の決め方が定められているとさ。 www.bohyoh.com/CandCPP/FAQ/FAQ00134.html 知らなかった。
510 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:13:50.93 ] ______ r〃〃〃 f7⌒ろ) l‖‖‖ || f灯 |‖‖‖ || | | |儿儿儿._」⊥厶 〔__o____o_≦ト、 . i / ⌒ ⌒ ヽ ) !゙ (・ )` ´( ・) i/ | (_人__) | \ \ `ー' / / ー- 、 . ,ィ(⊆≧リ≦⊇)〃 / rク\ . / | ̄r少}¨ ̄〃 / /′ ヽ 〃 l | l| | l| 〃 / / └ヽ / l |l | |l/″ / ! 厂 \ く, Y ! l」fレト! / | / 1 丿 | | 丿} じ’ / | / | / l | `¨ / レ′ | 真の思考停 (在位 2009年9月16日〜2010年6月8日) 民主朝の初代考停、言行不一致、虚言、脱税、 そして外交において巨大な負の遺産を築いた。
511 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:31:27.24 ] >>508 今調べたのにそんな言い方するから恥をかくんだよ?
512 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:42:08.29 ] -7÷3 って、 0 あまり -7 であるべきだろ。
513 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:55:02.19 ] またバカが沸いた。
514 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 22:56:23.57 ] >>511 え?>>500 を読むかぎりどう考えても >>508 の解釈(正剰余)しかあり得ないんですけれども‥‥‥。 じゃあ >>500 はどう解釈するんですか?具体的に記述願いますね。 あと>>511 文中の「?」の使い方がよくわからないんですけど。まさか語尾上げを表意しているとかですかね?最近のはやりですか? ISO/IEC 9899:1999 6.2.5.9 A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type. ISO/IEC 9899:1999 6.5.5.6 When integers are divided, the result of the / operator is the algebraic quotient with any fractional part discarded. 88) 88)This is often called ‘‘truncation toward zero’’.
515 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:58:12.64 ] 語尾に?を付けるのは、自分の言う言葉に自信がないから
516 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:58:57.80 ] 500を読む限りって... 全部読んでないのかよ。
517 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:59:09.00 ] 元を。
518 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 23:07:41.00 ] >>516-517 え?>>514 に元とやらの関連部分を丸々コピペしたのですが、これだけで判断もできないの? そちらの >>500 の解釈を具体的によろしく。 しまった、これはわすれてたなあ。 ISO/IEC 9899:1999 6.5.5.6 If the quotient a/b is representable, the expression (a/b)*b + a%b shall equal a.
519 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:12:15.48 ] >>>511 文中の「?」の使い方 子供に言い聞かせるときのオカンの口調であろ
520 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:17:27.90 ] コテハン名乗ってる割には、些細なことにうるさいやつだな。 コテ禁止スレが多いのもわかる。
521 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:19:52.99 ] >>509 のページを読んでもよくわからなかったんだけど 規格にも書いてある「代数的な商」ってどういう意味?
522 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 23:30:01.06 ] >>521 -7 ÷ 3 ならば、普通に電卓等で割り算すると、-2.3333......。これが代数的な商でしょうね。文脈からの推測だけれども。 で、C99 ならば、-7 / 3 = -2 したがって、C99 の余りは = -7 - ( -2 * 3 ) = -1 でこれしかない。 でもね。C99 の剰余演算子の定義と、規格の中で使われている単語「剰余」、英語では modulo は違うと思うんです。違うとしないと意味をなさないですから。
523 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:30:41.42 ] >>521 代数の定義そのままだと受け取ったけど。 語弊があるように言えば、数字を変数を使って処理しきれる数学の事じゃ。
524 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:39:33.47 ] そもそも「割り算」ってなんなのよってことだ。 「−7個の林檎を3人で分けたら1人分はいくつになりますか?」 答えは「ゼロ」だよ。
525 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:40:47.50 ] >>520 こいつは都合が悪くなるとすぐコテ外して自演するから性質が悪い。 レベルも低いが。
526 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:41:05.13 ] 逆算できるようにしましょうねって事じゃないの?
527 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:43:12.14 ] >>522 ダリぃ。 そこの記述が曖昧でもわざわざ型変換とルール変える奴いねーから。 んな瑣末な解釈は入門スレで長々グダグダやってんな。 JISの6.3.1.3でも読んで今日は寝ろ。 起きてもまだ気になるなら、あとはガチ規格スレでやれ。
528 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:45:23.66 ] (-7 % 3) + (-7 / 3) * 3 の評価結果が -7 に戻ればオケ ってことかの
529 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:59:26.20 ] 負債の概念が無いとか何処の途上国人だよて話しだ
530 名前: ◆QZaw55cn4c mailto:sage [2012/01/02(月) 00:10:03.48 ] >>527 それが、C99 では % の意味が変わっている(正確には今まで処理系依存だったのが規格にのった)んですね。その点を教えてもらったことは >>509 に感謝。 >そこの記述が曖昧でもわざわざ型変換とルール変える奴いねーから。 確かに教えてもらった場所 ISO/IEC9899:1999 6.3.1.3.2 に的確に書いてますね。納得したので寝ます。おやすみなさい。 >>528 たぶん。
531 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:01:21.25 ] トイレに行きたい気分をcで表すとどうなりますか?
532 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:02:34.27 ] 表さない これが真理
533 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:30:49.63 ] ccc
534 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 07:04:20.35 ] >>532 大変参考になりました >>533 死ね
535 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 07:53:48.16 ] cね
536 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:19:01.01 ] >>534 答えはCCだな。
537 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:36:02.85 ] 乱数で出した数の重複を防ぐ以下のソースを書いたんだけど、重複が出てくる。 何が悪いの? srand((unsigned) time(NULL)); /* 乱数の初期化 */ for (i = 0; i <= 5; i++) { ra = rand() % 42 + 1; /* raに1〜42を入れる */ if (ra == r[i]) { /* raとr[i]が同じなら */ i--; } else { /* それ以外なら */ r[i] = ra; } }
538 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:40:48.45 ] i未満の全ての要素とraを比較しましょう
539 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:46:25.76 ] >>537 そりゃ今まで出した乱数を全くチェックしてないからな チェックしてるのは今から入れようとしてる場所だけ
540 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 05:41:29.69 ] >>538 ,539 数値が入ってないものと比べることになってたのか。 ありがとう。数値が入った後で比べるようにする。
541 名前:デフォルトの名無しさん [2012/01/03(火) 17:55:34.69 ] C言語で皆が元気になるモリモリプロジェクトを作成するにはどうしたらいいですか?
542 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:58:32.52 ] Hello,World!から始めて 四則演算、配列、条件分岐(if,switch)、繰り返し(for,while)、関数の宣言は一通りできるようになったし、 スコープ、ポインタ、構造体もある程度理解したつもりなんだが 未だにソフトウェア開発とかゲーム制作とか夢のまた夢 どうしたらその段階にいけるの
543 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:03:34.51 ] 向いてないから死ね
544 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:17:33.29 ] >>542 既に出来るよ。 ブロック崩しとか、インベーダー風ゲームとか、 とりあえず作ってみなよ。 多分できるから。
545 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:46:12.37 ] 初めて作ったゲームは課題で作ったcursesでのブロック崩しだったなぁ
546 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:25:55.19 ] >>542 ゴリ押しでいいならそのままでもできる 良い設計を心がけようとするとあと数年かかる
547 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:26:58.59 ] 良い設計が学べる書籍やWEBサイト教えてください
548 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:33:49.59 ] >>542 こういう事ができるソフトが欲しいとか、 そういうのを考えて作ってみる。
549 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:53:33.96 ] >>547 まずは自分で探す事を学べ
550 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:29:06.78 ] >>547 人さまのソースを見る。 オープンソースで規模のあるコードは、それなりに上手くできている。 ソフト開発って、作りたいものを作ればいいだけ。 こんなフリーウェアほしいってのを、自分で作ればいい
551 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:34:08.11 ] 夕飯の時間に食卓に座れば食事がやってくる そうじゃないとダメだしそうあるべきなんです
552 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:38:14.65 ] 良い設計なんかできなくてもソフトウェア自体は作れる 作りたいものが何もないのが致命的なんだよ 作りたいものさえあれば馬鹿でも経験が無くても必死に調べて 試行錯誤しながらも完成にこぎつけるんだよ
553 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:43:40.75 ] なんだ、致命的って。 死ぬのか? お前、死ぬのか?
554 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:43:57.89 ] うざい
555 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:48:39.32 ] どうやら屍のようだ。
556 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:52:39.14 ] >>553 は既に死んでいる
557 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:07:02.74 ] >542 標準ライブラリ以外のライブラリ使用に挑戦。 グラフィック描画やパッド入力など。
558 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:49:45.36 ] とりあえず socket.h かWinSock じゃね?
559 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 04:17:16.63 ] >>542 OSをWinと想定するが、Win32API覚えると良いよ 面倒くさかったらC#で.netでもいいけど 文法と規格に準じた標準ライブラリ覚えたんなら、環境依存のライブラリの使い方覚えれば、もぐら叩きやじゃんけん位はすぐに作れる
560 名前:デフォルトの名無しさん [2012/01/04(水) 04:19:18.69 ] Google電卓機能だと -2%10=8 -2%-10=-2 -7%3=2 -7%-3=-1 C言語もこうであって欲しかった
561 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 07:23:27.43 ] なんでC言語ってアロー演算子使うんだろう? 型判ってんだからドットでいいじゃないか
562 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 07:43:59.00 ] なんでこの板ってアスペばっかなんだよ(´・ω・`)
563 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 08:41:41.86 ] >>561 そりゃポインタと実体は全然別物だからね。 別に無理してC使わなくていいんじゃね?
564 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 12:40:06.22 ] >>561 それだとプログラマの方が混乱するだろ
565 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:54:39.57 ] いやならアロー演算子を使わなければいいじゃない
566 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 15:50:29.55 ] ______ r〃〃〃 f7⌒ろ) l‖‖‖ || f灯 |‖‖‖ || | | |儿儿儿._」⊥厶 〔__o____o_≦ト、 . i / ⌒ ⌒ ヽ ) !゙ (・ )` ´( ・) i/ | (_人__) | \ \ `ー' / / ー- 、 . ,ィ(⊆≧リ≦⊇)〃 / rク\ . / | ̄r少}¨ ̄〃 / /′ ヽ 〃 l | l| | l| 〃 / / └ヽ / l |l | |l/″ / ! 厂 \ く, Y ! l」fレト! / | / 1 丿 | | 丿} じ’ / | / | / l | `¨ / レ′ | 真の思考停 (在位 2009年9月16日〜2010年6月8日) 民主朝の初代考停、言行不一致、虚言、脱税、 そして外交において巨大な負の遺産を築いた。
567 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 20:37:13.22 ] 日本を滅亡に導いた人物である
568 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:04:46.44 ] judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0004 この問題なんですが、 ideone.com/iUQaM この解答でWrongAnswerと出ます 間違っている部分がさっぱりわかりません 宜しくお願いします
569 名前:デフォルトの名無しさん [2012/01/04(水) 21:52:51.59 ] ユーティリティーって何? 参考書見てたら、ユーティリティーの作成ってあった。
570 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:55:43.36 ] utilityは便利な小道具の詰め合わせみたいな感じ
571 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:33:19.98 ] は?
572 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:39:55.70 ] >>569 なんで辞書引かないんだ? なんでググらないんだ?
573 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:42:23.31 ] 辞書をひくごとに寿命が1分縮んでいることに気が付かないのか
574 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:47:55.78 ] ググれば分かることを聞いてるのは、コミュニケーションをとりたい寂しいPG。 冷たくすんな。
575 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:06:58.54 ] ソープにでも行けよ
576 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:17:38.87 ] 邪悪です!
577 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:24:25.57 ] >>568 入力例と出力例が一致しただけじゃ足りない場合がよくあるよ
578 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:34:39.32 ] >>568 四捨五入の処理入ってる?
579 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:35:55.52 ] >>578 実際にやってみればわかると思うが、この問題で引っかかるとこはそれじゃなかったよ
580 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:41:42.03 ] >>579 あ、わりい。
581 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:43:16.72 ] >>577-579 四捨五入はprintfがやってくれるので問題ないみたいです +0/-0が関係あるのかと思って-0を+0にしたりしてみたんですがダメみたいですね
582 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:48:12.56 ] >>581 1入力(a b c d e f)で1出力ではなく、複数入力に複数出力では? sample inputは2個の入力に対して、2個の出力を表示してる。
583 名前:デフォルトの名無しさん [2012/01/05(木) 00:08:20.53 ] 今までunsignedの付く変数型を使ったことが無かったので,試しに使ってみたのですが… 例えばunsigned int型なら,負の値は使用できないはずですよね? int a = 100; int b = 200; unsigned int c = a - b; とすると,cの値がマイナスになるのでエラーでも出るのかと思ったのですが… 問題なく c = -100 と出てしまいました.何故でしょうか? codepadの仕様…? codepad.org/GRuREQwD
584 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:10:36.33 ] >>583 c = %u
585 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:12:14.37 ] そりゃ "%d" って指定したら、そうなるだろうね。
586 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:45:29.78 ] >>581 あれ、-0だとおもってたが、、、他に特に特殊な処理は入ってないけれど
587 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 01:35:53.02 ] >>568 おそらく+0 -0の問題なんだろう if(x==0)x=0;としたら通った +0.0とするのでは対応できないということか
588 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 01:52:39.42 ] いや、別途-0を+0にするロジックを入れてるっぽい書き方だけどね。>>581
589 名前:デフォルトの名無しさん [2012/01/05(木) 08:16:34.51 ] 以下のスレの >>69 に、 hayabusa2.2ch.net/test/read.cgi/morningcoffee/1325667058/69 「マイナスになる可能性がないものは全部unsignedにしろ」というレスがあったのですが、 これの理由って何なのでしょうか。
590 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:37:51.07 ] >>589 面倒だからそこは読んでないけど、負の値を扱わない保証がある場合はunsignedの方が値域を広く取れる。 しかし、どの道入門レベルでは細かいことまで気が回らないだろうから signedで適切に組めるようになることを目指した方がいいかもしれない。 つまり、「マイナスになる可能性がないものは全部unsignedにしろ」と言うよりは signedかunsignedかは適材適所、I/Fをよく考えて決めるべき。
591 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:58:50.47 ] 大きさが足りないとかビット演算したいとかの理由がなければ常にsignedでいいよ unsignedだと小さな負の整数が大きな整数に変わっちゃうから下限チェックで問題が発生する
592 名前:デフォルトの名無しさん [2012/01/05(木) 09:10:05.79 ] ありがとうございます。
593 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:21:45.78 ] codepad.org/5x9nSXmX ↑の18行目以下の解説をどなたかお願いできませんか?
594 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:30:49.93 ] >>593 へったくっそなコードだな。
595 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:34:57.22 ] >>593 解説: なんでstrstr()使わねーの? 馬鹿じゃね? strstr()相当を作る課題なら、match_str()の中でstrlen()も使ってないのに strncmp()使っている辺りが大間抜け。
596 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:53:16.74 ] C言語今から勉強しようと思うんだけど初心者にオススメの本教えて下さい
597 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:57:44.09 ] >>596 www.amazon.co.jp/dp/4756100716
598 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:38:08.09 ] >593 ファイル開いて 一行づつ読み込んで 検索する文字列を探す。 標準文字列関数の動作の勉強かと思ったがstrncmpは使ってるんだよなぁ。
599 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:26:00.00 ] #include <stdio.h> #include <string.h> #include <process.h> #include <stdlib.h> int main(){ printf("%s",INPUTj3g()); return 0; } char INPUTj3g(){ char filename[30]; int strnum; printf("Input file name>");scanf("%s",&filename); strnum = strlen( filename ); if(filename[strnum-1] != 't'){ filename[strnum-4] = '.'; filename[strnum-3] = 't'; filename[strnum-2] = 'x'; filename[strnum-1] = 't'; filename[strnum] = '\0'; } return filename; } 上のような文字列を返すユーザ関数を作りたいのですがどうすればよいのでしょうか?
600 名前:デフォルトの名無しさん [2012/01/05(木) 19:30:22.16 ] どうすればよいのだおうね
601 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:35:05.64 ] >>599 突っ込みどころがありすぎ ここで訊くより入門書読んだほうが早いレベル
602 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:45:58.68 ] >>599 INPUTj3g()を抜けた時点でfilenameは使えなくなるから、呼び出す側で用意したほうがいいかな。 あとそれだと3文字以下の入力のときに、バッファの外に書き込むことになるね。 最後の文字が't'以外のときに強制的に".txt"に書き換える仕様もどうよって感じ。 #include <stdio.h> #include <string.h> #include <process.h> #include <stdlib.h> int main(){ char filename[100]; printf("%s",INPUTj3g(filename)); return 0; } char INPUTj3g(char* filename){ int strnum; printf("Input file name>");scanf("%s",filename); strnum = strlen( filename ); if(filename[strnum-1] != 't'){ filename[strnum-4] = '.'; filename[strnum-3] = 't'; filename[strnum-2] = 'x'; filename[strnum-1] = 't'; filename[strnum] = '\0'; } return filename; }
603 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:56:44.36 ] >>602 ありがとうございます、ではもし拡張子が入力されていなかったら プログラムで付け直させるにはどうすればよいでしょうか?
604 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:02:53.96 ] > filename[strnum-4] = '.'; > filename[strnum-3] = 't'; > filename[strnum-2] = 'x'; > filename[strnum-1] = 't'; > filename[strnum] = '\0'; strcpy(filename-4,".txt"); 遅くてもこう書き直したい。
605 名前:604 mailto:sage [2012/01/05(木) 20:07:18.24 ] >strcpy(filename-4,".txt"); 俺ってバカ… strcpy(&filename[strnum-4],".txt");
606 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:08:11.48 ] >>603 if (strchr(filename, '.') == NULL) { /* '.'がないから拡張子が入力されていない */ strcat(filename, ".txt"); /* 拡張子を追加 */ } ↑みたいな感じでいいと思う。 ファイル名をフルパスで入力されてディレクトリに'.'が含まれている場合とか には対応できない。 バッファの最大長を超える長さで入力された場合とか、まじめに作るとけっこう面倒。
607 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:17:54.08 ] >>604-607 ttp://codepad.org/ZnGnm8NK エラー 19: 移植性のないポインタ変換(関数 INPUTj3g ) まだダメみたいです・・・orz
608 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:21:42.98 ] >>607 INPUTj3g()は char INPUTj3g(char* filename)じゃなくて、 char* INPUTj3g(char* filename)だった。
609 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:25:07.59 ] >>604-607 >>608 できました、ありがとうございます!
610 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 21:30:03.51 ] マツコ 「K-POPはパクリ」 ikura.2ch.net/test/read.cgi/news/1325760245/ ★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 3 ikura.2ch.net/test/read.cgi/news/1325765534/ ★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 3 ikura.2ch.net/test/read.cgi/news/1325765572/ ★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 2 ikura.2ch.net/test/read.cgi/news/1325763378/ ★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 ikura.2ch.net/test/read.cgi/news/1325760720/ ↓そーす c3413260.r60.cf0.rackcdn.com/20s00002017.jpg c3413260.r60.cf0.rackcdn.com/20s00002018.jpg c3413260.r60.cf0.rackcdn.com/20s00002019.jpg c3413260.r60.cf0.rackcdn.com/20s00002020.jpg c3413260.r60.cf0.rackcdn.com/20s00002021.jpg c3413260.r60.cf0.rackcdn.com/20s00002028.jpg c3413260.r60.cf0.rackcdn.com/20s00002027.jpg c3413260.r60.cf0.rackcdn.com/20s00002023.jpg c3413260.r60.cf0.rackcdn.com/20s00002024.jpg
611 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:45:21.11 ] 全ての行にコメント書くとさすがにくどい?
612 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:51:15.19 ] >>611 意味があればいいけど。
613 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 04:39:17.13 ] >>611 よほど全編に渡ってトリッキーなやり方してるコードとか 説明のためのサンプルコードとかなら分かるが 基本的にはコメントの内容を疑ってしまうかな… どんなコメントなんだい?
614 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 08:08:08.98 ] 何故エラーが出るかわかりません。 replace = strstr(ptemp,"テスト(XXXX年XX月分)"); sprintf(monthfilename,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]); strncpy(replace,monthfilename,sizeof(monthfilename)); fputs(ptemp,fp2);←ここで書き込みアクセス違反でエラー monthfilenameには201110っていう文字が入ってる。 fp2のファイルポインタはfopenした時にNULLじゃなかったから正常なファイルポインタのはず。 どんな原因が考えられますか?
615 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 08:54:42.66 ] >>614 >monthfilenameには201110っていう文字が入ってる。 monthbufの間違いだよな? それにしたって変数名からするとmonthfilenameでfopenしそうなもんだが ”テスト(2011年10月分)”って名前のテキストファイルつくんの? もうちょっとコード出そうよ。
616 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 08:58:57.38 ] >>614 ファイルのオープンモードの間違い ポインタの指している先が無効 ここに書いてない部分が変なアドレスを書き換えている
617 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:03:06.00 ] >>615 monthbufの間違いです。 わかりにくかったですね。 char monthbuf[30]; char monthfilename[50]; //日付書き換え用ポインタ char *replace; //月取得 puts("指定した月をyyyymmddの形式で入力して下さい"); scanf("%s",monthbuf); sprintf(monthfilename,"%s.html",monthbuf); fp2 = fopen(monthfilename,"w"); replace = strstr(ptemp,"テスト(XXXX年XX月分)"); sprintf(monthfilename,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]); strncpy(replace,monthfilename,sizeof(monthfilename)); fputs(ptemp,fp2);←ここで書き込みアクセス違反でエラー ptempには大量の文字列が入っています。 replaceのポインタはNULLじゃないことは確認してます。 わかりにくいですが、monthfilenameはただ使いまわししてるだけです。 よろしくお願いします。
618 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:07:15.82 ] >>617 sizeof が問題だな 終端文字を破壊してるんだろう おかげで読んじゃいけない部分を読んだ
619 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:16:39.45 ] >>618 ありがとうございます sizeofって終端文字を破壊するんですか? よく意味がわからないんですがどうやって解決すればいいですか? strlenにしてもだめでした。 とりあえずやりたいのは、 ptempの中にある「テスト(XXXX年XX月分)」という文字列を ちゃんと数字の入ったものに置き換えたいんです。
620 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:01:35.06 ] >>619 「sizeofが終端記号を破壊する」のではない。 sizeof(monthfilename)で50が得られるが、本当にreplaceしたいのは”テスト(XXXX年XX月分)” の部分だから、50ではなく”テスト(XXXX年XX月分)”の長さが必要。 X sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)", O sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)¥n", /* <-strlenで長さを得られるようになる */ X strncpy(replace, monthfilename, sizeof(monthfilename)); O strncpy(replace, monthfilename, strlen(monthfilename));
621 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:16:42.62 ] まだエラー出るじゃねーかw もう一回自分で調べてみるわ
622 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:45:30.61 ] *ptemp = "....."とかやってんじゃねーの?
623 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:23:51.71 ] >>619 strncpy()の挙動はちゃんと調べた? 曖昧にしていると嵌るぞ。 monthfilenameに文字列を作ったら、memcpy(replace, monthfilename, strlen(monthfilename))でいいべさ。
624 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:29:38.54 ] そもそも、replaceが見つかった時点で const int year = sizeof("テスト(") - 1; const int month = sizeof("テスト(XXXX年") - 1; replace[year] = monthbuf[0]; replace[year + 1] = monthbuf[1]; replace[year + 2] = monthbuf[2]; replace[year + 3] = monthbuf[3]; あ、面倒だ。以下同様に。或いはmemcpy()を使って。 memcpy(replace + month, monthbuf + 4, 2); ってこったろ。 monthfilenameなんて要らないじゃん。
625 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:30:29.67 ] >>620 > O sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)¥n", /* <-strlenで長さを得られるようになる */ えっ
626 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:40:53.45 ] >>624 後でメンテが面倒だからその方法はあえて避けた で、memcpyの関数を見て、「あれ?俺何でstrncpy使ってんだ?」と思ったんで、 memcpy(replace,monthfilename,strlen(monthfilename)); って書いてみたら一発でいけました strncpyは最後に終端文字が自動的に付加されないことは知ってたから、 使ったのに何でダメだったんだろう? あくまで文字列コピー用の関数だからかな? まあとりあえずmemcpyでいけましたんで良しとします。 ご迷惑をおかけしました。 ありがとうございました。
627 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:44:25.52 ] 確かに>620は間が抜けている。 >>604 strcpy()は遅くないよ。
628 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:52:13.36 ] >>626 sizeof使ってたからじゃなくてか?
629 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:17:00.56 ] >>628 sizeofをstrlenにしても、strncpyを使ったらだめでした 原因分かる人が居るなら教えて欲しいものですね
630 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:20:55.01 ] fputs で落ちてるんじゃなくて strncpy の内部で落ちてるんでないかい? replace の器が 丁度 ,"テスト(XXXX年XX月分)" で終るような場合 sizeof(monthfilename) = 50 で複写すると器の範囲を突破するもの
631 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:27:02.05 ] エスパー試験か。
632 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:31:48.07 ] >>630 残念 replaceの器であるptempで該当の文字がある部分は、終端よりも大分前だ。 たぶん終端よりも2000バイトぐらい前。 わかる人いない? このスレならレベル高そうだから誰かわかると思ったんだけど。 いや、別にバカにしてないよ
633 名前: ◆QZaw55cn4c mailto:sage [2012/01/06(金) 12:37:10.20 ] つ codepad.org/ 話はそれからだ。
634 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:37:53.90 ] >>632 コードを全部あげてみなよ。
635 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:42:10.40 ] ptempの文章はあるテキストファイルから読み込んでるから無理 他のコードはvector使いまくってて絶対読めないよ あと身バレしそうだし。 再現できるコード作ってみるわ。余裕があれば。
636 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:47:50.21 ] >>635 釣だろうけど手空きだったので。 codepad.org/QjXEQX0c replace = strstr(ptemp, "テスト(XXXX年XX月分)"); で結果NULLの対策サボってるためとエスパーしてみた。
637 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:56:15.99 ] >>636 実行したら最後に数字の8が書き出されたぞ あとなんで改行文字入れてるのか理解できん。必要か? 結果NULLについては事前に調べて問題なかったから、 あえて書いてないだけ。
638 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:00:48.51 ] 配列のサイズが実は50ではない、ファイル名のプレフィクスが実はテストではない strncpyしたあとの文字列を標準出力に出してみるとかデバッガで見てみるとかしたらどう
639 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:01:52.78 ] ああでもmemcpyならうまくいったのか。 wchar関係とかは
640 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:03:28.82 ] >>637 再現コードを作ってからにしろ、低脳が。
641 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:08:30.36 ] ていうか、replaceの位置自体、ptempの終端から2000バイト以上も前の位置なんだから、 そこにもし50バイト書き込んでもちょっと上書きされる部分が増えるだけで、 別に不正な領域に書き出してるわけじゃないじゃん? もしおかしい領域に書き込んでたら、strncpyの時点でエラーが出るはずだしね。 fputsでエラーが出る理由がわからん。 0x0000000へのアクセス違反っぽいエラーだけど。 なぜmemcpyに変えるだけで、fputsでエラーが出なくなるのかが意味不明。 別に書き換えてる領域は変わんないんだし。 面倒になってきたからゆるーく考えるか、スルーして下さい。 再現コードも作る時間ないかもしれんから
642 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:09:33.30 ] 分かったよ 再現コードは必ず作るから一日ぐらい待っててくれ。
643 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:10:33.20 ] >>641 実はC++/CLIでpin_ptr使ってないからってこともないんだよね。
644 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:12:05.31 ] 糞CLIなんか使わないよ
645 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:12:28.81 ] vectorの内部を直接触ってるとか
646 名前:614 mailto:sage [2012/01/06(金) 13:13:58.28 ] ptempはただの動的確保したバッファだし、 書き出し部分ではvector関連は一切触ってない
647 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:14:02.61 ] どっかで文字列終端コードを破壊しちゃってるような感じのコケ方だなあ
648 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:37:29.65 ] 再現しないコード codepad.org/VLVofCEN
649 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:16:16.30 ] もしLinuxで書いてるなら、614はvalgrind とかの使い方を覚えるべき。
650 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:19:38.96 ] なんでvgrind?と思ったがそんなのがあるのか。
651 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:40:50.89 ] strlenは無条件にバイト数を返して、strncpyの引数3は文字数な環境だとか。
652 名前:614 mailto:sage [2012/01/06(金) 15:50:59.85 ] すいません strncpyでもいけました。 ですが、monthfilenameのバッファを適当な別のバッファに変えて、 sprintf(tempbuf,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]); strncpy(replace,tempbuf,sizeof(tempbuf)); ってしないとだめでした。 monthfilenameを使うとやっぱりエラーが出ます。 まあmonthfilenameっていう使わなくなったバッファを使いまわした罰だと思いますが、 sprintf実行した時点でちゃんと終端文字が付加されるので、 おかしくなるはずはないと思うんですが何でですかねぇ。
653 名前:614 mailto:sage [2012/01/06(金) 15:55:40.77 ] それとLinux使ってないってかさっぱりわからないです。 ありがとうございました。
654 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:56:45.68 ] で、再現コードは。 どこまで低脳なんだ。
655 名前:614 mailto:sage [2012/01/06(金) 15:59:49.90 ] 再現コードは作れませんでした 今は元コード使って実験してます。 だって再現しないんだもん
656 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:11:27.36 ] fopen に渡したファイル名のポインタを暗に保持してて、書き換え不可な処理系とかのオチだったりして char name[] = "hogehoge"; FILE* fp = fopen(name, "w"); strcpy(name, "a"); fputs("tekitou", fp); これだけで沈
657 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:17:46.01 ] まったく、どっからそんな妄想がわいてくるんだよ…
658 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:35:50.94 ] つか最初から処理系を書けよ。
659 名前:614 mailto:sage [2012/01/06(金) 16:44:44.43 ] VC2008 express editionとwin 7のコンビです
660 名前:614 mailto:sage [2012/01/06(金) 16:46:02.01 ] >>656 あ、これかもしれないです。 ちょっと待ってて下さい。
661 名前:614 mailto:sage [2012/01/06(金) 16:49:32.60 ] あーでも再現コードでやってみても再現しないですね。 元コードでは相変わらずエラー。 何が違うんですかこれ
662 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:55:53.28 ] すでに他のところでヒープかスタックがぶっこわれてるに10ジンバブエドル
663 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:03:26.64 ] >>614 フィルターを通すと出てくる情報がすべてゴミになるなw 身バレ云々バカじゃね
664 名前:614 mailto:sage [2012/01/06(金) 17:04:02.24 ] でも原因は明らかに>>656 ですよね ファイル名として使ったバッファは使いまわさないようにします。 ありがとうございました。
665 名前:614 mailto:sage [2012/01/06(金) 17:04:52.46 ] バカというかマヌケですね ありがとうございました
666 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:08:46.22 ] >>656 で落ちる処理系なんてどんな行儀の悪いコンパイラだよ そのゴミみたいなコンパイラの名前を知りたいもんだ
667 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:23:28.39 ] いや、馬鹿だよお前 プログラムやめるべき
668 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:31:23.37 ] >>665 落ちるコードの全体ってどこにあります? 未解決なら見てみたいんだが。
669 名前:614 mailto:sage [2012/01/06(金) 17:34:37.76 ] >>666 >>659 に書いてますが >>667 自分用のプログラムだから手抜いて作ったんだよ 配布するやつはちゃんと作ってるから安心しろ >>668 全体のコードは>>614 の50倍ぐらいの長さもあるから無理 身バレの可能性あるし
670 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:52:40.25 ] >>656 が原因とも確認してねーんだろ? だいたい、年を書くのに%c%c%c%cとか使うとこから程度は知れてるがな。
671 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:01:28.93 ] >>670 いや、だから再現するために>>656 のコードと同じことしてみたけど再現しなかったんだって >>661 で言ってるよ 元コードだと起こって、再現するために書いたコードでは起こらなかった コード量による違いでもあるのか?
672 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:02:46.49 ] >>670 別に普通だろ。 それに自分用のプログラムだから動けばいい程度でしか作ってないし
673 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:05:55.10 ] >>672 これが処理できるか確認してもらえますか? int main(void){ char buf[] = "aaa"; buf[1] = 'b'; puts(buf); }
674 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:07:33.29 ] >>673 できた aba
675 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:07:43.12 ] >>672 じゃぁ>>664 は何なんだよ。 頭腐ってるだろ、お前。 >>673 それに何の意味があるんだ。
676 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:08:04.43 ] >>674 ごめん。
677 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:11:00.13 ] >>675 >>664 はそれ以外原因が思いつかないからそう書いたんだよ 一番筋が通ってるし、なんか聞いたことある気がしたしな
678 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:18:07.50 ] なんだその理由は。 これがゆとりが進化した形なのか。
679 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:19:09.05 ] 少なくともお前よりはゆとりでない自信はある
680 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:24:00.19 ] じゃぁなんで>>662 の指摘は無視なんだ? デバッガ使ったことあるか?
681 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:26:13.91 ] デバッグなんてとっくの昔にやってるわ それでもわからんからここに来たんだろーが
682 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:29:34.15 ] ゆとり乙。
683 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:30:51.12 ] >>682 はいはい クソガキは寝てろ
684 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:42:33.72 ] デバッガの使い方も知らないでよく言うな、まったく。
685 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:48:51.15 ] 今回のはデバッガを使っても分からない問題だろ だからここに来た それだけ
686 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:53:10.35 ] なんのためのデバッガだよ。 printfだけでもわかるだろ。
687 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:54:55.88 ] わかんねーよ printfするまでもなく、ブレークポイントしかけて変数の中身見てるわ それでもわかんなかったんだよ
688 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:55:47.73 ] それはお前が低脳なだけ。 再現コードも出さずに迷惑なだけ。
689 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:55:53.74 ] 先に俺の実力とどんなデバッグをしたか書いとけばよかったな 個別に黙らせてると疲れるわ
690 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:56:50.13 ] 再現コードがかけないんだから仕方ないだろ まだはっきりと原因特定できてないんだから めんどくせーからまた後でくるわ
691 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:58:11.07 ] いやいや、すごいよ、お前は。 落ちる場所までわかってるのに理由がわからないとか。 しかもデバッガ上で再現してんだろ? ほんと、すごいわ。
692 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:04:31.37 ] 元コードのデバッガ上で再現してるよ 変数見てもおかしくないんだから原因わかるわけねーだろ
693 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:07:03.13 ] >>692 問題のソースは>>636 のやつか?
694 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:16:44.35 ] つか最初からmonthfilename使い回そうとかバカ確定なんだからさ
695 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:17:11.92 ] しかし、よくそんなレベルでこんなこと>>689 言えるね、おれもびっくりするよ。
696 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:20:46.07 ] >>693 問題のソースは>>617 です。 ですが>>652 のように、monthfilenameを使わずに、 別のバッファを使えば問題なく処理できました。 それともう一回検証してみたところ、memcpyでもstrncpyでも>>617 のソースでやればエラーがでました。 「memcpyならいけた」という私の発言は間違いです。失礼しました。 >>617 のソースは全体のソースの一部です。 再現しようと>>617 のソースを切り取って、 適当な文字列を作ってptempに代入してやってみたら、何故かエラーが出ませんでした。 ですので原因がはっきりと特定できていない状況です。 でも状況からして>>656 の方が指摘していただいてることが 一番可能性が高いと個人的には思っています。 そろそろウザイと思われてると思いますので、 スルーしてくださって結構です。
697 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:22:13.73 ] >>694 お前は人のレス読んでるのか? 自分用のプログラムだから手抜いて作ってるって言っただろが めんどくせーから使いまわすか、って気持ちで作ってたんだよ だからそんなとこ突っ込んでも意味ねーよ
698 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:22:43.71 ] はいはい、低脳乙。
699 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:23:45.56 ] マジメにレスしてくれた方はありがとうございました。 その他のクズの皆さんは死んでください 以上。
700 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:25:13.29 ] 迷惑かけるだけかけて、ほんとゆとりな上にクズが何言ってるんだか。
701 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:30:40.02 ] >>696 妙なところを書き換えてない限り >>656 で落ちるのはありえないんだよマヌケ
702 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:32:32.06 ] >>701 再現コードでは落ちなかったんだよ 元コードだと落ちるんだよ 俺も原因わからねーよ
703 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:35:02.17 ] で、まだ>>689 なの?
704 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:44:33.81 ] >>699 win7でvc++2008で試してみたが。。。 表記されていないptempを「テスト(XXXX年XX月分)」にして、 strncpyの第三引数をstrlen(monthfilename)にすると普通に動いた。
705 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:50:20.27 ] こんな聞きかたしてるバカは死ねってことか。了解。
706 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 20:17:17.89 ] 早く>>689 頼むよ。 どんだけすごいのか教えてちょ。
707 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 20:52:48.43 ] >>689 当たり前だろ。 質問するときは、どういうことを調べたかとか試したかとか書けよ。 プログラムの技術以前の問題だ。
708 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:05:14.27 ] どこがおかしいか特定できないのに、ここがおかしいはずだって思い込むアホが多すぎて困る
709 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:11:25.65 ] 思い切りから不具合を見つけることもあるんだが。 こいつCの仕様を丸暗記してるのか?
710 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:15:55.85 ] 思い切り? こいつってどいつのことだ。 普通、わからなかったら仕様書確認するだろ。