
C言語のプログラム中に使うsystem()関数に変数を使う場合
system("sort < a.txt |uniq >aa.txt");
という関数を使うと
テキストファイル a.txt は編集(sort,uniqにより)され aa.txt となるのですが
このファイル名を変数として扱いたいので
char str[255];
for(z=0; z<255; z++){
sprintf(str,"sort < %d.txt |uniq >0%d.txt", z, z);
system(str);
}
という形にすると
0.txt → 00.txt 1.txt → 01.txt と255.txtまで編集されると思ったのですが
編集後のファイルが白紙で現れてしまいます。
system("sort < a.txt |uniq >aa.txt");
のファイル名に変数を扱い
複数のファイルの編集をするためには
どのようなプログラムを作成すると良いのでしょうか?
ご回答よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
一度、systemは使わず、
sprintf(str,"sort < %d.txt |uniq >0%d.txt", z, z);
ではなく
printf("sort < %d.txt |uniq >0%d.txt\n", z, z);
で出力が正しいことを確認した上で
a.out | sh
で実行するとか
↓のようにシェルスクリプトで作るとか
#!/bin/sh
n=0
while [ n -le 255 ]
do
sort < $n.txt |uniq > 0$n.txt
n=`expr $n + 1`
done
ご回答ありがとうございます。
自分が思っていた以上に
難しいやり方をしていたんだと感じました。
教えて頂いたやり方を参考に
理解したいと思います。
No.4
- 回答日時:
たとえば 0.txt ファイルが
111
000
222
555
000
444
222
000
更に 1.txtファイルが
123
012
234
567
012
456
234
012
とするとき、次のプログラムを実行し、作成された 00.txt ならびに 01.txt を確認してみてください。
なお、エラーチェックはしていないので、付加してください。
/* source file: s310.c
compile: gcc s310.c
execution: ./a.out txt 2
ファイル名 txt およびファイル数 2 は、環境に応じて変更のこと。
*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int z, n;
char str[255], *c;
n = atoi(argv[--argc]);
c = argv[--argc];
for(z = 0; z < n; z++) {
sprintf(str, "sort -u <%d.%s >%02d.%s\n", z, c, z, c);
// printf(str);
system(str);
}
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
ファイル名の一部をbatで変更し...
-
ファイルの最後に文字列挿入
-
拡張子を元に戻す
-
エクセルの各セルの内容をそれ...
-
Windowsのバッチファイルを利用...
-
COPYコマンドで結合すると余計...
-
forfilesで検索したファイルを...
-
renameコマンドについて
-
多数のサブディレクトリ内のフ...
-
【Excel】 VBAを使って毎回名前...
-
バッチファイルで文字列削除に...
-
ファイル内容の修正、行削除に...
-
テキストファイルのタブをカン...
-
バッチファイルからVBAに引数を...
-
バッチファイル 複数ファイル...
-
C言語、ファイルの存在チェック...
-
FTPコマンドでgetしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
テキストファイルで提出とは?
-
多数のサブディレクトリ内のフ...
-
ファイル名の一部をbatで変更し...
-
ファイル内容の修正、行削除に...
-
拡張子を元に戻す
-
エクセルの各セルの内容をそれ...
-
psqlでエラーログをとりたい
-
ファイルの最後に文字列挿入
-
COPYコマンドで結合すると余計...
-
Windows マシンでFTPバッチが動...
-
バッチファイルで文字列削除に...
-
バッチファイル 複数ファイル...
-
UWSCでテキストファイルを開い...
-
ExcelVBA テキストファイルUNIC...
-
VBSでフォルダ内のテキストファ...
-
外部exeに対しての引数受け渡し
-
accessでSQL文を使ってcsvファ...
おすすめ情報