1 名前:デフォルトの名無しさん [2018/09/19(水) 17:56:50.83 ID:XSTNMnDwa.net] C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ ※前スレ C言語なら俺に聞け 147 mevius.5ch.net/test/read.cgi/tech/1534430162/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
557 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 12:50:10.63 ID:cQzHZ22n0.net] >>539 歴史に残る名言だなw
558 名前:デフォルトの名無しさん [2018/10/05(金) 12:50:15.78 ID:qaFHFmCDa.net] >>539 それ、もういいですから。
559 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 13:01:08.97 ID:vpbu8eze0.net] clear > log cat log Linux の基本コマンドも知らないような奴が、C をやるな! 10年勉強してからやれ
560 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 13:01:39.72 ID:6zSKEd8l0.net] >>535 >>529 で言ってるのは >>526 の実行とは別の話。 画面を消す方法の正体を調べる手順だから、ヒマな時にやればいい。 >>536 宣言はコンパイル時に解釈されるもので、実行時に「宣言という動作」を行っているわけじゃない。 だから実行時にかかるコストは無いから、ループの中に書いてもいい。 C は変数が見える範囲(スコープ)が { } の中になってる。 minute と second は while で回してる { } の中でしか使ってなく、かつ表示のための一時的な変数だから、それを必要とする範囲内だけで見えるようにすると分かりやすくなる。 変数のスコープは極力狭くなるように書くといいよ。 分かりやすさの点でもいいし、メモリ(スタック)の消費量も少なくなる。 正確なタイマーを作るならインターバルタイマーで調べてみるといいけど、まだそれを使えるレベルじゃないと思う。 >>538 curses ってなに?
561 名前:デフォルトの名無しさん [2018/10/05(金) 13:03:13.60 ID:qaFHFmCDa.net] >>536 1秒ごとに setitimer() とか使って割り込み掛かればいいんだけどね、普通のOSだとあまり正確にではないかも知れない。しかしただsleepするよりは正確だと思う。 割り込み使わないやり方で今と似ているけどましなやり方は次の処理開始時間までより正確に sleep することだ。 これは gettimeofday() でμ秒までの時刻を取得して秒が変わるまで何μ秒なのか計算して usleep() で sleep させればできる。
562 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 13:11:04.98 ID:6zSKEd8l0.net] curses ってライブラリか。 面白そうだな。
563 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 13:31:56.77 ID:DxqDA2/Ip.net] >>544 変数の宣言はコンパイル時に解釈されているのですね。わかりました。 「set number」と「syntax on」を初期設定にするにはどうすればいいですか?
564 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 13:33:35.60 ID:DxqDA2/Ip.net] あと、インターバルタイマーも調べて起きます。
565 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 16:55:26.05 ID:NK5dBb8n0.net] >>547 printf '%s\n%s\n' 'set number' 'syntax on' >> ~/.vimrc
566 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 16:56:30.81 ID:NK5dBb8n0.net] ていうかエディタの名前くらい書け。 まあset numberという設定名のエディタはVimくらいしか思い付かんが。
567 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 10:59:41.46 ID:YTpMAVXmM.net] そこはggrksだろ なに遊ばれとんねん
568 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 11:16:41.41 ID:5icYsRLJ0.net] H8 (3694) と秋月キャラLCD(SC1602) のI/F 関数です。 //-------------------------------------------------------------------- #include<3694.h> // CPU のレジスター定義、その他関数のプロトタイプ struct DATA_BUS{ unsigned char NOTUSE:4; IO.PDR8.BIT.B7; IO.PDR8.BIT.B6; IO.PDR8.BIT.B5; IO.PDR8.BIT.B4; }; // IO.PDR8.BIT.B3 は不使用 #define LCD_RS IO.PDR8.BIT.B2 // P82を LCD RSに定義 #define LCD_RW IO.PDR8.BIT.B1 // P81を LCD R/Wに定義 #define LCD_E IO.PDR8.BIT.B0 // P80を LCD Eに定義 #define LCD_DB DATA_BUS // P83〜P87 のみをLCD D4〜D7 に定義したい //-------------------------------------------------------------------- LCD_DB に構造体の入れ子(DATA_BUS) を定義しています。この書き方で動作しますか。この関数の作者はLCD_DB にunsigned char 型で下位4ビットのみ有効なchar 型を代入していました。
569 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 13:21:40.69 ID:i8/5B6xca.net] 関数がないじゃん
570 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 13:57:42.90 ID:wqzMNkqt0.net] そもそもコンパイルできなかったのでは? 構造体のメンバにB4〜B7みたいな定義済みの定数は書けないよ。
571 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 14:22:18.67 ID:NcWFD+EU0.net] Cってネットワーク系のコマンド作るのに向いてる?
572 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 14:26:06.72 ID:i8/5B6xca.net] ネットワーク系のコマンドというのが意味不明だが、socketインターフェースはある。 向いてるかといえば向いてないが、そういう低レイヤの話としては言語は何を使っても大して変わらん様な気はする。
573 名前:デフォルトの名無しさん [2018/10/08(月) 14:31:56.89 ID:meeyxWTYa.net] REST APIなら libcurl で楽々よ
574 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 14:51:03.67 ID:FGHe46tu0.net] ビットコのbot殆どがPythonやNode.jsばっかだけど libcurl使えばスクリプト言語並みに簡単に使えるよね
575 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 15:10:37.99 ID:NcWFD+EU0.net] なるほどソケットっていうのもあるのか。 無知なもので「ネットワークコマンド」と言えばwgetやらcurlやらのTCPクライアントだけを指すと思ってたw curlってコマンドだけじゃなくてlibcurlも提供してくれてるんだね。 だったらpure CでもTCPクライアントが作れそう。
576 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 15:53:56.39 ID:i8/5B6xca.net] 言葉の話だけどcurlは基本的にはHTTPクライアントだ。TCPの上に乗ってる。 TCPクライアントはtelnetとかncだな。ncはUDPも行ける。 TCPも基本的には難しくないが、異常系を考え出すときりがない。
577 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 16:51:30.03 ID:wTnfR6Jf0.net] 大昔ソケットレベルから自前でHTTPクライアント作ったことある TCPプロトコルを学ぶ良い勉強になるよ
578 名前:デフォルトの名無しさん [2018/10/08(月) 16:56:21.14 ID:SHTmPUE+0.net] 相変わらず低学歴知恵遅れは頭悪いこといってるわ ソケット通信でTCPプロトコルとか オマエがソケット通信でやりとりしてんのはHTTP ホントななんでココまで頭悪いのしかいないのか不思議
579 名前:デフォルトの名無しさん [2018/10/08(月) 17:00:43.05 ID:SHTmPUE+0.net] トランスファープロトコルにTCP/IP使ってるといっても きっとこのスレの低学歴知恵遅れは意味が分からない smtpもftpもほとんどが普通にtcp/ipだからな いまどきのnetbiosも普通にtcp/ipだからな 昔はトランスファープロトコルにnetbeuiつかってた で、今ではnetbios over tcp/ipで nbtとかなんとかいってる
580 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 17:32:32.71 ID:i8/5B6xca.net] >>563 知らんテクニカルタームは使うときに確認しろよ
581 名前:デフォルトの名無しさん [2018/10/08(月) 17:34:14.12 ID:SHTmPUE+0.net] また低学歴知恵遅れが意味不明ないちゃんもんとけてるし 先にいっとくけどな とてつもなく頭悪いこといってんのオマエだからな まずその自覚がない
582 名前:デフォルトの名無しさん [2018/10/08(月) 17:35:52.31 ID:SHTmPUE+0.net] pop3もtcp/ip sshもtcp/ip httpsもtcp/ip きっとな低学歴知恵遅れには なにをいってるのいかが分からないとは思うわ
583 名前:デフォルトの名無しさん [2018/10/08(月) 17:37:36.24 ID:SHTmPUE+0.net] ホントな低学歴知恵遅れは 頭悪いことを自信満々でいうから困るわ
584 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 17:44:32.09 ID:BtXxUchaM.net] 基本情報どころかITパスポート程度の知識でドヤってるのか 低学歴知遅れ君は
585 名前:デフォルトの名無しさん [2018/10/08(月) 17:47:16.60 ID:SHTmPUE+0.net] それにすら到達してない低学歴知恵遅れが ドヤってるスレがこの板だからな マジで低学歴知恵遅れはこの板から排除したほうがいい 有害
586 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 17:48:30.52 ID:i8/5B6xca.net] じゃあ「トランスファープロコトル」ってなんだか説明してくれよ… なんだよ「ソケット通信でHTTP」って。
587 名前:デフォルトの名無しさん [2018/10/08(月) 17:50:22.69 ID:SHTmPUE+0.net] HTTPというのは ハイパーテキストトランスファー プ ロ ト コ ル だからな ソケット通信(トランスファープロトコル意識する必要ない)で HTTPの内容してるだけだ わかった?
588 名前:デフォルトの名無しさん [2018/10/08(月) 17:51:32.47 ID:SHTmPUE+0.net] ソケット通信でHTTPの内容をヤリトリしてるのすら分かってないワケだからな ここまで頭悪いと
589 名前:話にならない [] [ここ壊れてます]
590 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 17:51:37.49 ID:BtXxUchaM.net] 低学歴知遅れ君ってプロトコルの意味を理解してなさそう
591 名前:デフォルトの名無しさん [2018/10/08(月) 17:52:10.92 ID:SHTmPUE+0.net] で、低学歴知恵遅れの負けず嫌いは半端ないからな
592 名前:デフォルトの名無しさん [2018/10/08(月) 17:52:42.31 ID:SHTmPUE+0.net] これ以上語るつもりはない
593 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 17:55:15.29 ID:o/CKA6Eq0.net] 昨日読んだTCPの本がよっぽど気に入ったんだね
594 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 17:59:44.79 ID:i8/5B6xca.net] だからなんだよ「トランスファープロトコル」って
595 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 18:24:47.89 ID:wTnfR6Jf0.net] TCP Transmission Control Protocol IP Internet Protocol トランスポート層 TCP, UDP, DCCP, SCTP, IL, RUDP 似たような言葉はあるが、その表現は見つからないな 並行宇宙のどこかで使っているかもしれないが ここではなさそうだ
596 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 18:25:27.11 ID:NcWFD+EU0.net] あー。TCPというのはHTTPよりもう少し下層に位置する概念ってことかな?(合ってるか不安) 俺が作りたいなぁと思ったのは $ xxx 'example.com' とやるとブラウザでexample.comにアクセスして「ページのソースを表示する」機能を使ったときのような出力を返すコマンド。 これはTCPクライアントじゃなくてHTTPクライアントか。
597 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 18:27:46.37 ID:wTnfR6Jf0.net] >>579 そう 普通はHTTPプロトコルのGETメソッド使う POSTでも良いが、設定が多少複雑になる
598 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 18:29:18.08 ID:lYyho1IC0.net] 「トランスファープロトコル」は星の数ほどある「〜転送プロトコル」の用語として使われるけど、トランスファープロトコル単体で使用されてるのは聞いたことないね。 きっとトランスポートプロトコルの間違い。
599 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 18:29:27.24 ID:wTnfR6Jf0.net] あ、下層というよりもアプリケーション層ですね
600 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 18:42:58.85 ID:i8/5B6xca.net] >>579 まあGETするだけだったらそれこそTCPだけでもいい。 勉強としては、HTTPサーバにtelnetしてGETコマンド(と、いくつかのヘッダ)を打ち込んでみると、イメージがつかめるのではないかと。
601 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 19:28:25.64 ID:ksVOiCMkM.net] 半角久しぶりに来てんじゃん やっぱお前が釣らなきゃ盛り上がらんな
602 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 19:39:09.30 ID:sIA/07pT0.net] そろそろ知ったかマウント君はいなくなったかな?
603 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 19:44:22.79 ID:VRFV8oUEp.net] クソガキ多いねw
604 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 19:45:29.27 ID:o48XySPi0.net] 勉強したいならCで スティーブンス本で検索すれば、役に立つ書籍があるよ 使いたいだけならpostmanとかcurlでえんじゃね?
605 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 19:58:16.19 ID:/43gNJgrM.net] ファーwww
606 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 20:47:31.58 ID:FGHe46tu0.net] 半角くんとかvoidくんとかこのスレには個性的な人が多いねw
607 名前:デフォルトの名無しさん [2018/10/13(土) 20:15:38.78 ID:mLt7ea1s0.net] すみません、C言語出テキストファイルの特定行を書き換えたいのですが 全て配列に読み込む→変更する→全て書き戻す という方向しかないでしょうか。 変更前 01.txt a=1 b=1 c=1 変更後 01.txt a=1 b=0 c=1 こういった変更を行いたいです。
608 名前:デフォルトの名無しさん [2018/10/13(土) 20:23:20.71 ID:L3Dj2/gz0.net] 標準入力から1行ずつひたすら読み込む 特定行以外をひたすら同じ内容を標準出力に出力する 特定行だけ変更内容を標準出力に出力する できた
609 名前:デフォルトの名無しさん [2018/10/13(土) 20:36:09.45 ID:L3Dj2/gz0.net] aho.sh ---- #!/bin/bash aho < 01.txt > 01_tmp.txt mv -f 01_tmp.txt 01.txt 引数でファイル名を指定するどうでもいいことがどうしてもしたい場合は 一旦、プログラムでテンポラリファイルに書きだして プログラムで最後にmvする必要がある
610 名前:デフォルトの名無しさん [2018/10/13(土) 20:51:29.26 ID:L3Dj2/gz0.net] https://ideone.com/CYlw3P あとはテキトーにやりなさい
611 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 21:16:47.20 ID:f9khLXsZ0.net] >>590 その例みたいにサイズが変わらないなら直接書き換えることは可能
612 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 21:39:37.11 ID:bu3lDLSN0.net] >>590 そういうのはC言語ではやらないのが正解な。 どうせ逆ギレされると思うが、そう言われたことだけでも覚えておけ。
613 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 22:17:43.48 ID:2jvN7D8ra.net] >>593 voidがねえし
614 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 23:02:07.79 ID:3osNA+cUa.net] >>590 その方向しかない
615 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 23:32:20.23 ID:LnxaR5jgM.net] 「特定行」の定義は?
616 名前:デフォルトの名無しさん [2018/10/13(土) 23:33:28.10 ID:LwGfYqlW0.net] >>590 UNIXならmmap()、WindowsならCreateFileMapping()を使ってファイルの内容をメモリにマップするとか。
617 名前:デフォルトの名無しさん [2018/10/13(土) 23:34:05.47 ID:L3Dj2/gz0.net] 書いてあることをすべてCでやりたいなら コレでいける ぜんぶメモリにいれる必要はない @ 入力ファイル(01.txt)をリードオンリーでオープン A テンポラリファイル(出力ファイル)をmktemp()で取得 B Aで取得した出力ファイルをライトオンリーでオープン C 1行ずつ読み込んで1行ずつ書きこみ(>>593 ) D 入力ファイルと出力ファイルをクローズ E 入力ファイルをremove()で削除 F 出力ファイルをrename()で入力ファイルに移動 ものすごい大きいファイルが入力ファイルになった場合対応できない
618 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 01:05:48.11 ID:fk9HLJgw0.net] オフセットズレが発生するファイルの更新はファイルの全面書き出し以外に方法はない
619 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 01:17:59.64 ID:Xia0NB2F0.net] ファイル後ろの方だと大きなファイルでも部分的な書き直しで済むんだよね
620 名前:588 [2018/10/14(日) 02:24:40.11 ID:bBeuqmk90.net] 皆さん回答ありがとうございました。 やはり処理的にはすべて触らないとダメそうですね。 >>593 さんの例はfopenとか必要ないのですか。
621 名前:デフォルトの名無しさん [2018/10/14(日) 02:31:42.91 ID:VGDv0f/D0.net] なんとなくsedで済む話な気がする
622 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 02:52:55.98 ID:xvapfCASM.net] >>603 ファイル入出力ストリームなら必要 あの例は標準入出力を指定してるだけ すべて触る必要があるかはデータ構造次第 更新するデータ域をブロック分割、 ブロックマップをメタ管理とかは バイナリなら一般的な手法 テキストだとスペースパディングで ブロックやエントリ管理できそうだが そんなことやってる奴は見たことない
623 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 03:26:16.87 ID:rKkXAekW0.net] >>603 stdin から読むようになってるからシェルのコマンドラインからならリダイレクトで読ませれば良いだけだよ。
624 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 06:21:09.87 ID:1QMkRc1k0.net] cat 01.txt | sed s/b=1/b=0/
625 名前: mailto:sage [2018/10/14(日) 09:20:22.59 ID:1uKE5eLu0.net] >>596 スタートアップから渡される argc, argv を「使わない」のだから void なしが妥当なのでは?
626 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 09:33:04.94 ID:p/Li638e0.net] >>604 × なんとなく ○ ほぼ確実に 「Cで」「Cで」「Cで」、初心者はCしか出来ないからそれしか考えられない。(選択肢がない) 初心者あるあるだけども。 実際これ、Cで処理されてCバイナリを引き継がされても大迷惑だし。 >>590 マジな話、上司が居るのなら上司に聞けって。これ、Cでやったら大迷惑な話だし。 聞くのが迷惑だと思っているのなら、この件については聞かない(報告しない)ほうが迷惑だ。 上司が居なくてど初心者なら、この際にスクリプト言語を覚えろ。
627 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 09:38:03.86 ID:1QMkRc1k0.net] >>608 その論法でいうならvoidなし&返却値なしだな 純K&Rスタイル main() { /* do something */ exit(0); }
628 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 09:39:21.07 ID:1QMkRc1k0.net] 例の半角野郎がまた湧いたか、しつけーな 何が上司だ、ここはム板だぼけ
629 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 10:56:40.88 ID:8TmCYtNe0.net] >>608 引数 void って初めて見たぞ。文法的にありなのかこれ?
630 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 10:58:50.59 ID:br2DRGrhM.net] 未だ許されないvoidおじ o.8ch.net/1i7w.png
631 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 12:19:08.18 ID:vwPmx6lGM.net] 特定行の書き換えですが ・bの値を反転させたい(0なら1、1なら0) ・b=の行は複数出現する可能性がある() ・複数出現した場合は一番最後に出現した行の値を反転の対象にしたい ・書き換え後はb=の行は1行だけにしたい ・書き換え後はできれば a=... b=... c=... な感じでソートしててほしい これはC言語で出来ますか? どうやったらいいでしょうか?
632 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 13:29:01.06 ID:p/Li638e0.net] >>614 「出来る/出来ない」なら、そりゃC言語で「出来ない」って事ははほぼ全ての事例で無いよ。 どうやったらいいか、なら、その場合は俺ならExcel使うね。規模的に無理ならシェルスクリプトを使う。 何でもCでやればいいわけではない。 そのお題を実際にCでやる事なんて無いから、練習用なら意味無いし、 本番としてそれをCでやる気なら、間違ってるから止めとけ。
633 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 13:32:34.90 ID:oxI7rgHj0.net] >>590 の続きなのか >>614 ソートするなら全て読み出すのが一番楽だよ
634 名前:デフォルトの名無しさん [2018/10/14(日) 14:42:07.27 ID:Q3eQCyRU0.net] コードの書き方みたいなこんなもんを上司に聞けとか よくわからんが、協力会社で入ってるリーダーかなんかか。。。 すげえな、そういった会社の文化をオレは知らないが そもそもそんなとこが未教育なゴミつれてきたら大問題だからな 必死になるのも分かるわ で、だれでもすぐ分かってるコマンド書いてドヤ顔して低学歴もいるしな
635 名前:デフォルトの名無しさん [2018/10/14(日) 14:43:20.19 ID:Q3eQCyRU0.net] この程度ならCで書いても 普通にCで書く練習になる
636 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 14:46:42.49 ID:vwPmx6lGM.net] Excelで手作業とかは論外です シェル芸でもいいです 誰かできませんか?
637 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 14:48:14.42 ID:b97yHnkE0.net] >>619 どこまで書いたのか、現状のコードを貼ってみなよ
638 名前:デフォルトの名無しさん [2018/10/14(日) 14:48:35.94 ID:Q3eQCyRU0.net] sedとsort使えばいい
639 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 15:12:45.83 ID:p/Li638e0.net] >>619 お前以外のみんな出来るっての。 お前がコードクレクレ君だからみんな適当にあしらってる。 お前が努力してる(=コードを試しに書いてみたが動かない)のなら、もう少しましな回答も出るだろうさ。
640 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 16:43:39.96 ID:vwPmx6lGM.net] ロジックだけでも教えてください
641 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 17:39:13.57 ID:+7qWkF0t0.net] こんな感じでどうかな ・空行はそのまま出力されてしまう ・代入文は1行に1文のみで X=n の形式 が前提だけど awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' a | sort -u
642 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 17:41:50.05 ID:+7qWkF0t0.net] あ、a はファイルね
643 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 17:46:59.25 ID:+7qWkF0t0.net] -u はいらんかったな
644 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 17:52:44.40 ID:El+yY4uS0.net] >>623 tacで逆順出力、sedで初回マッチのみ置換、sortでソート出力
645 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 18:07:48.33 ID:+7qWkF0t0.net] tac なんてコマンドがあるんだな、サンキュー sed 使った場合、0と1の交換と、初回マッチ分以外は出力しないようにするの、難しくない?
646 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 18:31:52.87 ID:hWarSIQ50.net] Ruby で作った text = File.read 'data.txt' ary = [ ]; index = [ ] text.each_line.with_index do | line, idx | # 各行・添字 line.chomp! # 末尾の改行を削除する ary.push line # 各行を配列に入れる # 先頭文字列が、b= なら、添字を配列に入れる index.push idx if line.start_with? 'b=' end return if index.empty? # 空配列なら処理なし first = true # 最初の1回だけ処理する index.reverse!.each do | num | # 後ろから削除するために、反転する if first # 最初の1回だけ first = false case ary[ num ][ 2 ] # 3文字目 when "0" then ary[ num ][ 2 ] = "1" when "1" then ary[ num ][ 2 ] = "0" else # 処理なし end else # 2回目以降は削除する ary.delete_at num end end puts ary
647 名前:デフォルトの名無しさん mailto:sage [2018/10/15(月) 00:34:33.53 ID:FbFcpKzK0.net] Rubyもいいけど、こういう小規模な操作にはシェルスクリプトとかが適してる気がする。
648 名前:デフォルトの名無しさん mailto:sage [2018/10/15(月) 02:17:02.27 ID:Obfj9PeS0.net] >>614 の内容だけど、誰も聞かないのであえて聞くけど b=以外は何も加工せずに複数あればそのまま出力で良いのか? その場合、ソートは=の右側の数値順にするのか、文字コード順にするのかか データによっては、a=、c=、d=の行が多数出力される中でb=の行だけ1行になる ってことで良いのかな?
649 名前:デフォルトの名無しさん mailto:sage [2018/10/15(月) 03:03:29.36 ID:E6pr56BO0.net] 私たち日本人の、日本国憲法を改正しましょう。 総ム省の、『憲法改正國民投票法』、でググって みてください。拡散も含め、お願い致します。
650 名前:デフォルトの名無しさん [2018/10/15(月) 23:43:48.26 ID:KnJWry7m0.net] @ [出力A] a=とc=を抽出(使うコマンド:grep) A [出力B] b=0の1〜末尾-1行を抽出 (使うコマンド:grep|head) B [出力C] b=1の1〜末尾-1行を抽出 (使うコマンド:grep|head) C [出力D] b=0の末尾行を抽出し置換 (使うコマンド:grep|tail|sed) D [出力E] b=1の末尾行を抽出し置換 (使うコマンド:grep|tail|sed) E [出力F] [出力B]、[出力E]、[出力C]、[出力D]コンカチネーションしユニークにする (使うコマンド:cat|uniq) F 出力結果 [出力A]と[出力F]をコンカチネーションしソート(使うコマンド:cat|sort) とりあえずコレでいけるハズ あとはがんばりなさい
651 名前:デフォルトの名無しさん mailto:sage [2018/10/15(月) 23:53:21.52 ID:9a9m7auH0.net] sedだけでやってみてくれや
652 名前:デフォルトの名無しさん [2018/10/15(月) 23:59:03.51 ID:KnJWry7m0.net] だけでやるとはオレは一言もいってない 使うコマンドを限定した覚えはない
653 名前:612 mailto:sage [2018/10/16(火) 00:22:11.79 ID:NB8XYwuTM.net] ソートはa,b,c...順です b=以外は重複を許可します(ソート後の出現順は考慮しなくてよい) (処理例 入力データ c=0 a=1 b=1 c=1 a=0 b=0 出力データ a=1 a=0 b=1 c=0 c=1
654 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 00:40:38.52 ID:xERlP6Woa.net] チューリングマシンならなんでもできて当たり前なんや
655 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 00:47:20.35 ID:HI3tJEA90.net] Cのプリプロセッサも計算完備だしな。誰かがcppでフィボナッチ数列出力してたな そういや
656 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 00:55:44.02 ID:gETK/lfa0.net] こんなんではどうかな sed -e ":l; N; s/\nb=[01]\n/\n/1; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}"
657 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 01:01:42.59 ID:gETK/lfa0.net] bが1行しかないとうまく行かないな ちょっと手直し sed -e ":l; N; /b=.*b=/{;s/\nb=[01]\n/\n/1;}; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}" 並び替えはsortでやってください