- 締切済み
テキストファイルを分割するプログラム
テキストファイル中の冒頭4文字をファイル名にしてファイルを分割するプログラムを作りたいのですが、よくわかりません。 たとえば、テキストファイルのデータが aaaABC bbbDEF のとき、 ファイル名がaaa.txtで、データがABC のファイルと ファイル名がbbb.txtで、データがDEF のファイルが作成されるようにしたいのです。どのようにすればいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
>たとえば、テキストファイルのデータが > >aaaABC >bbbDEF > >のとき、ファイル名がaaa.txtで、データがABCのファイルと >ファイル名がbbb.txtで、データがDEFのファイルが作成されるようにしたいのです。 やってること(↓)がわかって下さればよろしいかと m(_ _)m /* 実行 ./a.out TextFile */ #include <stdio.h> /* fopen(),sprintf() */ #include <string.h> /* strtok() */ #define SIZE 64 #define LEN 3 int main(int argc, char *argv[]) { char buff[SIZE], work[SIZE]; int temp; FILE *fp, *wp; if((fp = fopen(argv[1], "r")) == NULL) return 0; while(fgets(buff, SIZE, fp) != NULL){ strtok(buff, "\n"); printf("TextFile [%s]\n", buff); temp = buff[LEN]; buff[LEN] = '\0'; sprintf(work, "%s.txt", buff); printf("sprintf(work, '%%s.txt', buff); -> [%s]¥n", work); printf("wp=fopen(work, 'w');\n"); buff[LEN] = temp; printf("fprintf(wp, '%%s\\n', buff + LEN); -> [%s]\n", buff + LEN); printf("fclose(wp);\n\n"); } fclose(fp); return 0; } ----- 実行結果 ----- TextFile [aaaABC] sprintf(work, '%s.txt', buff); -> [aaa.txt] wp=fopen(work, 'w'); fprintf(wp, '%s\n', buff + LEN); -> [ABC] fclose(wp); TextFile [bbbDEF] sprintf(work, '%s.txt', buff); -> [bbb.txt] wp=fopen(work, 'w'); fprintf(wp, '%s\n', buff + LEN); -> [DEF] fclose(wp);
- Tacosan
- ベストアンサー率23% (3656/15482)
本題は #1 の通りだけど.... 「テキストファイル中の冒頭4文字をファイル名にして」と書いているにもかかわらず, その下の例では「先頭 3文字」をファイル名にしているように見えます. どっち?
- Chronos198
- ベストアンサー率30% (105/349)
1) テキストファイルを開く 2) 1で開いたファイルから1行読み込む 3) 2で読み込んだ行の先頭3文字を切り出す 4) 3で切り出した文字+".txt"の文字列を作る 5) 4で作った文字列のファイルを開く 6) 2で読み込んだ行の4文字目以降を切り出す 7) 5で開いたファイルに6で切り出した文字を出力 8) 5で開いたファイルを閉じる 9) 1に戻る という風にすればおkですよ