C言語なら俺に聞け 148

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
垢版 |
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/10/05(金) 12:22:47.81ID:NVTQRcnQa
>>524
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
538デフォルトの名無しさん (スップ Sd00-t0aP)
垢版 |
2018/10/05(金) 12:23:53.35ID:G8OY4AG7d
そこは教え方の上手なあなたが教えてあげれば良い事だな
2018/10/05(金) 12:50:10.63ID:cQzHZ22n0
>>537
歴史に残る名言だなw
540デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
垢版 |
2018/10/05(金) 12:50:15.78ID:qaFHFmCDa
>>537
それ、もういいですから。
2018/10/05(金) 13:01:08.97ID:vpbu8eze0
clear > log
cat log

Linux の基本コマンドも知らないような奴が、C をやるな!
10年勉強してからやれ
2018/10/05(金) 13:01:39.72ID:6zSKEd8l0
>>533
>>527 で言ってるのは >>524 の実行とは別の話。
画面を消す方法の正体を調べる手順だから、ヒマな時にやればいい。

>>534
宣言はコンパイル時に解釈されるもので、実行時に「宣言という動作」を行っているわけじゃない。
だから実行時にかかるコストは無いから、ループの中に書いてもいい。
C は変数が見える範囲(スコープ)が { } の中になってる。
minute と second は while で回してる { } の中でしか使ってなく、かつ表示のための一時的な変数だから、それを必要とする範囲内だけで見えるようにすると分かりやすくなる。
変数のスコープは極力狭くなるように書くといいよ。
分かりやすさの点でもいいし、メモリ(スタック)の消費量も少なくなる。

正確なタイマーを作るならインターバルタイマーで調べてみるといいけど、まだそれを使えるレベルじゃないと思う。

>>536
curses ってなに?
543デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
垢版 |
2018/10/05(金) 13:03:13.60ID:qaFHFmCDa
>>534
1秒ごとに setitimer() とか使って割り込み掛かればいいんだけどね、普通のOSだとあまり正確にではないかも知れない。しかしただsleepするよりは正確だと思う。

割り込み使わないやり方で今と似ているけどましなやり方は次の処理開始時間までより正確に sleep することだ。
これは gettimeofday() でμ秒までの時刻を取得して秒が変わるまで何μ秒なのか計算して usleep() で sleep させればできる。
2018/10/05(金) 13:11:04.98ID:6zSKEd8l0
curses ってライブラリか。
面白そうだな。
2018/10/05(金) 13:31:56.77ID:DxqDA2/Ip
>>542
変数の宣言はコンパイル時に解釈されているのですね。わかりました。

「set number」と「syntax on」を初期設定にするにはどうすればいいですか?
2018/10/05(金) 13:33:35.60ID:DxqDA2/Ip
あと、インターバルタイマーも調べて起きます。
2018/10/05(金) 16:55:26.05ID:NK5dBb8n0
>>545
printf '%s\n%s\n' 'set number' 'syntax on' >> ~/.vimrc
2018/10/05(金) 16:56:30.81ID:NK5dBb8n0
ていうかエディタの名前くらい書け。
まあset numberという設定名のエディタはVimくらいしか思い付かんが。
2018/10/06(土) 10:59:41.46ID:YTpMAVXmM
そこはggrksだろ

なに遊ばれとんねん
2018/10/08(月) 11:16:41.41ID:5icYsRLJ0
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 型を代入していました。
2018/10/08(月) 13:21:40.69ID:i8/5B6xca
関数がないじゃん
2018/10/08(月) 13:57:42.90ID:wqzMNkqt0
そもそもコンパイルできなかったのでは?
構造体のメンバにB4〜B7みたいな定義済みの定数は書けないよ。
2018/10/08(月) 14:22:18.67ID:NcWFD+EU0
Cってネットワーク系のコマンド作るのに向いてる?
2018/10/08(月) 14:26:06.72ID:i8/5B6xca
ネットワーク系のコマンドというのが意味不明だが、socketインターフェースはある。
向いてるかといえば向いてないが、そういう低レイヤの話としては言語は何を使っても大して変わらん様な気はする。
555デフォルトの名無しさん (アウアウウー Sab5-Gru0)
垢版 |
2018/10/08(月) 14:31:56.89ID:meeyxWTYa
REST APIなら libcurl で楽々よ
2018/10/08(月) 14:51:03.67ID:FGHe46tu0
ビットコのbot殆どがPythonやNode.jsばっかだけど
libcurl使えばスクリプト言語並みに簡単に使えるよね
2018/10/08(月) 15:10:37.99ID:NcWFD+EU0
なるほどソケットっていうのもあるのか。
無知なもので「ネットワークコマンド」と言えばwgetやらcurlやらのTCPクライアントだけを指すと思ってたw
curlってコマンドだけじゃなくてlibcurlも提供してくれてるんだね。
だったらpure CでもTCPクライアントが作れそう。
2018/10/08(月) 15:53:56.39ID:i8/5B6xca
言葉の話だけどcurlは基本的にはHTTPクライアントだ。TCPの上に乗ってる。
TCPクライアントはtelnetとかncだな。ncはUDPも行ける。
TCPも基本的には難しくないが、異常系を考え出すときりがない。
2018/10/08(月) 16:51:30.03ID:wTnfR6Jf0
大昔ソケットレベルから自前でHTTPクライアント作ったことある
TCPプロトコルを学ぶ良い勉強になるよ
560デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 16:56:21.14ID:SHTmPUE+0
相変わらず低学歴知恵遅れは頭悪いこといってるわ
ソケット通信でTCPプロトコルとか

