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


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

C言語なら俺に聞け(入門編)Part 94



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/

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 ]
思い切り?
こいつってどいつのことだ。
普通、わからなかったら仕様書確認するだろ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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