ここのみんなで協力して何かを作りたい。9

このエントリーをはてなブックマークに追加
305(-_-)さん
>>300をスレ上で見やすくだけした
この場合、リードするファイルが存在しなかった時にバグるね
#include <stdio.h>
#include <string.h>
#define BUFFER_LEN 1024
#define FNAME_LEN 512

int main(int argc, char* argv[])
{
    int c, cnt;
    static char buf[BUFFER_LEN], fname[FNAME_LEN], newfname[FNAME_LEN+4];
    FILE *fp, *fp2;
        // 引数が無かったら何もせず終了
    if (argc == 1) {printf("no run, because no argument\n"); return 0;}
        // 引数=ファイル名と仮定してファイル名を取得する
    for (c=1;c<argc;c++) strcat(fname, argv[c]);
    strcpy(newfname, fname);
        // .288を策走させ新しいファイルの名前には288を付けたり付けなかったり
    if (strstr(fname,".288")) newfname[strlen(newfname)-4] = '\0';
    else strcat(newfname, ".288");

    fp = fopen(fname, "rb"), fp2 = fopen(newfname, "wb");

    while (!feof(fp)) {
            // 1024バイト取得し、それぞれ全ビットを反転させる
        c = fread(buf, sizeof(char), BUFFER_LEN, fp);
        for (cnt=0;cnt<c;cnt++) buf[cnt] = buf[cnt]^0xff;
        fwrite(buf, sizeof(char), c, fp2);
    }
    fclose(fp), fclose(fp2);
    return 0;
}