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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- iOS ファイルの名前変更 2 2022/08/11 20:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
.txtではなく.logの方が良いの...
-
ファイルの最後に文字列挿入
-
多数のサブディレクトリ内のフ...
-
テキストファイルで提出とは?
-
COPYコマンドで結合すると余計...
-
bat(バッチ)ファイルで文字入...
-
ファイルを処理中に次の処理に...
-
コマンドプロンプトで指定した...
-
UWSCでテキストファイルを開い...
-
3つ以上のテキストファイルをコ...
-
バッチファイル 複数ファイル...
-
VBScriptでtxtファイルの中身を...
-
Windowsのバッチファイルを利用...
-
テキストの保存
-
renameコマンドについて
-
ファイル世代管理バックアップ...
-
Windows版のgzipについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
.txtではなく.logの方が良いの...
-
txtのファイルから編集してもい...
-
バッチファイルで文字列削除に...
-
Windowsのバッチファイルを利用...
-
バッチファイル 複数ファイル...
-
ファイルの最後に文字列挿入
-
テキストファイルのファイル名...
-
psqlでエラーログをとりたい
-
forfilesで検索したファイルを...
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
コマンドプロンプトでスペース...
-
ファイルを処理中に次の処理に...
-
UWSCでテキストファイルを開い...
-
バッチファイルからVBAに引数を...
おすすめ情報