[過去ログ]
C言語なら俺に聞け 151 (1002レス)
C言語なら俺に聞け 151 http://mevius.5ch.net/test/read.cgi/tech/1554171817/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
444: デフォルトの名無しさん (ワッチョイ 2f05-S4IJ) [] 2019/05/05(日) 23:59:16 ID:RXFRr1FQ0 FIFOだとかナントカ程度にしか。 「〜〜領域」という幾つかの用語がOSとかの環境が違っても 全く共通のものなのかよく分からないから正直スルーしてる http://mevius.5ch.net/test/read.cgi/tech/1554171817/444
445: デフォルトの名無しさん (ワッチョイ e22c-4xtZ) [sage] 2019/05/06(月) 05:38:27 ID:wr9bFPpT0 >>414 >1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します 2^10 = 約1,000 千 2^20 = 約1,000,000 百万 2^30 = 約1,000,000,000 十億 >>441 Java VM の初期値は、256MB とか。 それよりも大きいと強制終了されるが、起動時に、512MBに設定できる たぶん、4GB の仮想メモリでも、ユーザー空間3GB・カーネル空間1GBぐらいだろ それ以上のデータは、動画みたいにstream になる。 バッファサイズ、例えば、1MB を読んでは捨てて、次の1MB読んでは捨てて、の繰り返し 読み込んだデータを使ったら、すぐに捨てないといけない。 ユーザー空間に、空きを作らないといけない http://mevius.5ch.net/test/read.cgi/tech/1554171817/445
446: デフォルトの名無しさん (ワッチョイ 8252-M0pk) [sage] 2019/05/06(月) 06:20:53 ID:Geq8Gq1G0 >>445 いつものRubyバカだろ。いい加減な知識でC言語のメモリの話題に口を挟むのはやめろ。この板になれている者からすれば「またいつものか...」ですむが、初心者にとっては害悪でしかないから消えろ。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/446
447: デフォルトの名無しさん (ワッチョイ 8252-M0pk) [sage] 2019/05/06(月) 06:25:32 ID:Geq8Gq1G0 >>444 組み込みとかの特殊な環境では例外もあるけど、基本的には環境によらずC言語で必須の概念だからスルーせずにちゃんと調べるべき。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/447
448: デフォルトの名無しさん (ワッチョイ 06d2-R0y6) [sage] 2019/05/06(月) 08:39:59 ID:s1ulBxFy0 >439 >上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの? 他のプロセスがスワップ起こして重くなるから止めろって言いたい。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/448
449: デフォルトの名無しさん (ワッチョイ 2f05-73UM) [] 2019/05/06(月) 10:14:49 ID:Om5TJBQR0 >>447 うん調べてみるよ ありがとう >>448 そんな視点もあるのか 他のプロセスも考慮しないといけない 思ったよりも数段以上やっかいだな http://mevius.5ch.net/test/read.cgi/tech/1554171817/449
450: デフォルトの名無しさん (ワッチョイ 2f05-73UM) [] 2019/05/06(月) 10:19:59 ID:Om5TJBQR0 >読み込んだデータを使ったら、すぐに捨てないといけない データをガンガン読み込んでいくようなプログラムだと「使ったらすぐ捨てる」のが鉄則か http://mevius.5ch.net/test/read.cgi/tech/1554171817/450
451: デフォルトの名無しさん (ワッチョイ d701-LHRJ) [sage] 2019/05/06(月) 10:40:24 ID:F7BEaxMm0 >>439 ユーザープロセスなのでカーネル空間はマッピングされないよ。プロセス管理のための領域はカーネル空間に多少は確保されるとは思うけど、それはユーザープロセス用ではないし。 ページサイズの関係で効率的に確保できるかどうかは別問題だけど仮想メモリ領域いっぱいまで取れるか否かと言えば取ることはできる。 実際にそんなことしたらスワップ発生しまくりでまともに動かないとは思うけど。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/451
452: デフォルトの名無しさん (ワッチョイ 7fe9-3iRC) [sage] 2019/05/06(月) 12:43:21 ID:53K/0wkW0 実装としてはだいたいcopy on writeだから、確保だけだったら特に問題発生しないよ http://mevius.5ch.net/test/read.cgi/tech/1554171817/452
453: デフォルトの名無しさん (ブーイモ MM3e-iz+S) [sage] 2019/05/06(月) 16:08:26 ID:95XsbNbMM >>451 どのOSなのか明示してくれ。 少なくともlinux 32bitは3GB以降はkernel空間にマッピングされてるだろ http://mevius.5ch.net/test/read.cgi/tech/1554171817/453
454: デフォルトの名無しさん (ワッチョイ 4321-QjK4) [] 2019/05/06(月) 21:20:46 ID:lSipB+Y80 配列にある16進数アスキーを 整数型変数に数値として入れたいのですが、上手くいきません。 valの値をprintfで出力しても「0」になります。 rbuf[5]の中身は「0xDC」 rbuf[6]の中身は「0x18」でした。(printfで出力してみたところ。) #include <stdio.h> unsigned char sbuf[255] = {'\0'}; //送信バッファ unsigned char rbuf[255] = {'\0'}; //受信バッファ unsigned char work[10] = {'\0'}; //ワークバッファ unsigned int val = 0; //値 work[0]=rbuf[5]; work[1]=rbuf[6]; work[2]='\0'; sscanf((char *)work, "%x", &val); よろしくお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/454
455: デフォルトの名無しさん (ワッチョイ f701-EPtf) [sage] 2019/05/06(月) 21:29:36 ID:v87Zm/5a0 sscanf の %x は、文字列で記述された数字+アルファベットの列を 16進数として抜き出す sscanf("10", "%x", &val); → val の値は 10進で16 となる 0xDC 0x18 の並びから どういう整数値にしたいんだろうか? http://mevius.5ch.net/test/read.cgi/tech/1554171817/455
456: 454 (ワッチョイ 4321-QjK4) [] 2019/05/06(月) 21:38:34 ID:lSipB+Y80 >>455 回答ありがとうございます。 val=0xDC18 という感じで取り出したいです。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/456
457: デフォルトの名無しさん (ワッチョイ f701-EPtf) [sage] 2019/05/06(月) 21:40:18 ID:v87Zm/5a0 >>456 それなら val = rbuf[5]; じゃあかんの? http://mevius.5ch.net/test/read.cgi/tech/1554171817/457
458: 454 (ワッチョイ 4321-QjK4) [] 2019/05/06(月) 21:50:08 ID:lSipB+Y80 >>457 ありがとうございます。そういうことか・・・ 下記で上手くできました! val= rbuf[5]; val = val << 8; val |= rbuf[6]; http://mevius.5ch.net/test/read.cgi/tech/1554171817/458
459: デフォルトの名無しさん (ワッチョイ f701-EPtf) [sage] 2019/05/06(月) 21:54:12 ID:v87Zm/5a0 >>458 解決してよかったね 0xDC 0x18 の並びから (最低でも32bit長の整数)0xDC18 が欲しかったということだね http://mevius.5ch.net/test/read.cgi/tech/1554171817/459
460: デフォルトの名無しさん (ワッチョイ f701-EPtf) [sage] 2019/05/06(月) 21:55:43 ID:v87Zm/5a0 (俺がちゃんと >>456 を読めてなかった説 val=0xDC18 って書いてるやんけw) http://mevius.5ch.net/test/read.cgi/tech/1554171817/460
461: デフォルトの名無しさん (アウアウウー Sabb-vI8p) [] 2019/05/06(月) 22:06:19 ID:NYoOX9LAa >>454 > rbuf[5]の中身は「0xDC」 > rbuf[6]の中身は「0x18」でした。(printfで出力してみたところ。) だったらそれはASCIIではないよね。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/461
462: デフォルトの名無しさん (アウアウウー Sabb-vI8p) [] 2019/05/06(月) 22:08:02 ID:NYoOX9LAa などと、ゆっくり書いていたら既に解決か・・・ http://mevius.5ch.net/test/read.cgi/tech/1554171817/462
463: デフォルトの名無しさん (ワッチョイ 4321-QjK4) [] 2019/05/06(月) 22:09:16 ID:lSipB+Y80 >>460 >>461 ありがとうございます。 お陰様で解決できました。 勝手にASCII、文字列と勘違いしていたのがよくなかったです。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/463
464: デフォルトの名無しさん (ワッチョイ e22c-4xtZ) [sage] 2019/05/07(火) 06:48:35 ID:/Z9tG+PY0 ASCII は、7 bit キャラだろ 欧州文字コードなら、8 bitとか http://mevius.5ch.net/test/read.cgi/tech/1554171817/464
465: デフォルトの名無しさん (ワッチョイ 23d2-R0y6) [sage] 2019/05/07(火) 15:31:36 ID:gGAOuhJk0 BASIC時代 文字→文字コード変換関数が ASC(文字) だったな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/465
466: デフォルトの名無しさん (ワッチョイ d701-LHRJ) [sage] 2019/05/08(水) 20:11:19 ID:w7dyIR3e0 逆はCHR$(コード)だったな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/466
467: デフォルトの名無しさん (ワッチョイ 9b6d-ahOC) [sage] 2019/05/08(水) 22:02:13 ID:LqpjdKM80 「なんで朝潮?」と思ってしまった当時の俺w http://mevius.5ch.net/test/read.cgi/tech/1554171817/467
468: デフォルトの名無しさん (ワッチョイ 7f7c-gMth) [sage] 2019/05/09(木) 08:32:10 ID:IVg2TokP0 わらってよりとも というのは、当時の人気番組名をもじったものだよ http://mevius.5ch.net/test/read.cgi/tech/1554171817/468
469: デフォルトの名無しさん (ワッチョイ 9f35-AilG) [sage] 2019/05/09(木) 12:40:11 ID:J26JobOx0 https://ae01.alicdn.com/kf/HTB1goomIL1TBuNjy0Fjq6yjyXXaS/Cetak-Pria-Kaus-Katun-Leher-o-Tshirts-ANSI-Pemrograman-C-Buku-Jepang-Lengan-Pendek-Wanita-Kaus.jpg_640x640.jpg http://mevius.5ch.net/test/read.cgi/tech/1554171817/469
470: デフォルトの名無しさん (ブーイモ MM9b-f8ez) [sage] 2019/05/09(木) 20:40:23 ID:axmpki24M 「はじめてのC」なら買う http://mevius.5ch.net/test/read.cgi/tech/1554171817/470
471: デフォルトの名無しさん (ワッチョイ ff63-gMth) [sage] 2019/05/09(木) 22:18:17 ID:fgRKvhjn0 その本の名前、買うときに恥ずかしいw http://mevius.5ch.net/test/read.cgi/tech/1554171817/471
472: デフォルトの名無しさん (ワッチョイ 9f79-ScLU) [sage] 2019/05/09(木) 23:03:35 ID:vEdVh+9n0 質問です 文字列の配列 char matrix[Y][X]を関数に引数として渡して、渡した先の関数でtxtファイルに出力したい。 YとXはその時々によって違う値でmatrixは文字列の配列だけど1行ごとに'\0'が入っていないとき、渡した先の関数でYとXをどうやれば参照できますか? 例えば matrix = {{‘a’, ‘b’, ‘c’}, {‘d’, ‘e’, ‘f’}}; みたいな配列です http://mevius.5ch.net/test/read.cgi/tech/1554171817/472
473: デフォルトの名無しさん (アウアウエー Sadf-NBbm) [sage] 2019/05/10(金) 00:00:40 ID:IBOrEgMWa X(配列のサイズ)を共有してやればいいんじゃないかな http://mevius.5ch.net/test/read.cgi/tech/1554171817/473
474: デフォルトの名無しさん (ワッチョイ ff63-gMth) [sage] 2019/05/10(金) 00:14:05 ID:Ojl9YgLP0 >>472 matrixのアドレスと共にX、Yの値を渡さないと無理 http://mevius.5ch.net/test/read.cgi/tech/1554171817/474
475: デフォルトの名無しさん (ワッチョイ bf02-XC4S) [] 2019/05/10(金) 03:11:16 ID:+vHN15fT0 >>472 https://qiita.com/Hiraku/items/babed27bc1d750c2e12d http://mevius.5ch.net/test/read.cgi/tech/1554171817/475
476: デフォルトの名無しさん (ワッチョイ 9f79-ScLU) [sage] 2019/05/10(金) 09:26:09 ID:bwAvNWKg0 >>474 やっぱり配列のサイズ一緒に渡さないとだためですか http://mevius.5ch.net/test/read.cgi/tech/1554171817/476
477: デフォルトの名無しさん (アウアウウー Sa1b-wdoq) [] 2019/05/10(金) 09:44:04 ID:0Zlxa6bHa そう。他の言語だと裏でこっそり渡すようになっていたりしてプログラムに書かなくても動くかも知れないが、Cはそこまでやってくれない。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/477
478: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/10(金) 10:05:05 ID:hw8N8wYC0 標準関数も一次元配列ですら大きさを渡してるからねー (文字列は '\0' が終端である という了解を持って大きさを不要にしているだけ) http://mevius.5ch.net/test/read.cgi/tech/1554171817/478
479: デフォルトの名無しさん (スップ Sdbf-63hD) [sage] 2019/05/10(金) 12:34:03 ID:zZfQYrbwd >>475 URL張って解党した気になってるアスペルガーのカスがスレ来んな http://mevius.5ch.net/test/read.cgi/tech/1554171817/479
480: デフォルトの名無しさん (ワッチョイ bf02-y0Vo) [] 2019/05/10(金) 23:50:49 ID:svzEPJh90 え?読んでもわからなかったの? http://mevius.5ch.net/test/read.cgi/tech/1554171817/480
481: デフォルトの名無しさん (ワッチョイ d7f6-y0Vo) [sage] 2019/05/11(土) 07:43:24 ID:glRpLuyC0 確かにつまらんね リンクだけとかググレカスとか せっかく掲示板にいるのに対話がないのは http://mevius.5ch.net/test/read.cgi/tech/1554171817/481
482: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth) [sage] 2019/05/11(土) 09:55:06 ID:GtXmrqj00 >>481 リンクを示すのも、ググればわかるようなことにググれというのも対話だよ。 対話を終わらせてるのはお前だろ。 リンク先を見て意味がわからんかったならどうわからなかったか、 よりよい説明があると思うならそれを示してもいい。 望むことだけ欲しいというのは対話とは言えんよ。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/482
483: デフォルトの名無しさん (ワッチョイ d7f6-y0Vo) [sage] 2019/05/11(土) 10:34:34 ID:glRpLuyC0 >>482 話が噛み合ってない おまえさんとは平行線のようだな http://mevius.5ch.net/test/read.cgi/tech/1554171817/483
484: デフォルトの名無しさん (ワッチョイ 57dc-y0Vo) [sage] 2019/05/11(土) 11:46:55 ID:0ygzdBDA0 ID:glRpLuyC0が対話する気なさすぎて草w http://mevius.5ch.net/test/read.cgi/tech/1554171817/484
485: デフォルトの名無しさん (ワッチョイ ff63-gMth) [sage] 2019/05/11(土) 12:23:55 ID:9iCvmH6s0 ここは質疑を行うスレであって 対話したり、雑談したりする場ではない http://mevius.5ch.net/test/read.cgi/tech/1554171817/485
486: デフォルトの名無しさん (ワッチョイ 9f2d-y0Vo) [sage] 2019/05/11(土) 19:10:51 ID:HOBfdmGr0 Cの上位互換(?)として、C++がありますが。C++は覚えた方がいいですか? もしくは、CとC++を両方覚えたら、Cは不要になり、C++でコードを書くようになりますか? C++でできることはCでもできるように見えますので、ならCだけでいいようにも思えたり。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/486
487: ◆QZaw55cn4c (ワッチョイ 9f47-vVMj) [sage] 2019/05/11(土) 19:18:54 ID:KtHZQgR00 >>486 C++ は最近規格の改定がすすみ、いろんなことが C++ の枠内でできるようになりました http://mevius.5ch.net/test/read.cgi/tech/1554171817/487
488: デフォルトの名無しさん (ワッチョイ 375f-PSXp) [sage] 2019/05/11(土) 19:21:03 ID:2v2BzL6t0 >>486 言っておくが、python,C++,Java,javascript,C#,shellでできる事はC言語でも出来る 更に君が作ろうとしてるものや、やりたいことは、もう誰かが作ってる ましてや大規模になると、googleとかamazonと戦う羽目にもなる それが嫌ならプログラミングなんて辞めとけ http://mevius.5ch.net/test/read.cgi/tech/1554171817/488
489: デフォルトの名無しさん (ワッチョイ 9f2d-y0Vo) [sage] 2019/05/11(土) 19:32:35 ID:HOBfdmGr0 >>487-488 了解です、ありがとうございます http://mevius.5ch.net/test/read.cgi/tech/1554171817/489
490: デフォルトの名無しさん (ワッチョイ d7f6-y0Vo) [sage] 2019/05/11(土) 21:07:19 ID:glRpLuyC0 >>484-485 482は反対意見を述べているという意味でまだいいところがあったが てめーらは一方的な押しつけしか頭にない100%真のノイズだ http://mevius.5ch.net/test/read.cgi/tech/1554171817/490
491: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth) [sage] 2019/05/11(土) 21:28:03 ID:GtXmrqj00 >>490 既に解説があると示すのも質問に対する回答として十分だし、それで不満な理由がまるでわからん。 それが対話でないと断言するのも意味がわからん。 結局のところどうして欲しいの? http://mevius.5ch.net/test/read.cgi/tech/1554171817/491
492: デフォルトの名無しさん (アウアウウー Sa1b-wdoq) [] 2019/05/11(土) 22:15:36 ID:YLmnNEXIa きっと寂しいんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/492
493: デフォルトの名無しさん (ワッチョイ d7f6-y0Vo) [sage] 2019/05/11(土) 22:49:22 ID:glRpLuyC0 >>491 意味がわからんからどうした? 平行線の相手に何か言って欲しいのか? http://mevius.5ch.net/test/read.cgi/tech/1554171817/493
494: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-gMth) [sage] 2019/05/12(日) 10:19:15 ID:l86zXz3/0 >>493 そう決めつけて続きを拒むなら「一方的な押し付けしか頭にない」「対話がない」というまさにそれでしかなくね? 意味がわからんから解説してくれっての。 わからんことを理解する必要があるから対話になるんだろ。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/494
495: デフォルトの名無しさん (ワッチョイ d7f6-y0Vo) [sage] 2019/05/12(日) 11:22:06 ID:VeGHf8Lz0 >>494 自分の言葉で何か言えよと思う俺の意見を おまえ真っ向から全否定しただろ だから接点がないと判断したんだ 接点があるなら最初の態度を撤回しろ 話はそれからだ http://mevius.5ch.net/test/read.cgi/tech/1554171817/495
496: デフォルトの名無しさん (ワッチョイ 9f52-tfUF) [sage] 2019/05/12(日) 11:57:36 ID:7nn+3/Jt0 >>495 意見を全否定って、そりゃ異なる意見があるのは当然だろう。異なる考えなら議論にならないなんて、議論する気が無いだけだろう。 ついでだが、俺もお前さんの意見には反対だ。自分の言葉で書くかはまったく重要ではないと思う。お手軽に書ける掲示板のレスは言葉足らずだったり不正確な表現なことも多々あるが、それよりきちんと纏まった情報をリンクされた方がありがたいことも多い。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/496
497: デフォルトの名無しさん (ワッチョイ d7f6-y0Vo) [sage] 2019/05/12(日) 12:19:14 ID:VeGHf8Lz0 >>496 意見が異なるのと全否定は違うぞ 自分はこう思うと述べるのと おまえは間違っているというのの違いだ よくいるんだよ、どっかからの受け売りを壊れたレコードみたいに繰り返すだけなやつとか 俺は自分の知見からは何も出てこないのかよと思うことがあるが おまえはそれで満足なら勝手に満足してろよ そこが俺とおまえの違いだな http://mevius.5ch.net/test/read.cgi/tech/1554171817/497
498: デフォルトの名無しさん (ワッチョイ 9f79-ScLU) [sage] 2019/05/12(日) 15:34:15 ID:SbCKIsfP0 質問です テキストファイルから文字を1文字ずつ読み込んでchar型の2次元配列matrixに入れていきたい。 この時改行は配列に入れたくないときどうすれば良いですか? うまくいかないコード for (i=0;i<10;i++) { for (j=0;j<10;j++) { if (fgetc(fp) == ‘\n’) { continue; } matrix[i][j] = fgetc(fp); } } テキストファイルは行数と列数があらかじめ分かってるとして 例えば AAAAAAAAAA BBBBBBBBBB … のようなファイルです http://mevius.5ch.net/test/read.cgi/tech/1554171817/498
499: デフォルトの名無しさん (アウアウカー Saeb-NBbm) [sage] 2019/05/12(日) 15:51:11 ID:L7lYUohVa fgetc二回呼びたいの? http://mevius.5ch.net/test/read.cgi/tech/1554171817/499
500: デフォルトの名無しさん (ワッチョイ d77f-hzJM) [sage] 2019/05/12(日) 16:10:46 ID:7kDDqNbD0 >>498 continueだと内ループ先頭に戻るから違うんじゃないの http://mevius.5ch.net/test/read.cgi/tech/1554171817/500
501: デフォルトの名無しさん (ワッチョイ ff12-f8ez) [sage] 2019/05/12(日) 16:24:47 ID:R31sKZyy0 >>498 .for ... { . for ... { . char c = fgetc(fp); . if (c != '\r' && c != '\n') { . matrix[i][j] = c; . } . } .} http://mevius.5ch.net/test/read.cgi/tech/1554171817/501
502: デフォルトの名無しさん (ワッチョイ 9f79-ScLU) [sage] 2019/05/12(日) 17:12:05 ID:SbCKIsfP0 >>499 呼ばなくていいです >>501 これでもうまくいかないです http://mevius.5ch.net/test/read.cgi/tech/1554171817/502
503: 経団連 ◆T6xkBnTXz7B0 (ワッチョイ 1701-PJeF) [sage] 2019/05/12(日) 17:22:08 ID:uLUIsoqa0 for (i=0;i<10;i++) { for (j=0;j<10;j++) { matrix[i][j] = fgetc(fp); } fgetc(fp); //読み捨て } http://mevius.5ch.net/test/read.cgi/tech/1554171817/503
504: デフォルトの名無しさん (ワッチョイ b77c-NBbm) [sage] 2019/05/12(日) 17:29:14 ID:CrklWm7I0 変な例出すなよ… http://mevius.5ch.net/test/read.cgi/tech/1554171817/504
505: デフォルトの名無しさん (ワッチョイ 9f1e-bWAY) [sage] 2019/05/12(日) 17:29:29 ID:gzai7Rgq0 サイズが固定なら fread でよくない? そうすべきというほどのものでもないだろうが。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/505
506: デフォルトの名無しさん (ワッチョイ 577b-djxj) [sage] 2019/05/12(日) 17:35:10 ID:x4ccFx6b0 >>498 「うまくいかない」症状を見れば、もう少し見当がつくんだけど…。 格納先の配列を char matrix[LINES][CHRS]; とか定義して、 printf("%s\n", matrix[n]); で表示してるの違うかな。 各行の文字列の末尾にあるべき '\0' が格納されてない、みたいな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/506
507: デフォルトの名無しさん (ワッチョイ ff63-gMth) [sage] 2019/05/12(日) 17:36:33 ID:JjryTeWM0 2重ループやめても良いか? while (1) { int c = fgetc(fp); if (c == EOF) { break; } if (c == '\n') { continue; } matrix[i][j] = c; j++; if (j == 10) { i++; j = 0; } } http://mevius.5ch.net/test/read.cgi/tech/1554171817/507
508: デフォルトの名無しさん (ワッチョイ ff63-gMth) [sage] 2019/05/12(日) 17:38:28 ID:JjryTeWM0 501の方法だと'\n'読んだ時に、スキップしているけど ループ変数の方は ++1 してるからズレてくる http://mevius.5ch.net/test/read.cgi/tech/1554171817/508
509: デフォルトの名無しさん (ワッチョイ 9f79-ScLU) [sage] 2019/05/12(日) 18:35:08 ID:SbCKIsfP0 >>503 >>507 どちらも行けました 507のは理解できるんですが 503の読み捨てというのはどう言うことなのでしょうか http://mevius.5ch.net/test/read.cgi/tech/1554171817/509
510: デフォルトの名無しさん (ワッチョイ ff63-gMth) [sage] 2019/05/12(日) 18:43:30 ID:JjryTeWM0 >>509 10個読んで1個捨てる http://mevius.5ch.net/test/read.cgi/tech/1554171817/510
511: デフォルトの名無しさん (ワッチョイ 3702-vVMj) [sage] 2019/05/13(月) 20:38:42 ID:WOFscy660 バッファにつめるところを簡単にしてみた。 https://ideone.com/fJ91BI http://mevius.5ch.net/test/read.cgi/tech/1554171817/511
512: デフォルトの名無しさん (オッペケ Sr8b-lJiK) [sage] 2019/05/14(火) 06:41:01 ID:7SLYc+Rqr OSSで構造体を公開しようとおもってる そのサイズをバージョンアップしても固定にしたいんだけどいいアイデアないかな? struct foo { int a; double b; // ここをバージョンアップで追加 } char[100] buffer; 上記を予め含めておいて、追加サイズ分だけ減らすってのがよくある手段だと思うけど、intや他の型が固定サイズの保証はないから、処理系をかんがえると使えない パディングでサイズも変わっちゃうしね C++ならテンプレートでいけるけど、OSSだから利用者が多いC言語で書いておく必要がある 構造体を公開しないで、ハンドラとセッタで扱えばいけるだろうけど、今回は構造体でいきたい http://mevius.5ch.net/test/read.cgi/tech/1554171817/512
513: デフォルトの名無しさん (ワッチョイ 9ff9-vVMj) [sage] 2019/05/14(火) 08:01:00 ID:YNmKUGxB0 「sizeof(int)が環境依存」を前提にするなら バージョンアップ以前のint a;だけでもう既にサイズ固定じゃないじゃん int32_tですら必ずある保証はないよ 「汎用な記述で全ての環境に対応したい」ってのが、土台無理な注文なのよ 低レベルなことやるなら、サポートする環境を列挙限定しなければならない 素直に「よくある手段」でやりなさいってことだ http://mevius.5ch.net/test/read.cgi/tech/1554171817/513
514: デフォルトの名無しさん (アークセー Sx8b-Vhni) [sage] 2019/05/14(火) 08:07:10 ID:0o/9QF7Tx >>512 処理系によるパディングとかの問題を別にしたら、bufferをunionにしといたらわざわざ減らさなくても良いのでは? http://mevius.5ch.net/test/read.cgi/tech/1554171817/514
515: デフォルトの名無しさん (オッペケ Sr8b-lJiK) [sage] 2019/05/14(火) 08:25:38 ID:7SLYc+Rqr >>513 たしかにint aですでに違うね ただ今回考えてるのは、コンパイルせずに共有ライブラリを差し替えるって状況を想定してる そのときにセグメンテーションフォールトがでないようにしたい だから、すべての処理系で同じサイズにしたいってわけじゃなくて、同じ処理系の中ではバージョンにかかわらずサイズを保ちたいってことなんだよね 説明不足ですまん http://mevius.5ch.net/test/read.cgi/tech/1554171817/515
516: デフォルトの名無しさん (アウアウエー Sadf-NBbm) [sage] 2019/05/14(火) 08:36:30 ID:2RiYyx1fa あらゆる環境だったらシリアライズしないとだし。 同じ処理系だったら同じ構造体でいいだろうし。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/516
517: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/14(火) 13:41:09 ID:d9/Wmgv60 >>514 のはこんな感じですかの union foo { struct { int a; double b; // ここをバージョンアップで追加 }; char dummyBuffer[100]; }; http://mevius.5ch.net/test/read.cgi/tech/1554171817/517
518: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/14(火) 13:59:44 ID:d9/Wmgv60 構造体の大きさが char[100] に収まってる範囲での話 >>512 のように末尾に用意したギャップを引き算していくにしても、引ききれなくなった段階で破綻するよね ※ 突破したことをチェックするには sizoef(union foo) と sizeof(char[100]) とを比較すんのかなぁ… http://mevius.5ch.net/test/read.cgi/tech/1554171817/518
519: 経団連 ◆T6xkBnTXz7B0 (ワッチョイ 1701-PJeF) [sage] 2019/05/14(火) 14:09:24 ID:4po1tQ0w0 C99 <stdint.h>のuint*_t型を使った方がいいと思う。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/519
520: デフォルトの名無しさん (アウアウエー Sadf-NBbm) [sage] 2019/05/14(火) 14:39:04 ID:2RiYyx1fa 普通符号付きでしょ http://mevius.5ch.net/test/read.cgi/tech/1554171817/520
521: デフォルトの名無しさん (ワッチョイ 7f7c-gMth) [sage] 2019/05/14(火) 14:51:20 ID:5nOlmwWa0 符号プログラミングか http://mevius.5ch.net/test/read.cgi/tech/1554171817/521
522: デフォルトの名無しさん (アウアウエー Sadf-NBbm) [sage] 2019/05/14(火) 15:42:40 ID:2RiYyx1fa 今はstatic_assertとかいうものがあるらしいぞ これでコンパイル時にチェックすればよい http://mevius.5ch.net/test/read.cgi/tech/1554171817/522
523: デフォルトの名無しさん (ワッチョイ bf54-vVMj) [sage] 2019/05/14(火) 21:12:50 ID:8soz04JH0 >>512 不格好だけどこれでいけるよ 全部プリプロセッサで処理できて、構造体サイズは100バイト固定になる。 予想を超えてサイズを突き破った場合は別構造体作るしかないね。 #include <stddef.h> struct inner_foo { int a; char buf[]; }; #define MAX_STRUCT_SIZE 100 #define BUF_SIZE (MAX_STRUCT_SIZE - offsetof(struct inner_foo, buf)) struct foo { int a; double b; char buf[BUF_SIZE]; }; http://mevius.5ch.net/test/read.cgi/tech/1554171817/523
524: デフォルトの名無しさん (ワッチョイ 577b-djxj) [sage] 2019/05/15(水) 07:47:15 ID:FPbZusNo0 >>523 ちょっと間違ってるみたい。 struct foo には struct inner_foo に double b; が追加されてるせいで sizeof(struct foo) == MAX_STRUCT_SIZE にならない。 sizeof(struct foo) == MAX_STRUCT_SIZE + sizeof(double) になっちゃう。 inner_foo と foo とで char buf[] より前のメンバを一致させる必要がある。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/524
525: デフォルトの名無しさん (ドコグロ MMdf-vyow) [sage] 2019/05/15(水) 08:35:12 ID:0TljqresM >>515 なんでサイズが違うとセグメンテーションフォールトになるのかよくわからんが… Win32APIみたいに頭にサイズ入れときゃいいんじゃね? http://mevius.5ch.net/test/read.cgi/tech/1554171817/525
526: デフォルトの名無しさん (ワッチョイ 57f2-y0Vo) [sage] 2019/05/15(水) 08:56:22 ID:nK0I7Knm0 データファイルの話なら分かるが、intのサイズが違う環境の共有ライブラリってそもそも使えるのか? http://mevius.5ch.net/test/read.cgi/tech/1554171817/526
527: デフォルトの名無しさん (アウアウウー Sa1b-NBbm) [sage] 2019/05/15(水) 09:12:43 ID:e9I3VVqQa コンパイルは自分でしろって話だと思うよ。 そうすると単にメモリ配置を意識したプログラムだな。 当然、バイトオーダーも気にしろよっていう話に http://mevius.5ch.net/test/read.cgi/tech/1554171817/527
528: デフォルトの名無しさん (アウアウウー Sa1b-wdoq) [] 2019/05/15(水) 09:32:21 ID:k0yjAgrYa やっぱ int32_t みたいな環境に関係なく同じビット数になるやつにしといた方が良いんじゃないかな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/528
529: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/15(水) 09:45:02 ID:25auY+1H0 515の >ただ今回考えてるのは、コンパイルせずに共有ライブラリを差し替えるって状況を想定してる >そのときにセグメンテーションフォールトがでないようにしたい 構造体のパラメータを追加し共有ライブラリを差し替えつつ 呼び出し側のコンパイルは行わないって無理ないか? 旧ソースで追加されたパラメータ部分は不定値であって その不定値をうけて共有ライブラリ内部が正しく動作できるとは思えないが… http://mevius.5ch.net/test/read.cgi/tech/1554171817/529
530: デフォルトの名無しさん (ワッチョイ 9f2c-NS0m) [sage] 2019/05/15(水) 11:40:27 ID:AfKgri370 構造体には、サイズの変わらない、ポインタだけを置いておいて、 実際の領域は、ライブラリ内で確保して使って、解放すれば? http://mevius.5ch.net/test/read.cgi/tech/1554171817/530
531: デフォルトの名無しさん (アウアウウー Sa1b-NBbm) [sage] 2019/05/15(水) 12:19:01 ID:e9I3VVqQa さすがに実体を共有するという目的がないとこういう発想にはならんでしょ。 共有メモリとか、ファイルとか、通信とか。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/531
532: デフォルトの名無しさん (オッペケ Sr8b-lJiK) [sage] 2019/05/15(水) 12:31:29 ID:dMKqDPXvr >>529 呼び出す側がバージョン情報をもっておいて、処理側で振り分けてアクセスしないようにすれば問題ないね #define version 2 void func (const struct* foo) { func_impl(foo, version); } void func_impl(const struct* foo, int version) { if (version > 1) { foo.b; } } http://mevius.5ch.net/test/read.cgi/tech/1554171817/532
533: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/15(水) 12:43:05 ID:25auY+1H0 >>532 そのバージョン情報の数字を埋め込むのに一番適度なのは実構造体のサイズって話に(>>525) >>531 のような背景なら ペイロードサイズは触りたくない ってのは納得できるな バージョン違いの吸収法は別途必要だけど http://mevius.5ch.net/test/read.cgi/tech/1554171817/533
534: デフォルトの名無しさん (アウアウウー Sa1b-wdoq) [] 2019/05/15(水) 12:53:24 ID:k0yjAgrYa 構造体の中身を公開しないでポインタだけ使わせて読み書きする関数を別途用意するって方法もあると思う。オブジェクト指向の言語でのプロパティのようなものね。 内容のファイルへの読み書きやネットワークでのやり取りはそれようにデータをpack、unpackする処理を作ってそこにバージョン番号も埋め込む。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/534
535: デフォルトの名無しさん (ワッチョイ 9ff9-vVMj) [sage] 2019/05/15(水) 12:59:51 ID:Wbf0zcGJ0 exeがnew(malloc)するけど中をいじるのは全てdllの関数ってのはままある dllだけ差し替えで済ましたい、サイズが変わらなければexeはビルドし直さなくていいのに… ってことだろう >512の >intや他の型が固定サイズの保証はないから、処理系をかんがえると使えない >パディングでサイズも変わっちゃうしね は全く関係ない話だったということだ 素直に「よくある手段」でやればいい >514,517のunionもいいと思うけど foo.aでアクセスできないよね?foo.body.aとかしないと http://mevius.5ch.net/test/read.cgi/tech/1554171817/535
536: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/15(水) 13:12:20 ID:25auY+1H0 >>517 の foo.a でいきなりアクセスできる union が記述できるのは C11 からみたい 無名構造体/無名共用体 http://mevius.5ch.net/test/read.cgi/tech/1554171817/536
537: デフォルトの名無しさん (オッペケ Sr8b-lJiK) [sage] 2019/05/15(水) 14:41:00 ID:dMKqDPXvr >>535 intが4バイトなんて保証はないから、char[] bufの大きさを決められないって話でしょ? intメンバを追加したとして、bufのサイズはどれだけ減らせばいいのかわからないのが問題 4の環境が多いだろけど、2の環境だと2を減らさなきゃいけないわけで dll差し替えで再ビルドしない場合、構造体サイズが変わると特に配列渡しの場合はセグメンテーションフォールトになる可能性が高くて危険 セーブデータみたいに構造体をそのままファイルに落とすとしても、サイズはずっと不変なのが扱いやすいね http://mevius.5ch.net/test/read.cgi/tech/1554171817/537
538: デフォルトの名無しさん (アウアウウー Sa1b-NBbm) [sage] 2019/05/15(水) 14:56:07 ID:e9I3VVqQa 数字付かないintのでかい方に合わせるなら、それこそunion使って明示的にオフセット決めるとか。 本当にそんなことしたいのか?という話は置いといて。 もちろんint32_tとかint_least32_t使う方がいいし、本当に位置合わせするならバイト位置指定して読み書きするし、そもそもサイズ固定せずにシリアライズ用のライブラリ使うのが正しいよ。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/538
539: デフォルトの名無しさん (ドコグロ MMdf-vyow) [sage] 2019/05/15(水) 19:35:47 ID:0TljqresM >>537 > intが4バイトなんて保証はないから、char[] bufの大きさを決められないって話でしょ? そんな話はとっくに終わっとる >>515をちゃんと読めよ http://mevius.5ch.net/test/read.cgi/tech/1554171817/539
540: デフォルトの名無しさん (ワッチョイ 9ff9-vVMj) [sage] 2019/05/15(水) 20:46:54 ID:Wbf0zcGJ0 >>536 ほう知らんかった なら>517でほぼデメリットないね >>537 「その環境」でのintのサイズはsizeof(int)でおk http://mevius.5ch.net/test/read.cgi/tech/1554171817/540
541: デフォルトの名無しさん (ワッチョイ d7ab-xJZP) [sage] 2019/05/15(水) 21:55:29 ID:ZaVTFrP70 win32apiはバージョンによって構造体の変数が追加になるから構造体のサイズを構造体の先頭にセットする http://mevius.5ch.net/test/read.cgi/tech/1554171817/541
542: デフォルトの名無しさん (ワッチョイ baa5-bDB9) [sage] 2019/05/16(木) 08:13:26 ID:eEplP63Q0 windows.hのsmallで一時間潰した http://mevius.5ch.net/test/read.cgi/tech/1554171817/542
543: デフォルトの名無しさん (ワッチョイ 29ad-BnNU) [sage] 2019/05/16(木) 19:38:59 ID:GXqxfUU20 文字配列列sを逆順に文字配列tに格納して出力したいのですが、 以下のコードでは実行してもt=[]と出力されてしまいます #include <stdio.h> #define MAXLINE 1000 main() { char s[MAXLINE],t[MAXLINE]; int c,i,I; for(i=0; i<MAXLINE-1 && (c=getchar())!=EOF && c!='¥n'; ++i) { s[i]=c; } if(c=='¥n'){ s[i]=c; ++i; } s[i]='\0'; I=i; for(i=i; 0<=i; i=i-1) { t[I-i]=s[i]; } printf("t=[%s]",t); } どこがおかしいのでしょうか… http://mevius.5ch.net/test/read.cgi/tech/1554171817/543
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 459 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.027s