オマエがソケット通信でやりとりしてんのはHTTP

ホントななんでココまで頭悪いのしかいないのか不思議
561デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:00:43.05ID:SHTmPUE+0
トランスファープロトコルにTCP/IP使ってるといっても
きっとこのスレの低学歴知恵遅れは意味が分からない

smtpもftpもほとんどが普通にtcp/ipだからな

いまどきのnetbiosも普通にtcp/ipだからな
昔はトランスファープロトコルにnetbeuiつかってた
で、今ではnetbios over tcp/ipで
nbtとかなんとかいってる
2018/10/08(月) 17:32:32.71ID:i8/5B6xca
>>561
知らんテクニカルタームは使うときに確認しろよ
563デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:34:14.12ID:SHTmPUE+0
また低学歴知恵遅れが意味不明ないちゃんもんとけてるし
先にいっとくけどな
とてつもなく頭悪いこといってんのオマエだからな

まずその自覚がない
564デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:35:52.31ID:SHTmPUE+0
pop3もtcp/ip
sshもtcp/ip
httpsもtcp/ip

きっとな低学歴知恵遅れには
なにをいってるのいかが分からないとは思うわ
565デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:37:36.24ID:SHTmPUE+0
ホントな低学歴知恵遅れは
頭悪いことを自信満々でいうから困るわ
2018/10/08(月) 17:44:32.09ID:BtXxUchaM
基本情報どころかITパスポート程度の知識でドヤってるのか
低学歴知遅れ君は
567デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:47:16.60ID:SHTmPUE+0
それにすら到達してない低学歴知恵遅れが
ドヤってるスレがこの板だからな

マジで低学歴知恵遅れはこの板から排除したほうがいい
有害
2018/10/08(月) 17:48:30.52ID:i8/5B6xca
じゃあ「トランスファープロコトル」ってなんだか説明してくれよ…
なんだよ「ソケット通信でHTTP」って。
569デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:50:22.69ID:SHTmPUE+0
HTTPというのは
ハイパーテキストトランスファー プ ロ ト コ ル
だからな

ソケット通信(トランスファープロトコル意識する必要ない)で
HTTPの内容してるだけだ

わかった?
570デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:51:32.47ID:SHTmPUE+0
ソケット通信でHTTPの内容をヤリトリしてるのすら分かってないワケだからな
ここまで頭悪いと話にならない
2018/10/08(月) 17:51:37.49ID:BtXxUchaM
低学歴知遅れ君ってプロトコルの意味を理解してなさそう
572デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:52:10.92ID:SHTmPUE+0
で、低学歴知恵遅れの負けず嫌いは半端ないからな
573デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/08(月) 17:52:42.31ID:SHTmPUE+0
これ以上語るつもりはない
2018/10/08(月) 17:55:15.29ID:o/CKA6Eq0
昨日読んだTCPの本がよっぽど気に入ったんだね
2018/10/08(月) 17:59:44.79ID:i8/5B6xca
だからなんだよ「トランスファープロトコル」って
2018/10/08(月) 18:24:47.89ID:wTnfR6Jf0
TCP Transmission Control Protocol
IP   Internet Protocol

トランスポート層 TCP, UDP, DCCP, SCTP, IL, RUDP

