[過去ログ]
C言語なら俺に聞け 151 (1002レス)
C言語なら俺に聞け 151 http://mevius.5ch.net/test/read.cgi/tech/1554171817/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
497: デフォルトの名無しさん (ワッチョイ d7f6-y0Vo) [sage] 2019/05/12(日) 12:19:14.09 ID:VeGHf8Lz0 >>496 意見が異なるのと全否定は違うぞ 自分はこう思うと述べるのと おまえは間違っているというのの違いだ よくいるんだよ、どっかからの受け売りを壊れたレコードみたいに繰り返すだけなやつとか 俺は自分の知見からは何も出てこないのかよと思うことがあるが おまえはそれで満足なら勝手に満足してろよ そこが俺とおまえの違いだな http://mevius.5ch.net/test/read.cgi/tech/1554171817/497
498: デフォルトの名無しさん (ワッチョイ 9f79-ScLU) [sage] 2019/05/12(日) 15:34:15.26 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.62 ID:L7lYUohVa fgetc二回呼びたいの? http://mevius.5ch.net/test/read.cgi/tech/1554171817/499
500: デフォルトの名無しさん (ワッチョイ d77f-hzJM) [sage] 2019/05/12(日) 16:10:46.32 ID:7kDDqNbD0 >>498 continueだと内ループ先頭に戻るから違うんじゃないの http://mevius.5ch.net/test/read.cgi/tech/1554171817/500
501: デフォルトの名無しさん (ワッチョイ ff12-f8ez) [sage] 2019/05/12(日) 16:24:47.11 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.74 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.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.22 ID:CrklWm7I0 変な例出すなよ… http://mevius.5ch.net/test/read.cgi/tech/1554171817/504
505: デフォルトの名無しさん (ワッチョイ 9f1e-bWAY) [sage] 2019/05/12(日) 17:29:29.19 ID:gzai7Rgq0 サイズが固定なら fread でよくない? そうすべきというほどのものでもないだろうが。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/505
506: デフォルトの名無しさん (ワッチョイ 577b-djxj) [sage] 2019/05/12(日) 17:35:10.27 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.22 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.80 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.99 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.54 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.19 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.67 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.18 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.74 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.55 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.40 ID:2RiYyx1fa あらゆる環境だったらシリアライズしないとだし。 同じ処理系だったら同じ構造体でいいだろうし。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/516
517: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/14(火) 13:41:09.36 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.65 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.00 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.31 ID:2RiYyx1fa 普通符号付きでしょ http://mevius.5ch.net/test/read.cgi/tech/1554171817/520
521: デフォルトの名無しさん (ワッチョイ 7f7c-gMth) [sage] 2019/05/14(火) 14:51:20.14 ID:5nOlmwWa0 符号プログラミングか http://mevius.5ch.net/test/read.cgi/tech/1554171817/521
522: デフォルトの名無しさん (アウアウエー Sadf-NBbm) [sage] 2019/05/14(火) 15:42:40.54 ID:2RiYyx1fa 今はstatic_assertとかいうものがあるらしいぞ これでコンパイル時にチェックすればよい http://mevius.5ch.net/test/read.cgi/tech/1554171817/522
523: デフォルトの名無しさん (ワッチョイ bf54-vVMj) [sage] 2019/05/14(火) 21:12:50.85 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.99 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.84 ID:0TljqresM >>515 なんでサイズが違うとセグメンテーションフォールトになるのかよくわからんが… Win32APIみたいに頭にサイズ入れときゃいいんじゃね? http://mevius.5ch.net/test/read.cgi/tech/1554171817/525
526: デフォルトの名無しさん (ワッチョイ 57f2-y0Vo) [sage] 2019/05/15(水) 08:56:22.39 ID:nK0I7Knm0 データファイルの話なら分かるが、intのサイズが違う環境の共有ライブラリってそもそも使えるのか? http://mevius.5ch.net/test/read.cgi/tech/1554171817/526
527: デフォルトの名無しさん (アウアウウー Sa1b-NBbm) [sage] 2019/05/15(水) 09:12:43.64 ID:e9I3VVqQa コンパイルは自分でしろって話だと思うよ。 そうすると単にメモリ配置を意識したプログラムだな。 当然、バイトオーダーも気にしろよっていう話に http://mevius.5ch.net/test/read.cgi/tech/1554171817/527
528: デフォルトの名無しさん (アウアウウー Sa1b-wdoq) [] 2019/05/15(水) 09:32:21.44 ID:k0yjAgrYa やっぱ int32_t みたいな環境に関係なく同じビット数になるやつにしといた方が良いんじゃないかな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/528
529: デフォルトの名無しさん (ワッチョイ ff69-PnGR) [sage] 2019/05/15(水) 09:45:02.94 ID:25auY+1H0 515の >ただ今回考えてるのは、コンパイルせずに共有ライブラリを差し替えるって状況を想定してる >そのときにセグメンテーションフォールトがでないようにしたい 構造体のパラメータを追加し共有ライブラリを差し替えつつ 呼び出し側のコンパイルは行わないって無理ないか? 旧ソースで追加されたパラメータ部分は不定値であって その不定値をうけて共有ライブラリ内部が正しく動作できるとは思えないが… http://mevius.5ch.net/test/read.cgi/tech/1554171817/529
530: デフォルトの名無しさん (ワッチョイ 9f2c-NS0m) [sage] 2019/05/15(水) 11:40:27.07 ID:AfKgri370 構造体には、サイズの変わらない、ポインタだけを置いておいて、 実際の領域は、ライブラリ内で確保して使って、解放すれば? http://mevius.5ch.net/test/read.cgi/tech/1554171817/530
531: デフォルトの名無しさん (アウアウウー Sa1b-NBbm) [sage] 2019/05/15(水) 12:19:01.09 ID:e9I3VVqQa さすがに実体を共有するという目的がないとこういう発想にはならんでしょ。 共有メモリとか、ファイルとか、通信とか。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/531
532: デフォルトの名無しさん (オッペケ Sr8b-lJiK) [sage] 2019/05/15(水) 12:31:29.02 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.74 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.07 ID:k0yjAgrYa 構造体の中身を公開しないでポインタだけ使わせて読み書きする関数を別途用意するって方法もあると思う。オブジェクト指向の言語でのプロパティのようなものね。 内容のファイルへの読み書きやネットワークでのやり取りはそれようにデータをpack、unpackする処理を作ってそこにバージョン番号も埋め込む。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/534
535: デフォルトの名無しさん (ワッチョイ 9ff9-vVMj) [sage] 2019/05/15(水) 12:59:51.65 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.84 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.06 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.34 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.81 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.27 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.06 ID:ZaVTFrP70 win32apiはバージョンによって構造体の変数が追加になるから構造体のサイズを構造体の先頭にセットする http://mevius.5ch.net/test/read.cgi/tech/1554171817/541
542: デフォルトの名無しさん (ワッチョイ baa5-bDB9) [sage] 2019/05/16(木) 08:13:26.18 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.34 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
544: デフォルトの名無しさん (ワッチョイ 3f01-pg4x) [sage] 2019/05/16(木) 19:48:10.73 ID:q0J7kB7g0 後のループの一発目は s[i]='\0'; I=i; /* ここのforを削って */ t[I-i]=s[i]; こういうことになるから t[0] = s[i] ってことになって t[0] = '\0'; をやってることになる 上記のは 1 2 3 4 \0 → \0 4 3 2 1 のコード 実装すべきなのは 1 2 3 4 \0 → 4 3 2 1 \0 となるコード http://mevius.5ch.net/test/read.cgi/tech/1554171817/544
545: デフォルトの名無しさん (アウアウウー Sa83-RNyv) [] 2019/05/16(木) 20:27:22.18 ID:m1+/MMjMa 惜しいねえ。綺麗に逆に入ってはいるんだよな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/545
546: デフォルトの名無しさん (ワッチョイ 29ad-BnNU) [sage] 2019/05/16(木) 20:38:11.53 ID:GXqxfUU20 おっしゃる通りでした…今度は上手くいきました ありがとうございます http://mevius.5ch.net/test/read.cgi/tech/1554171817/546
547: デフォルトの名無しさん (ワッチョイ 29ad-BnNU) [sage] 2019/05/16(木) 20:38:46.73 ID:GXqxfUU20 おっしゃる通りでした…今度は上手くいきました ありがとうございます http://mevius.5ch.net/test/read.cgi/tech/1554171817/547
548: デフォルトの名無しさん (ワッチョイ 3f01-pg4x) [sage] 2019/05/16(木) 21:09:34.65 ID:q0J7kB7g0 自己解決できたようでなにより 整数の配列を逆に整列させるなら正解だったんだけどねー 「文字列」操作の落とし穴ですな http://mevius.5ch.net/test/read.cgi/tech/1554171817/548
549: デフォルトの名無しさん (ワッチョイ 2c5f-N32O) [sage] 2019/05/18(土) 22:03:40.11 ID:e0Mh58zT0 今C言語教室でSQLとGUIやってる初心者なんだがCでDB弄る仕事ってあるのか JavaとかC#に取られそうだけど http://mevius.5ch.net/test/read.cgi/tech/1554171817/549
550: デフォルトの名無しさん (アウアウエー Sa6a-ZkGz) [sage] 2019/05/18(土) 22:06:44.17 ID:8rj7/ih6a sqliteは使うよ http://mevius.5ch.net/test/read.cgi/tech/1554171817/550
551: ◆QZaw55cn4c (ワッチョイ ea47-8NB0) [sage] 2019/05/18(土) 22:07:47.63 ID:Pqc0+ZP00 >>549 ODBC 経由ならできますが…昔、ハンドルのキャストをとちったミスを、その意味不明の動きから突き止めるのは大変でした ODBC を直書きする情報はネットにほとんどありませんね http://mevius.5ch.net/test/read.cgi/tech/1554171817/551
552: デフォルトの名無しさん (ワッチョイ 2c5f-N32O) [sage] 2019/05/18(土) 22:19:48.67 ID:e0Mh58zT0 SQL使うのか慣れてないからあんまやりたくないんだよなあ 頑張るか http://mevius.5ch.net/test/read.cgi/tech/1554171817/552
553: デフォルトの名無しさん (ワッチョイ aa01-A+mh) [sage] 2019/05/18(土) 22:37:47.44 ID:D3aJPSyb0 >>549 C++ならまだしもC言語でGUI? どこの教室だよ… http://mevius.5ch.net/test/read.cgi/tech/1554171817/553
554: デフォルトの名無しさん (ワッチョイ d863-N32O) [sage] 2019/05/18(土) 22:53:12.41 ID:RWbfx4gX0 むかーし、Pro*C って使った事がある Cのソース内にSQLを埋め込み プリコンパイルする感じ 今は流行らないかもしれない http://mevius.5ch.net/test/read.cgi/tech/1554171817/554
555: デフォルトの名無しさん (アウアウエー Sa6a-ZkGz) [sage] 2019/05/18(土) 22:58:45.45 ID:8rj7/ih6a SQL使いこなしてる人ってすごいけど、正直ああはなりたくないという感じだよな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/555
556: デフォルトの名無しさん (ワッチョイ d863-N32O) [sage] 2019/05/18(土) 23:01:53.11 ID:RWbfx4gX0 賢いファイルシステムとして利用すると超便利だぞ http://mevius.5ch.net/test/read.cgi/tech/1554171817/556
557: デフォルトの名無しさん (ワッチョイ d863-N32O) [sage] 2019/05/18(土) 23:02:38.45 ID:RWbfx4gX0 同じ事をCのロジックで組むとなると、アタマおかしくなるかも http://mevius.5ch.net/test/read.cgi/tech/1554171817/557
558: デフォルトの名無しさん (ワッチョイ 73c3-AU7T) [sage] 2019/05/18(土) 23:08:58.89 ID:Y/SMFmS40 普通にアプリケーションの規模が大きくなるとsql使いたくなるだろ そういう場合はsqlite使う http://mevius.5ch.net/test/read.cgi/tech/1554171817/558
559: デフォルトの名無しさん (ワッチョイ d863-N32O) [sage] 2019/05/18(土) 23:10:30.33 ID:RWbfx4gX0 5ちゃんねる専用ブラウザもsqlite使っているそうですね? プログラムコードはCではないですが http://mevius.5ch.net/test/read.cgi/tech/1554171817/559
560: デフォルトの名無しさん (ワッチョイ 8654-2aw6) [sage] 2019/05/19(日) 10:01:29.20 ID:EV8D9m9A0 IoTのデバイス開発やってるけど、C言語でDBのクライアントライブラリ使ってるよ http://mevius.5ch.net/test/read.cgi/tech/1554171817/560
561: デフォルトの名無しさん (ワッチョイ 9ff6-EL+e) [sage] 2019/05/19(日) 16:30:57.06 ID:b6d7Y/CF0 リーナスさんはC++嫌いつーてるしな トレードマークのfuck口調で http://mevius.5ch.net/test/read.cgi/tech/1554171817/561
562: デフォルトの名無しさん (アウアウウー Sa83-RNyv) [] 2019/05/19(日) 17:49:51.40 ID:V/GPYpFPa この頃は間に何かライブラリ挟んでDB変わってもSQL文がほぼ同じままで行けるようなのが流行りなのでは? http://mevius.5ch.net/test/read.cgi/tech/1554171817/562
563: デフォルトの名無しさん (ワッチョイ 4edc-EL+e) [sage] 2019/05/19(日) 19:08:51.80 ID:SqCxdnVY0 大学の情報科の人たちってどのレベルでC言語使えるんですかね? Cに限ったことではないですが大学4年でどの程度の練度が身につくのか http://mevius.5ch.net/test/read.cgi/tech/1554171817/563
564: デフォルトの名無しさん (ワッチョイ 4652-EL+e) [sage] 2019/05/19(日) 19:17:39.10 ID:Ic55MIMX0 人によるだろ そもそも好きなやつは大学入る前からやってるからな http://mevius.5ch.net/test/read.cgi/tech/1554171817/564
565: デフォルトの名無しさん (アウアウエー Sa6a-ZkGz) [sage] 2019/05/19(日) 19:22:28.74 ID:qBoKnLB7a >>563 別に使えなくてもいいよ http://mevius.5ch.net/test/read.cgi/tech/1554171817/565
566: デフォルトの名無しさん (ワッチョイ 9ff6-EL+e) [sage] 2019/05/19(日) 21:05:03.54 ID:b6d7Y/CF0 >>565 おまえは情報科に来るなってだけ やる気ねえやつが畑違いな学部に入ること自体が害悪だ http://mevius.5ch.net/test/read.cgi/tech/1554171817/566
567: デフォルトの名無しさん (アウアウカー Sa0a-ZkGz) [sage] 2019/05/19(日) 21:14:52.17 ID:Y3pJ4vrOa >>566 お前が入ったの専門学校だろ? http://mevius.5ch.net/test/read.cgi/tech/1554171817/567
568: デフォルトの名無しさん (ワッチョイ 9ff6-EL+e) [sage] 2019/05/19(日) 21:19:32.43 ID:b6d7Y/CF0 >>567 化学科だけど http://mevius.5ch.net/test/read.cgi/tech/1554171817/568
569: デフォルトの名無しさん (ワッチョイ d863-N32O) [sage] 2019/05/19(日) 21:24:37.32 ID:RJz4Ejb00 学校だとアルゴリズムやシステム設計手法は学べるだろうが 練度が上がるのはやはり仕事を始めてからだと思う http://mevius.5ch.net/test/read.cgi/tech/1554171817/569
570: デフォルトの名無しさん (オッペケ Sr88-2aw6) [sage] 2019/05/20(月) 12:44:26.31 ID:PSRVLRmYr コンピュータサイカヨウの基本は一通りやるんじゃない? 情報処理試験の基本レベルくらいのもの 初心者は実務にはそのままは使えないけど、中級以上のエンジニアならこのあたりの知識があると差がついてくるね http://mevius.5ch.net/test/read.cgi/tech/1554171817/570
571: デフォルトの名無しさん (ワッチョイ 328c-TfzP) [] 2019/05/20(月) 14:12:04.87 ID:0d3wAWyu0 業務のほとんどは手作業の自動化だから差は出ない。そしてみんなリストラされる。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/571
572: デフォルトの名無しさん (ワッチョイ 462d-EL+e) [sage] 2019/05/20(月) 18:18:34.53 ID:IJBxlZ980 仕事で出会った、いろいろな人を思い出すに、ガチに使える人材って凄いからなあ。 学校や仕事を通じて学ぶ、みたいな次元じゃないんだよねえ。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/572
573: デフォルトの名無しさん (アウアウエー Sa6a-ZkGz) [sage] 2019/05/20(月) 19:49:19.18 ID:Nbm/sW0Oa おまえが使ってるんだったらおまえが偉いよ http://mevius.5ch.net/test/read.cgi/tech/1554171817/573
574: デフォルトの名無しさん (ワッチョイ ae2c-uMtI) [sage] 2019/05/21(火) 00:42:18.33 ID:jVHVO/YL0 setbuf関数っていつなんの為に使うんや? バッファリングのためにあるのはわかるけどそもそもバッファリングがなんの為にあるのかわからん http://mevius.5ch.net/test/read.cgi/tech/1554171817/574
575: デフォルトの名無しさん (ワッチョイ 1c79-N32O) [sage] 2019/05/21(火) 00:44:38.83 ID:Hcv2vO/e0 ちまちま出力するより溜めてからまとめて出力した方が高速 http://mevius.5ch.net/test/read.cgi/tech/1554171817/575
576: デフォルトの名無しさん (ワッチョイ ae2c-uMtI) [sage] 2019/05/21(火) 01:29:10.75 ID:jVHVO/YL0 1万文字くらいのテキストファイルを標準出力でやってみたけど変わった気しなかったぞ もしかして数百万文字レベルの巨大ファイルだと劇的に変わるんか? http://mevius.5ch.net/test/read.cgi/tech/1554171817/576
577: デフォルトの名無しさん (ワッチョイ 73c3-AU7T) [sage] 2019/05/21(火) 01:34:19.46 ID:XM845/F70 10kbって小さくね http://mevius.5ch.net/test/read.cgi/tech/1554171817/577
578: デフォルトの名無しさん (アウアウカー Sa0a-ZkGz) [sage] 2019/05/21(火) 01:46:59.05 ID:+xvLcOVEa というか普通はバッファリングする関数ばっかりだが、自前でバッファ用意したいときもあるって話。 基本変わらんよたぶん。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/578
579: デフォルトの名無しさん (ワッチョイ ae2c-uMtI) [sage] 2019/05/21(火) 01:47:43.41 ID:jVHVO/YL0 確かに少ないな と思ったんで2,700kbでやってみたらむしろ4秒長くなったぞ http://mevius.5ch.net/test/read.cgi/tech/1554171817/579
580: デフォルトの名無しさん (ワッチョイ 9602-XAPB) [] 2019/05/21(火) 02:21:13.21 ID:Y+BS98b80 >>574 FILE * 経由で出力する printf() 等は内部でバッファリングしていてバッファがいっぱいになったらまとめて出力する(出力先が端末の場合は行単位で出力する)。 そのバッファを自分で指定した領域を使わせるか、またはなしにできるのが setbuf()。更に自由に大きさやモードも指定したいなら setvbuf() を使う。 バッファリングに関して考慮しなくても良い入出力をする場合は read(), write() で行う。この場合は全くバッファリングされないので少ないバイト数の入出力が多いと遅くなる。 それと printf() のようなフォーマットを考慮した出力はないので必要なら自作する。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/580
581: デフォルトの名無しさん (ワッチョイ 9602-XAPB) [] 2019/05/21(火) 02:26:07.71 ID:Y+BS98b80 >>576 open()してwrite()で1バイトづつ書くのとまとめて書くのとではバイト数によっては大幅に違いが出ると思う。環境依存ではあるが。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/581
582: デフォルトの名無しさん (ワッチョイ ae2c-uMtI) [sage] 2019/05/21(火) 03:47:59.45 ID:jVHVO/YL0 >>581 大きなファイルの入出力を高速化したい時はsetbuf(fp,buf) バッファリング無しにしてバッファをフラッシュするタイミングを順番に逐一実行させたい時はsetbuf(fp,NULL) みたいな感じでええんかな? http://mevius.5ch.net/test/read.cgi/tech/1554171817/582
583: デフォルトの名無しさん (ワッチョイ 9602-XAPB) [] 2019/05/21(火) 03:58:34.93 ID:Y+BS98b80 >>582 setvbuf()で自分でバッファの大きさ決めてしまった方が良いかも。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/583
584: デフォルトの名無しさん (ワッチョイ a601-uGxO) [sage] 2019/05/21(火) 04:24:32.31 ID:zmxtmgNI0 既出かもしれませんがconstがjavaのfinalと違うと知りました。どう違うのでしょうか?c初心者です http://mevius.5ch.net/test/read.cgi/tech/1554171817/584
585: デフォルトの名無しさん (ワッチョイ 4101-MvwS) [sage] 2019/05/21(火) 05:39:22.97 ID:SRv5ILQj0 >>576 OSによってはHDDへ遅延書き込みするから、結局バッファしてるのと大して変わらなかったりする。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/585
586: デフォルトの名無しさん (ワッチョイ 462d-EL+e) [sage] 2019/05/21(火) 06:44:08.98 ID:UPiNM42a0 >>584 20年前くらいの知識で、しかも完全に理解してるわけではないので、間違っていたらゴメンだけど。 変数について言えば、Java の final 変数は、値が未定義かどうか、という情報を内部的に持っていて。 もし、変数の値が未定義の場合は、1回だけ代入できたはず。例えば final int i; System.out.println("test"); i=4; System.out.println(i); i=5; System.out.println(i); の場合、1回目の代入(i=4)は許されるけど、2回目の代入(i=5)は怒られる。 それに対して、(C89の頃のだけど)Cのconst変数は・・・ const int i; printf("test\n"); i=0; printf("%d\n",i); 1回目の代入(i=0)であっても怒られる。 みたいな感じの違いはあったような。最近のCやJavaは知らないんだけどね。 あまり自信がないので、詳しい方のレスを待ちましょう。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/586
587: デフォルトの名無しさん (ドコグロ MM02-A+mh) [sage] 2019/05/21(火) 06:49:56.40 ID:tdstqwiHM >>585 そっちもあるけどAPI呼出し回数の削減もあるから http://mevius.5ch.net/test/read.cgi/tech/1554171817/587
588: デフォルトの名無しさん (オッペケ Sr88-2aw6) [sage] 2019/05/21(火) 07:08:29.24 ID:6muVxYSDr >>585 今どきのディスクならほぼ遅延書き込みしてるといってもいいね バッファには二段階あって、 ?プロセスが持ってるバッファ ?OSが持ってるバッファ flush関係のライブラリ関数やシステムコールは?を?に吐き出す ?を吐き出すにはLinuxだとfsyncもしくはfdatasync http://mevius.5ch.net/test/read.cgi/tech/1554171817/588
589: デフォルトの名無しさん (アウアウウー Sa83-RNyv) [] 2019/05/21(火) 09:19:53.31 ID:BVi2WQ22a >>584 Cはポインタの指す先が const という指定ができるがJavaは配列の要素まで final にする指定ができなかったと思う。 つまり配列やクラスそのもののインスタンスへの参照は final にてきる。しかし参照される中身までは final にできず書き換え可能(クラスの場合はpublicのクラス変数とか、外部から書き換えられるようになっていれば書き換えられる)。 ま、ちょっと試してみな。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/589
590: デフォルトの名無しさん (ワッチョイ f6d2-cXFR) [] 2019/05/21(火) 10:05:33.15 ID:DLRGb2lZ0 LTOのオプション を使ってコンパイルすれば インライン関数をヘッ ダーに書かなくても 勝手にインライン化できるものはインラ イン化してくれる という理解で あってますか? http://mevius.5ch.net/test/read.cgi/tech/1554171817/590
591: デフォルトの名無しさん (アウアウウー Sa83-RNyv) [] 2019/05/21(火) 10:21:18.62 ID:BVi2WQ22a >>590 それコンパイラ依存なのでは? http://mevius.5ch.net/test/read.cgi/tech/1554171817/591
592: デフォルトの名無しさん (ササクッテロル Sp88-uMtI) [sage] 2019/05/21(火) 12:55:43.68 ID:PZq+OQZ5p >>589 これな Javaを最初に設計した奴はバカなんじゃないかと final の仕様を見たとき思ったな http://mevius.5ch.net/test/read.cgi/tech/1554171817/592
593: デフォルトの名無しさん (ワッチョイ ae2c-rckI) [sage] 2019/05/21(火) 15:23:18.72 ID:ZAINLMmO0 Linux では、HDD へ書き込むのは、デフォルトで、5秒に1回 USB メモリで、書き込み回数を減らしたい場合は、 15秒に1回とかに設定する人もいる http://mevius.5ch.net/test/read.cgi/tech/1554171817/593
594: デフォルトの名無しさん (オッペケ Sr88-2aw6) [sage] 2019/05/21(火) 18:23:31.31 ID:6muVxYSDr >>593 書き出し周期はファイルシステムに依存するよ 例えばext3かext4かで挙動は違う http://mevius.5ch.net/test/read.cgi/tech/1554171817/594
595: デフォルトの名無しさん (ササクッテロル Sp88-Qul6) [] 2019/05/21(火) 18:37:21.97 ID:G/IUf+gXp C言語のfprintfを用いるときに、前行の改行を消す方法をご存知ないですか? エスケープシーケンスでバックスペースを試したのですか上手くいかなくて困っています。 状況としてはfor文を用いて改行を含んだ文字列を繰り返し出力させているんですが、最後の行だけ改行を無くし、続けて別の文を出力したいのです。 繰り返しの回数を変えて最後に改行なしの処理をいれればいいと思うのですが、簡単な方法があればと思い質問させていただきました。 よろしくお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1554171817/595
596: デフォルトの名無しさん (ワッチョイ 3f01-pg4x) [sage] 2019/05/21(火) 18:40:11.67 ID:UdJL+OJH0 ストリームの撒き戻しは難しいんじゃないか? 表示装置なのかファイルなのかでも変わるだろうし… http://mevius.5ch.net/test/read.cgi/tech/1554171817/596
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 406 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s