これ何て呼びますか

テキストファイル中の冒頭4文字をファイル名にしてファイルを分割するプログラムを作りたいのですが、よくわかりません。

たとえば、テキストファイルのデータが
aaaABC
bbbDEF

のとき、
ファイル名がaaa.txtで、データがABC
のファイルと
ファイル名がbbb.txtで、データがDEF
のファイルが作成されるようにしたいのです。どのようにすればいいのでしょうか?

A 回答 (3件)

>たとえば、テキストファイルのデータが



>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);
    • good
    • 0

本題は #1 の通りだけど....


「テキストファイル中の冒頭4文字をファイル名にして」と書いているにもかかわらず, その下の例では「先頭 3文字」をファイル名にしているように見えます.
どっち?
    • good
    • 0

1) テキストファイルを開く


2) 1で開いたファイルから1行読み込む
3) 2で読み込んだ行の先頭3文字を切り出す
4) 3で切り出した文字+".txt"の文字列を作る
5) 4で作った文字列のファイルを開く
6) 2で読み込んだ行の4文字目以降を切り出す
7) 5で開いたファイルに6で切り出した文字を出力
8) 5で開いたファイルを閉じる
9) 1に戻る

という風にすればおkですよ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!