- 締切済み
0
0 10 0 13 ・ ・ ・ という数字が1万行近く続くテキストファイルがあるのですが、実際使用するデータが偶数行の数字のみなので、奇数行を消してしまいたいのですが、膨大な量なので手作業では非常に時間がかかります。 ですので、奇数行だけを消すC言語のプログラムを作りたいのですが、どのような構造にすれば良いのかご教授お願いします。 またそれ以外の簡単な方法があるのでしたら、そちらの方法をおねがいします。 OSはLinuxを使っています。
- johoplease
- お礼率0% (0/3)
- C・C++・C#
- 回答数3
- ありがとう数0
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
Linuxを使っているのなら、GNU sedが入っているはずなので sed -n '2~2p' < 入力ファイル > 出力ファイル # man sed に「奇数行だけ表示」の例が載っています。そこから偶数行用に変更しました。 sedがGNU sedでないのなら、 awk を使って awk '(NR % 2 == 0) {print;}' < 入力ファイル > 出力ファイル またはperlで perl -ne 'print if ($. % 2 == 0 );' < 入力ファイル > 出力ファイル こんな作業にわざわざCでプログラム作るのは、時間と手間とディスク領域がもったいないです。
- notnot
- ベストアンサー率47% (4847/10260)
>どのような構造にすれば良いのか 全部読んで偶数行だけ出力します。 案1: while( fgets(buf, sizeof buf, stdin) && fgets(buf, sizeof buf, stdin) ){ fputs(buf, stdout); } 案2: int n=0; while( fgets(buf, sizeof buf, stdin) ){ n++; if( n % 2 == 0 ){ fputs(buf, stdout); } } 案1は手抜きなので、入力ファイルが奇数行だと期待通りの動作にはなりませんが。そこまで対応すると「案1改」のようなものを作らないといけません。ま、普通は案2ですね。
- D-Matsu
- ベストアンサー率45% (1080/2394)
シェルスクリプトでいいんじゃないかなーとか。 #!/bin/sh FILE = ${1} while read LINE do if [ $FLG = "TRUE" ]; then echo $LINE FLG = "FALSE" else FLG = "TRUE" fi done #動作テストはしてません。
関連するQ&A
- エクセルデータをテキストに移す方法
エクセルのデータをテキストに移す方法を教えてください。 例えばエクセルの1行目~100行目までデータがあるとして、その100個のデータを100個のテキストファイルにそれぞれ入れてくれるソフトがあれば教えていただきたいです。 1行のデータを1つのテキストファイルに移すという作業です。 コピペすれば済む話ですが数が膨大なので、時間がかかりすぎます。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- C言語初心者過ぎてわからないです
エクセルのCSVデータなんですが 1行目のデータを 1行目から5行目まで同じデータ 6行目のデータを 6行目から10行目まで同じデータ 10行目のデータを 10行目から15行目まで同じデータ 以上のような作業を繰り返し元のCSVのデータをすべて5行(つまりデータの量は5倍)にしたいのですが C言語でこのような作業を行うファイルをつくるにはC言語ではどのようなプログラムになるでしょうか
- ベストアンサー
- C・C++・C#
- C言語の関数について困っています
こんにちは。 C言語で、テキストファイルの行数を数える関数があれば教えて頂けないでしょうか。例えば、以下の3行を含んでいるテキストファイルを対象としたとすれば 123465789123456789 1234567981234579 987654321987654321 関数を実行すれば、3という数字が得られ、 123456 789 123546879 123 123 456789123 123456789123 というテキストファイルであれば、4という数字が得られる。そんな関数をご存知な方は私にご教授願えないでしょうか。どうぞよろしくお願いします。
- 締切済み
- C・C++・C#
- iWork09、Numbersの質問です。
iWork09、Numbersの質問です。 1 5 9 2 6 10 3 7 11 4 8 12 という容量で縦に複数行に股がって各項目がプロットされたテキストデータがあるのですが、 これを各項目それぞれを別々のセルにコピーペーストするにはどう操作をすればよいのでしょうか? データ量が膨大な量なので手作業をする訳にも行きません。 どなたか教えて下さい
- ベストアンサー
- Mac
- ファイルからのデータ読み込み方法について
はじめまして、数ヶ月前からC言語を始めたものです。 ファイルからのデータ読み込みについて質問です。 テキストファイルとして以下のようなものがあります。 ************************* 23 3346 45 423 34 23 345 45 56 6345 ・・・ ・・・ ************************* このようなファイルから読み込みを行って、スペース毎の数字(整数型)を構造体の中の変数に順次格納していくようなプログラムを作りたいとおもうのですがどのように行ったらいいのでしょうか? 現在、fgets()で行ごとの文字列を読み込んでから、型変換を行おうと心みているのですが、うまくいきません。 回答よろしくお願いします。
- 締切済み
- C・C++・C#
- C言語のテキストファイルの読込み
必要に迫られてC言語でテキストファイルの読込みを行う プログラムを作成しなければならなくなりました。 whileとfscanfを用いて書式を指定して一行ずつ読込むことができる ということは知っていますが、その際、たとえば読み込むファイルが 20行のテキストファイルだったとして、10行目から読込みを 行いたい場合はどのようにプログラムを書けばいいのでしょうか? なにぶんC言語初心者ですのでよろしくお願いします。
- ベストアンサー
- C・C++・C#
- C言語での、テキストファイル読み込みについて
30行×30列の数字が記載されてテキストファイルがあり、 それをC言語で例えばA[ ][ ]といった配列に読み込みたいのですが、 どうすればよいでしょうか? fscanf関数を用いればできないことはないと思うのですが、 30個も書かなければならないのは冗長なので・・・。 なにかよい方法はありますでしょうか?
- ベストアンサー
- C・C++・C#
- エクセル上の8桁の数字を一括して日付に変換する方法を教えて下さい。
エクセル上の8桁の数字を一括して日付に変換する方法を教えて下さい。 ダウンロードしたエクセルデータのA列に日付として8桁の数字が入っているのですが、文字列として認識してるようで日付に変換出来ません。 例えば2010年1月1日の欄には20100101と入っていて、2001/01/01と変換したいのですがどうすればいいでしょうか。 セルの書式設定→表示形式→ユーザー定義で試してみましたが上手くいきませんでした。 データの量が何千行もあって膨大なので、1行ずつスラッシュを入れていくという作業は出来ません。 8桁の数字を一括して日付に変換出来る方法はあるのでしょうか。 教えて下さい。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- C言語のプログラムについて質問です。
C言語初心者で困っています。 テキストデータの上から3行分を飛ばして、4行目から読み込むようにするにはどのようなプログラムを書けば良いでしょうか? ちなみにデータは2列、100003行あります。 よろしくお願いします。
- ベストアンサー
- C・C++・C#