- 1 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/30(金) 21:01:32.89 ]
- C言語の入門者向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 99 toro.2ch.net/test/read.cgi/tech/1331786500/ ★過去スレ 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++の宿題片付けます 156代目 toro.2ch.net/test/read.cgi/tech/1328276597/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/
- 357 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 17:11:32.83 ]
- で、どんなもん作りたいんだ?
- 358 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 17:14:13.08 ]
- >>356
マジか さんクソ 今いれたの早速削除するわ 俺のOSはW7だけど大丈夫だよな? >>357 バカ売れするアイフォンアプリを作りたいんだが どんなんが売れるんだ?
- 359 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 17:15:44.05 ]
- ちょっと図書館いってくるわ
閉まっちゃうから早くいかないと C言語の本借りてくるわ あとラノベと
- 360 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 17:18:53.16 ]
- >>358 iPhoneだったら、MacのiOSかその互換OSが必要だよ。
Visual C++じゃ無理。
- 361 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 17:21:55.58 ]
- ごめん、iOSじゃなくてMac OS Xだった
- 362 名前:デフォルトの名無しさん [2012/04/12(木) 17:21:57.14 ]
- >>358
最後の一行が致命傷だ 提案力ないやつはどんなに頑張っても決して報われない
- 363 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 17:30:47.28 ]
- 何が売れるかわかったら、さっさと引きこもる。
- 364 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/12(木) 17:34:46.47 ]
- 技術的には割としょーもないもんでもウケてるのあるからな。
売れ筋を見極める目がないようではだめぽ。 つーか、そんなんわかるんだったら自分で作るわ。
- 365 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 17:52:54.89 ]
- 携帯のアプリ作りたいならJavaだろ
- 366 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 17:53:29.40 ]
- >>360
マジで? マックねえとアイフォンアプリ作れんの? 困るじゃねえか >>362 いいの とりあえずCから学ぶの
- 367 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 17:59:12.43 ]
- WindowsでiPhoneアプリ開発は、ハードル高すぎ。iPhone持ってる?
blog.makotokw.com/2008/07/01/windowscygwiniphoneipod_touch/
- 368 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:01:27.01 ]
- オブジェクティブCってので書けば出来ると思ってたんだが
違うのか?
- 369 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 18:05:35.25 ]
- >>367 どう考えても貴様様にはご無理でしょう。
iPhoneアプリを開発するには、iPhone SDKが必要。 iPhone SDKを動作させるには、Mac OS Xかその互換OSが必要。 初心者は、おとなしくMac買うんだな。
- 370 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:05:59.51 ]
- >>367
アイフォンは持ってるよ 4S じゃあマックを手に入れるのが先なのか という事はその金はアンドロイドアプリの開発で稼ぐしかないのかな
- 371 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:07:45.75 ]
- よく考えたらカラコンよりマックのほうが高いじゃねえか
- 372 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:09:19.27 ]
- あれだな。
自宅業務内職のために、まずワープロ買わせる、みたいなビジネスモデルだな。
- 373 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:13:06.16 ]
- 詐欺にひっかかった気分だ
ラノベよも
- 374 名前:デフォルトの名無しさん [2012/04/12(木) 18:15:50.23 ]
- 何をしたらいいかわからん奴におすすめは脱獄
ひたすら悪さばっかりするクソガキやってると その頃の生活の知恵が後に糧となっている
- 375 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:19:54.84 ]
- アプリ開発で金稼ぐ自信があるならウィンドウズ向けにアプリ作ってvectorあたりにシェアウェア登録して金儲けしてみろよと何でもしもしならうまくいくと思えるんだ
- 376 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:22:47.29 ]
- 一応もしもしのほうが金が取りやすいのは間違いない
- 377 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:23:05.45 ]
- ちょっと調べてみたが
インテルCPU積んでるマックならいいのか? スペックとかうんこでも
- 378 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 18:31:04.20 ]
- >>377 原理的には可能。多少いらつくと思うけどね。
- 379 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 18:34:21.08 ]
- www.atmarkit.co.jp/fsmart/articles/iphonesdk01/01.html
- 380 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 18:35:21.29 ]
- Mac OS XじゃなくてIntel Macだったようだね。あやふやな知識でごめん。
- 381 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:37:07.34 ]
- そうか
ねだって買ってもらった7のミニノートがあるんだフロンティアの 1年以上使ってないからまずそれを売ろう あとX箱のソフトとか売って さらにアイフォン3Gの本体あるから売るわ そんで中古のマックMINIとか買えばいいな
- 382 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:37:44.23 ]
- >>380
いや 色々ありがとう パンツのひとつもあげたいくらいだ
- 383 名前: ◆QZaw55cn4c mailto:sage [2012/04/12(木) 18:38:35.06 ]
- >>343
逆じゃない?例:スタックポインタ
- 384 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:39:14.70 ]
- 問題はミニノート以外は妹の持ち物という事だが
最近スカイリムを買ってもらって夢中だから気づかないだろう
- 385 名前:330 mailto:sage [2012/04/12(木) 18:40:09.54 ]
- >>342
ええと、なんかがんばってたんだな。 たとえばSPが後置インクリメントである環境を用意するよね。 >>329は、マシン自体がそうなってるから、 それを複雑というのはやめてくれという主張だよね。 これがどれだけおかしな主張だったり例であるかがわからないの?
- 386 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/04/12(木) 18:40:19.55 ]
- Mac OS X 10.5.3以降必須って書いてあるぞ。
- 387 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:49:36.22 ]
- AndroidならLinuxでJavaでタダじゃないの
- 388 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:50:57.52 ]
- 何! OSも新しいのがいるのか
2万以下で買えるかな・・・
- 389 名前:デフォルトの名無しさん [2012/04/12(木) 18:51:17.98 ]
- >>385
方言が強くてわからへん、何言うとんねん
- 390 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 18:56:42.08 ]
- >>387
なんかさ アンドロイドのアプリは端末の使用がいっぱいあって開発がめんどくせえんだろ? どっかの会社が開発コストかかりすぎて儲からんってアンドロイドからは撤退してたじゃん
- 391 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 20:39:15.74 ]
- >>390
あれ、ネイティブコードをばりばりつかってるゲームだからじゃね?
- 392 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 21:48:04.92 ]
- あえてネイティブコードで書かないと性能が出ないってのも困りモンだな
- 393 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 23:22:15.10 ]
- あるshift-jisで書かれたテキストファイルを読み込み、
multibytetocharおよびwidechartomultibyteを使ってutf-8に変換して、 またファイルに書き出してます。 ですが、ファイルの末尾を書き出すと、その末尾の文字は正しく書き出されるのですが、 その後ろに数倍とぐらいゴミみたいなデータが書き込まれてしまいます。 これってどんな原因が考えられるでしょうか
- 394 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 23:31:27.58 ]
- >>393
マニュアル嫁
- 395 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 23:33:16.69 ]
- >>393
余分に書き出している。
- 396 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 23:33:42.25 ]
- > あるshift-jis
shift-jisにはいくつかの種類があんのか? それとも「shift-jisで書かれたとあるテキストファイル」なのか? 日本語くらいはしっかり使えアホ > 数倍とぐらいゴミみたいなデータ そのバイト列は具体的にどんなもんで いつも同じなのか それとも違うのか そんくらい書けよバカ
- 397 名前:デフォルトの名無しさん [2012/04/12(木) 23:49:04.22 ]
- などと意味不明な供述をしており
- 398 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 00:18:29.96 ]
- mallocで領域を確保するといいますが、確保しただけじゃ領域に書き込む事って不可能では?
実際 int *m; m=malloc〜〜だと ポインで与えられるので、目的の領域に数値を書き込めなくない? と思うのですが。
- 399 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/13(金) 00:20:07.91 ]
- >>398
なんでやね〜ん。 そんなことより、ただの typo だとわかっていても「ポインで与えられる」という言葉が妙にツボった。
- 400 名前:デフォルトの名無しさん [2012/04/13(金) 00:27:05.52 ]
- >>398
確保された領域の記憶保護については未規定ということか よく思いついたね、でっていう
- 401 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 01:13:28.26 ]
- >>398
この辺のいきさつは規格に何か書いてあったような記憶がある malloc()で確保した領域に書き込み出来る事が保証されてないのなら 多くのプログラムが書けなくなってしまうからな
- 402 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 01:30:58.60 ]
- なんだここ
随分上から目線のやつがいるんだな 俺よりレベル下のくせによ まあいい 明日また来るよ
- 403 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 01:34:20.52 ]
- だってchar *t;の場合tの指し示す領域に書き込みするにはstrcpyとか必要でしょう?
int *tの場合は、ポインタ経由で同じ領域に書き込めるのは何故かなと。
- 404 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 01:39:31.83 ]
- >>403
バカ発見 char *p; が既に領域確保済みなら *p = 'a'; と書き込み可能 あんたが言ってるのは文字列のコピーであって、全く意味が異なる
- 405 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 02:16:31.68 ]
- >>396
> shift-jisにはいくつかの種類があんのか? まるで「種類なんてないだろ?なんでこう取れる書き方をした?」とでも言いたそうだけど。
- 406 名前:デフォルトの名無しさん [2012/04/13(金) 02:31:00.75 ]
- Cの参考書で、分かり易いものがあったら教えて貰えませんか?
- 407 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 02:40:39.33 ]
- いまどのレベルなの
- 408 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 02:49:04.32 ]
- C実践プログラミング
- 409 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 13:54:19.18 ]
- 3000バイトぐらい確保したバッファの末尾部分だけを見たいんですが、
デバッガでブレークポイントで停止しても最初の100バイトぐらいしか見れません どうにかして末尾部分を見る方法ないっすか?
- 410 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 14:08:25.68 ]
- >>409
デバッガの使い方は他のスレで。 つーか、あんたがどんなデバッガ使っているかわからんのに答えろとでも?
- 411 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 14:29:08.14 ]
- 気がきかねーな
デバッグつったらVCしかねーだろ
- 412 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 14:55:10.94 ]
- 正解を見つける前に工夫して何とかすることができない限り未来は暗い
- 413 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 14:58:23.60 ]
- 工夫する前に過去事例をチャッチャと見つけられない限り未来は暗い
- 414 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/13(金) 15:01:09.78 ]
- >>411
なんでやね〜ん
- 415 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 15:01:37.08 ]
- つーかファイル出力するとか色々やり方はあるだろ
File* fp = fopen("dbg.txt", "wb"); for(int i=0; i<3000; i++) fputc(data[i], fp); fclose(fp); たった4行でできるのに馬鹿じゃね
- 416 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 15:12:57.09 ]
- バーロー
ファイルに出力するときにもう解読不可能な文字になってるから、 文字コードを見たいんだよ
- 417 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 15:15:38.41 ]
- バイナリエディタで開くかsprintfで16進に変換した跡で出力
- 418 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 15:25:37.92 ]
- fprintf("%02X " , data[i] & 0xff);
こんな感じでいいんじゃね?
- 419 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 16:24:16.48 ]
- >>416
じゃぁ、メモリみても意味なくね?
- 420 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 16:43:30.70 ]
- デバッガ名乗って>409ができないとかあり得ない
VCならウォッチにptr+2900, 100とかデバッグ→ウィンドウ→メモリとか
- 421 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 16:51:27.43 ]
- 名乗るほうのデバッガじゃないと思うよ
- 422 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 16:53:52.86 ]
- gdbなら全部見るオプションがあるね
- 423 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 17:15:03.00 ]
- だから、スレ違いなんだから相手にすんなよ。
- 424 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 17:35:51.40 ]
- 一週間前に買ったC言語入門編の本を読み終えそうなんだけど
次、どの本読めばええの…
- 425 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 17:50:53.20 ]
- バイナリエディタを忘れてた
ありがと
- 426 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:05:27.15 ]
- >424
コンパイラのマニュアル 他人の書いたソース
- 427 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:07:39.42 ]
- >>424
本屋でぺらぺらめくって、知ってることと知らないことが書いてある本を探す
- 428 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:14:03.87 ]
- >424
PC9801プログラマーズバイブル
- 429 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:28:56.86 ]
- C言語を256倍使う本
- 430 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:31:53.31 ]
- 堀紘一 著
「一番いいのはサラリーマン」 「サラリーマンなんか今すぐやめなさい」
- 431 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:34:43.16 ]
- >>424
Effective C++
- 432 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:35:24.54 ]
- >>431
いい本だがC++じゃん。
- 433 名前:406 [2012/04/13(金) 19:34:26.44 ]
- >407-408
ありがとうございました。繰り返しとか条件分岐は分かる程度です。
- 434 名前:424 mailto:sage [2012/04/13(金) 19:50:51.20 ]
- ふむ。サンクス
とりあえず本屋よってみる
- 435 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 19:51:42.87 ]
- ゴミデータが書き出される理由がマジわかんね
誰か助けてくれよ
- 436 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/13(金) 19:54:09.12 ]
- >>435
再現可能なコードを提出すること。
- 437 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 20:17:35.21 ]
- 末端と思っている箇所が末端として伝わらないファイル書き出しをしてるとエスパー
変換の過程で得られるであろうバイト数(or 文字数)を利用して fwrite() してるのか \0 終端を期待して fprintf() してるのか
- 438 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 20:36:07.37 ]
- 最後はstrlenを使ってバイト数を出して、
fwriteのバイナリモードで書き出してる。 fprintfって\0まで書き出してくれるっていう仕様だっけ? やってみる。
- 439 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 20:40:46.24 ]
- fprintfで書き出しても一緒だった
じゃあヌル文字の前に何故かゴミが入ってるってことか。 くそっ UTF-8変換の過程で末尾に変なゴミが入る原因って何だよ!! 末尾以外の文字は完璧に変換できてるっていうのに!!
- 440 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 20:40:54.21 ]
- pとqというリストをもらってpの後ろにqを連結するプログラムを作りたいのですがこれで実行するとpのリストしか表示されません
なぜこれではリストの連結ができないのでしょうか リストを表示するプログラムはこの中にあるのと同じような条件でやっています。 実行結果は p= 10 20 30,q= 40 50 というリストがあった場合 10 20 30 と出力されます struct cell *append(struct cell *p, struct cell *q) { struct cell *k, *h; h=(struct cell *)malloc(sizeof(struct cell)); k=(struct cell *)malloc(sizeof(struct cell)); k=p; h=k; while(p!=NULL) { printf("%d %d\n",p->value, k->value); p=p->next; k=k->next; } k=(struct cell *)malloc(sizeof(struct cell)); k=q; while(q!=NULL) { printf("%d %d\n",q->value, k->value); q=q->next; k=k->next; } return(h); }
- 441 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 21:16:45.78 ]
-
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ★ 本日13日(金)よる10時より 《人権救済機関設置法案反対ツイッターデモ》開催 ★ ツイッターしている人は、ハッシュタグに#人権救済機関設置法案反対#nhk24をつけて、この法案の 危険性、抗議の法案などをいっせいに呟きましょう。 ツイッターと連動している「NEWS WEB24」に取り上げてもらいましょう 。 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
- 442 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 21:38:14.71 ]
- >>440
リストpの後にqをつなげているように見えないけど?
- 443 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 21:48:46.55 ]
- >>440
こんな感じ? codepad.org/uvJYomYM
- 444 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:00:27.03 ]
- お漏らししてるw
- 445 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:24:20.27 ]
- そもそも引数で既存のリストふたつのアドレス受け取ってるのに、
なんであらたにmallocしてるのかがよくわからないんだけど こんな感じじゃいかんの? codepad.org/wRssci0L
- 446 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:33:33.53 ]
- >>445
うん、それ
- 447 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:42:46.73 ]
- >>439
Win32 の WideCharToMultiByte とか MutiByteToWhideChar 使ってるのか? これの戻り値は終端の \0 を含まない文字数を返すから 文字列として(つまり \0 で終わることを保障するように)扱いたいのならば 必要なバッファの大きさは 戻り値+1 であり 変換前に領域を 0 で埋めるか バッファ[戻り値] = 0 と終端を付加しないと その後の文字列処理(例えば strlen 等 \0 終端前提の関数)が成立しないぞ
- 448 名前: ◆QZaw55cn4c mailto:sage [2012/04/13(金) 23:10:35.52 ]
- >>447
win32api はそういうのが多いのかな? *(DWORD *)buff = N; n = SendMessage(hwndEdit, EM_GETLINE, i, (LPARAM)buff); InnerBuff[n] = 0; のセットに気がつくまで苦吟した。
- 449 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 23:23:07.08 ]
- >>448
文字を操作するのはほとんどそういうの 所々「文字数」だったり「バイト数」だったりで 動的確保時に要注意の奴があったようななかったような
- 450 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 01:12:41.72 ]
- >>447-449
それやってもダメだった。 なんかゴミが書き出されないときと書き出されるときがあるんだよな。 それぞれ読み込んでるファイルは違う。 コードはこんな感じ void Write(char *buf,FILE *fp) { int nsize; WCHAR *p16; char *p8; nsize= MultiByteToWideChar(CP_ACP,0,(LPCSTR)buf,-1,NULL,NULL); p16 = new WCHAR[nsize+1]; memset(p16,0,sizeof(nsize+1)); MultiByteToWideChar(CP_ACP,0,(LPCSTR)buf,-1,(LPWSTR)p16,nsize); nsize=WideCharToMultiByte(CP_UTF8,0,(LPCWSTR)p16,-1,NULL,0,NULL,NULL); p8=new char[nsize+1]; memset(p8,0,nsize+1); WideCharToMultiByte(CP_UTF8,0,(LPCWSTR)p16,-1,(LPSTR)p8,nsize,NULL,NULL); nsize=strlen((char*)p8); fwrite(p8,nsize,1,fp); delete [] p16; delete [] p8; }
- 451 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 01:16:44.89 ]
- sizeof(nsize+1)はただのnsize+1の間違い
もちろんこれでもだめ。 ゴミが出るときはあるファイルを読みこんで書き出すとゴミが発生する でも発生しないときのファイルの末尾は、 ゴミが出るときのファイルと一緒で改行コードで終わらせてる だから何が原因かマジでわからん
- 452 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 01:18:24.49 ]
- 24時間経ってようやくコードのお出ましかよ
一緒に出しときゃあ24時間も丸々ムダにせずにすんだのに
- 453 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 05:31:48.13 ]
- > memset(p16,0,sizeof(nsize+1));
ここは memset(p16,0,sizeof(WCHAR)*(nsize+1)); じゃないと全部ゼロクリアできないんじゃないの?
- 454 名前:451 mailto:sage [2012/04/14(土) 07:33:59.96 ]
- >>453
うん その通りだ でもそこ修正してもダメだった。 この関数を呼び出す前の、テンプレートファイルを読み込む部分のコードは、 fp=fopen(TEMPLATE1,"rb"); fseek(fp,0,SEEK_END); fgetpos(fp,&size); fseek(fp,0,SEEK_SET); basic = new char[(int)size]; memset(basic,0,(int)size); fread(basic,(int)size,1,fp); fclose(fp); こんな感じでバッファを確保して、 このバッファをWrite関数に渡してるんだがおかしくないよね?
- 455 名前:451 mailto:sage [2012/04/14(土) 07:41:26.13 ]
- ちなみにこのテンプレートファイルを読み込んで、
そのままUTF-8に変換せずに書き出してもゴミはなかった。 だからテンプレートファイルに最初からゴミが入ってるってことはないと思う。 よって、やっぱりさっきの変換関数のどこかがおかしいんだと思う
- 456 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 09:46:17.85 ]
- 一般的にファイルには、終端文字が記録されていないので、
basic = new char[(int)size+1]; memset(basic,0,(int)size+1); だな。
- 457 名前:451 mailto:sage [2012/04/14(土) 10:23:43.31 ]
- >>456
うおおおおおおおおおおおおおお!! これだ! やってみたらゴミ消えたよ!! マジありがとう!!! 基本のファイル読み込みの時点で間違ってたとは情けない ご迷惑をおかけしました
|

|