似たような言葉はあるが、その表現は見つからないな
並行宇宙のどこかで使っているかもしれないが
ここではなさそうだ
2018/10/08(月) 18:25:27.11ID:NcWFD+EU0
あー。TCPというのはHTTPよりもう少し下層に位置する概念ってことかな?(合ってるか不安)
俺が作りたいなぁと思ったのは
$ xxx 'example.com'
とやるとブラウザでexample.comにアクセスして「ページのソースを表示する」機能を使ったときのような出力を返すコマンド。
これはTCPクライアントじゃなくてHTTPクライアントか。
2018/10/08(月) 18:27:46.37ID:wTnfR6Jf0
>>577
そう
普通はHTTPプロトコルのGETメソッド使う
POSTでも良いが、設定が多少複雑になる
2018/10/08(月) 18:29:18.08ID:lYyho1IC0
「トランスファープロトコル」は星の数ほどある「〜転送プロトコル」の用語として使われるけど、トランスファープロトコル単体で使用されてるのは聞いたことないね。
きっとトランスポートプロトコルの間違い。
2018/10/08(月) 18:29:27.24ID:wTnfR6Jf0
あ、下層というよりもアプリケーション層ですね
2018/10/08(月) 18:42:58.85ID:i8/5B6xca
>>577
まあGETするだけだったらそれこそTCPだけでもいい。
勉強としては、HTTPサーバにtelnetしてGETコマンド(と、いくつかのヘッダ)を打ち込んでみると、イメージがつかめるのではないかと。
2018/10/08(月) 19:28:25.64ID:ksVOiCMkM
半角久しぶりに来てんじゃん
やっぱお前が釣らなきゃ盛り上がらんな
2018/10/08(月) 19:39:09.30ID:sIA/07pT0
そろそろ知ったかマウント君はいなくなったかな?
2018/10/08(月) 19:44:22.79ID:VRFV8oUEp
クソガキ多いねw
2018/10/08(月) 19:45:29.27ID:o48XySPi0
勉強したいならCで
スティーブンス本で検索すれば、役に立つ書籍があるよ
使いたいだけならpostmanとかcurlでえんじゃね?
2018/10/08(月) 19:58:16.19ID:/43gNJgrM
ファーwww
2018/10/08(月) 20:47:31.58ID:FGHe46tu0
半角くんとかvoidくんとかこのスレには個性的な人が多いねw
588デフォルトの名無しさん (ワッチョイ 27cc-smg0)
垢版 |
2018/10/13(土) 20:15:38.78ID:mLt7ea1s0
すみません、C言語出テキストファイルの特定行を書き換えたいのですが
全て配列に読み込む→変更する→全て書き戻す
という方向しかないでしょうか。

変更前 01.txt
a=1
b=1
c=1

変更後 01.txt
a=1
b=0
c=1

こういった変更を行いたいです。
589デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/13(土) 20:23:20.71ID:L3Dj2/gz0
標準入力から1行ずつひたすら読み込む
特定行以外をひたすら同じ内容を標準出力に出力する
特定行だけ変更内容を標準出力に出力する

できた
590デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/13(土) 20:36:09.45ID:L3Dj2/gz0
aho.sh
----
#!/bin/bash
aho < 01.txt > 01_tmp.txt
mv -f 01_tmp.txt 01.txt

引数でファイル名を指定するどうでもいいことがどうしてもしたい場合は
一旦、プログラムでテンポラリファイルに書きだして
プログラムで最後にmvする必要がある
591デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/13(土) 20:51:29.26ID:L3Dj2/gz0
https://ideone.com/CYlw3P
あとはテキトーにやりなさい
2018/10/13(土) 21:16:47.20ID:f9khLXsZ0
>>588
その例みたいにサイズが変わらないなら直接書き換えることは可能
2018/10/13(土) 21:39:37.11ID:bu3lDLSN0
>>588
そういうのはC言語ではやらないのが正解な。
どうせ逆ギレされると思うが、そう言われたことだけでも覚えておけ。
2018/10/13(土) 22:17:43.48ID:2jvN7D8ra
>>591
voidがねえし
2018/10/13(土) 23:02:07.79ID:3osNA+cUa
>>588
その方向しかない
2018/10/13(土) 23:32:20.23ID:LnxaR5jgM
「特定行」の定義は?
597デフォルトの名無しさん (ワッチョイ bf3a-DKnb)
垢版 |
2018/10/13(土) 23:33:28.10ID:LwGfYqlW0
>>588
UNIXならmmap()、WindowsならCreateFileMapping()を使ってファイルの内容をメモリにマップするとか。
598デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/13(土) 23:34:05.47ID:L3Dj2/gz0
書いてあることをすべてCでやりたいなら
コレでいける
ぜんぶメモリにいれる必要はない

@ 入力ファイル(01.txt)をリードオンリーでオープン
A テンポラリファイル(出力ファイル)をmktemp()で取得
B Aで取得した出力ファイルをライトオンリーでオープン
C 1行ずつ読み込んで1行ずつ書きこみ(>>591
D 入力ファイルと出力ファイルをクローズ
E 入力ファイルをremove()で削除
F 出力ファイルをrename()で入力ファイルに移動

ものすごい大きいファイルが入力ファイルになった場合対応できない
2018/10/14(日) 01:05:48.11ID:fk9HLJgw0
オフセットズレが発生するファイルの更新はファイルの全面書き出し以外に方法はない
2018/10/14(日) 01:17:59.64ID:Xia0NB2F0
ファイル後ろの方だと大きなファイルでも部分的な書き直しで済むんだよね
601588 (ワッチョイ 27cc-smg0)
垢版 |
2018/10/14(日) 02:24:40.11ID:bBeuqmk90
皆さん回答ありがとうございました。
やはり処理的にはすべて触らないとダメそうですね。
>>591さんの例はfopenとか必要ないのですか。
602デフォルトの名無しさん (ワッチョイ dfd2-7vHE)
垢版 |
2018/10/14(日) 02:31:42.91ID:VGDv0f/D0
なんとなくsedで済む話な気がする
2018/10/14(日) 02:52:55.98ID:xvapfCASM
>>601
ファイル入出力ストリームなら必要
あの例は標準入出力を指定してるだけ

すべて触る必要があるかはデータ構造次第
更新するデータ域をブロック分割、
ブロックマップをメタ管理とかは
バイナリなら一般的な手法
テキストだとスペースパディングで
ブロックやエントリ管理できそうだが
そんなことやってる奴は見たことない
2018/10/14(日) 03:26:16.87ID:rKkXAekW0
>>601
stdin から読むようになってるからシェルのコマンドラインからならリダイレクトで読ませれば良いだけだよ。
2018/10/14(日) 06:21:09.87ID:1QMkRc1k0
cat 01.txt | sed s/b=1/b=0/
2018/10/14(日) 09:20:22.59ID:1uKE5eLu0
>>594
スタートアップから渡される argc, argv を「使わない」のだから void なしが妥当なのでは?
2018/10/14(日) 09:33:04.94ID:p/Li638e0
>>602
× なんとなく
○ ほぼ確実に

「Cで」「Cで」「Cで」、初心者はCしか出来ないからそれしか考えられない。(選択肢がない)
初心者あるあるだけども。
実際これ、Cで処理されてCバイナリを引き継がされても大迷惑だし。

>>588
マジな話、上司が居るのなら上司に聞けって。これ、Cでやったら大迷惑な話だし。
聞くのが迷惑だと思っているのなら、この件については聞かない(報告しない)ほうが迷惑だ。
上司が居なくてど初心者なら、この際にスクリプト言語を覚えろ。
2018/10/14(日) 09:38:03.86ID:1QMkRc1k0
>>606
その論法でいうならvoidなし&返却値なしだな
純K&Rスタイル

main()
{
/* do something */
exit(0);
}
2018/10/14(日) 09:39:21.07ID:1QMkRc1k0
例の半角野郎がまた湧いたか、しつけーな
何が上司だ、ここはム板だぼけ
2018/10/14(日) 10:56:40.88ID:8TmCYtNe0
>>606
引数 void って初めて見たぞ。文法的にありなのかこれ?
2018/10/14(日) 10:58:50.59ID:br2DRGrhM
未だ許されないvoidおじ
2018/10/14(日) 12:19:08.18ID:vwPmx6lGM
特定行の書き換えですが
・bの値を反転させたい(0なら1、1なら0)
・b=の行は複数出現する可能性がある()
・複数出現した場合は一番最後に出現した行の値を反転の対象にしたい
・書き換え後はb=の行は1行だけにしたい
・書き換え後はできれば
a=...
b=...
c=...
な感じでソートしててほしい

これはC言語で出来ますか?
どうやったらいいでしょうか?
2018/10/14(日) 13:29:01.06ID:p/Li638e0
>>612
「出来る/出来ない」なら、そりゃC言語で「出来ない」って事ははほぼ全ての事例で無いよ。
どうやったらいいか、なら、その場合は俺ならExcel使うね。規模的に無理ならシェルスクリプトを使う。
何でもCでやればいいわけではない。

そのお題を実際にCでやる事なんて無いから、練習用なら意味無いし、
本番としてそれをCでやる気なら、間違ってるから止めとけ。
2018/10/14(日) 13:32:34.90ID:oxI7rgHj0
>>588の続きなのか

>>612
ソートするなら全て読み出すのが一番楽だよ
615デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/14(日) 14:42:07.27ID:Q3eQCyRU0
コードの書き方みたいなこんなもんを上司に聞けとか
よくわからんが、協力会社で入ってるリーダーかなんかか。。。
すげえな、そういった会社の文化をオレは知らないが

そもそもそんなとこが未教育なゴミつれてきたら大問題だからな
必死になるのも分かるわ

で、だれでもすぐ分かってるコマンド書いてドヤ顔して低学歴もいるしな
616デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/14(日) 14:43:20.19ID:Q3eQCyRU0
この程度ならCで書いても
普通にCで書く練習になる
2018/10/14(日) 14:46:42.49ID:vwPmx6lGM
Excelで手作業とかは論外です
シェル芸でもいいです
誰かできませんか?
2018/10/14(日) 14:48:14.42ID:b97yHnkE0
>>617
どこまで書いたのか、現状のコードを貼ってみなよ
619デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/14(日) 14:48:35.94ID:Q3eQCyRU0
sedとsort使えばいい
2018/10/14(日) 15:12:45.83ID:p/Li638e0
>>617
お前以外のみんな出来るっての。

お前がコードクレクレ君だからみんな適当にあしらってる。
お前が努力してる(=コードを試しに書いてみたが動かない)のなら、もう少しましな回答も出るだろうさ。
2018/10/14(日) 16:43:39.96ID:vwPmx6lGM
ロジックだけでも教えてください
2018/10/14(日) 17:39:13.57ID:+7qWkF0t0
こんな感じでどうかな
 ・空行はそのまま出力されてしまう
 ・代入文は1行に1文のみで X=n の形式
が前提だけど

awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' a | sort -u
2018/10/14(日) 17:41:50.05ID:+7qWkF0t0
あ、a はファイルね
2018/10/14(日) 17:46:59.25ID:+7qWkF0t0
-u はいらんかったな
2018/10/14(日) 17:52:44.40ID:El+yY4uS0
>>621
tacで逆順出力、sedで初回マッチのみ置換、sortでソート出力
2018/10/14(日) 18:07:48.33ID:+7qWkF0t0
tac なんてコマンドがあるんだな、サンキュー
sed 使った場合、0と1の交換と、初回マッチ分以外は出力しないようにするの、難しくない?
2018/10/14(日) 18:31:52.87ID:hWarSIQ50
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
2018/10/15(月) 00:34:33.53ID:FbFcpKzK0
Rubyもいいけど、こういう小規模な操作にはシェルスクリプトとかが適してる気がする。
2018/10/15(月) 02:17:02.27ID:Obfj9PeS0
>>612の内容だけど、誰も聞かないのであえて聞くけど
b=以外は何も加工せずに複数あればそのまま出力で良いのか?
その場合、ソートは=の右側の数値順にするのか、文字コード順にするのかか
データによっては、a=、c=、d=の行が多数出力される中でb=の行だけ1行になる
ってことで良いのかな?
2018/10/15(月) 03:03:29.36ID:E6pr56BO0
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
631デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/15(月) 23:43:48.26ID:KnJWry7m0
 @ [出力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)

とりあえずコレでいけるハズ
あとはがんばりなさい
2018/10/15(月) 23:53:21.52ID:9a9m7auH0
sedだけでやってみてくれや
633デフォルトの名無しさん (ワッチョイ e780-gma9)
垢版 |
2018/10/15(月) 23:59:03.51ID:KnJWry7m0
だけでやるとはオレは一言もいってない
使うコマンドを限定した覚えはない
2018/10/16(火) 00:22:11.79ID:NB8XYwuTM
ソートは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
2018/10/16(火) 00:40:38.52ID:xERlP6Woa
チューリングマシンならなんでもできて当たり前なんや
2018/10/16(火) 00:47:20.35ID:HI3tJEA90
Cのプリプロセッサも計算完備だしな。誰かがcppでフィボナッチ数列出力してたな そういや
■ このスレッドは過去ログ倉庫に格納されています