ラベル 演習 13 ファイル処理 の投稿を表示しています。 すべての投稿を表示
ラベル 演習 13 ファイル処理 の投稿を表示しています。 すべての投稿を表示

演習 13-13

#include <stdio.h>

int main(){

    int ch;
    FILE *sfp;
    FILE *dfp;
    char sname[FILENAME_MAX];
    char dname[FILENAME_MAX];

    printf("コピー元ファイル名 : "); scanf("%s", sname);
    printf("コピー先ファイル名 : "); scanf("%s", dname);

    if((sfp = fopen(sname, "rb")) == NULL){
        printf("コピー元ファイルをオープンできません\n");
    }else{
        if((dfp = fopen(dname, "wb")) == NULL){
            printf("コピー先ファイルをオープンできません\n");           
        }else{
            while((fread(&ch, sizeof(int), 1, sfp)) > 0){
                fwrite(&ch, sizeof(int), 1, dfp);
                putchar(ch);
            }
            fclose(dfp);
        }
        fclose(sfp);
    }
    return 0;
}

演習 13-12

#include <time.h>
#include <stdio.h>

char data_file[] = "datetime.bin";

void get_data(){
    FILE *fp;

    if((fp = fopen(data_file, "rb")) == NULL){
        printf("本プラグラムを実行するのは初めてですね\n");
    }else{
        int year, month, day, h, m, s;

        fscanf(fp, "%d%d%d%d%d%d", &year, &month, &day, &h, &m, &s);
        printf("前回は%d年%d月%d日%d時%d分%d秒でした\n", year, month, day, h, m, s);

        fclose(fp);
    }
}

void put_data(){
    FILE *fp;
    time_t current = time(NULL);
    struct tm *timer = localtime(&current);

    if((fp = fopen(data_file, "wb")) == NULL){
        printf("ファイルをオープンできません\n");
    }else{
        fprintf(fp, "%d %d %d %d %d %d\n", timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday, timer->tm_hour, timer->tm_min, timer->tm_sec);
        fclose(fp);
    }
}

int main(){

    get_data();

    put_data();

    return 0;
}

演習 13-11

#include <stdio.h>

int main(){

    int i;
    FILE *fp;
    double data[10];

    for(i = 0; i < 10; i++){
        data[i] = 3.14159265358979323846;
    }

    if((fp = fopen("data.bin", "wb")) == NULL){
        printf("ファイルをオープンできません\n");
    }else{
        fwrite(data, sizeof(double), 10, fp);
        fclose(fp);
    }

    if((fp = fopen("data.bin", "rb")) == NULL){
        printf("ファイルをオープンできません\n");
    }else{
        fread(data, sizeof(double), 10, fp);
        for(i = 0; i < 10; i++){
            printf("data[%d] = %23.21lf\n", i, data[i]);
        }
        fclose(fp);
    }

    return 0;
}

演習 13-10

#include <stdio.h>

int main(){

    int ch;
    FILE *sfp;
    FILE *dfp;
    char sname[FILENAME_MAX];
    char dname[FILENAME_MAX];

    printf("コピー元ファイル名 : "); scanf("%s", sname);
    printf("コピー先ファイル名 : "); scanf("%s", dname);

    if((sfp = fopen(sname, "r")) == NULL){
        printf("コピー元ファイルをオープンできません\n");
    }else{
        if((dfp = fopen(dname, "w")) == NULL){
            printf("コピー先ファイルをオープンできません\n");           
        }else{
            while((ch = fgetc(sfp)) != EOF){
                if('A' <= ch && ch <= 'Z'){
                    ch -= 'A' - 'a';
                }
                fputc(ch, dfp);
                putchar(ch);
            }
            fclose(dfp);
        }
        fclose(sfp);
    }
    return 0;
}

演習 13-9

#include <stdio.h>

int main(){

    int ch;
    FILE *sfp;
    FILE *dfp;
    char sname[FILENAME_MAX];
    char dname[FILENAME_MAX];

    printf("コピー元ファイル名 : "); scanf("%s", sname);
    printf("コピー先ファイル名 : "); scanf("%s", dname);

    if((sfp = fopen(sname, "r")) == NULL){
        printf("コピー元ファイルをオープンできません\n");
    }else{
        if((dfp = fopen(dname, "w")) == NULL){
            printf("コピー先ファイルをオープンできません\n");           
        }else{
            while((ch = fgetc(sfp)) != EOF){
                if('a' <= ch && ch <= 'z'){
                    ch += 'A' - 'a';
                }
                fputc(ch, dfp);
            }
            fclose(dfp);
        }
        fclose(sfp);
    }
    return 0;
}

演習 13-8

#include <stdio.h>

int main(){

    int ch;
    FILE *sfp;
    FILE *dfp;
    char sname[FILENAME_MAX];
    char dname[FILENAME_MAX];

    printf("コピー元ファイル名 : "); scanf("%s", sname);
    printf("コピー先ファイル名 : "); scanf("%s", dname);

    if((sfp = fopen(sname, "r")) == NULL){
        printf("コピー元ファイルをオープンできません\n");
    }else{
        if((dfp = fopen(dname, "w")) == NULL){
            printf("コピー先ファイルをオープンできません\n");           
        }else{
            while((ch = fgetc(sfp)) != EOF){
                fputc(ch, dfp);
                putchar(ch);
            }
            fclose(dfp);
        }
        fclose(sfp);
    }
    return 0;
}

演習 13-7

#include <stdio.h>

int main(){

    int ch, count = 0;
    FILE *fp;
    char file_name[256];

    printf("ファイル名 : "); scanf("%s", file_name);

    if((fp = fopen(file_name, "r")) == NULL){
        printf("cannot open a file.\n");
        return (-1);
    }

    while((ch = fgetc(fp)) != EOF){
        if('0' <= ch && ch <= '9') count++;
    }

    printf("数字は%d回文字ありました。\n", count);

    return 0;
}

演習 13-6

#include <stdio.h>

int main(){

    int ch, count = 0;
    FILE *fp;
    char file_name[256];

    printf("ファイル名 : "); scanf("%s", file_name);

    if((fp = fopen(file_name, "r")) == NULL){
        printf("cannot open a file.\n");
        return (-1);
    }

    while((ch = fgetc(fp)) != EOF){
        if(ch == '\n') count++;
    }

    printf("改行は%d回行われていました。\n", count);

    return 0;
}

演習 13-5

#include <time.h>
#include <stdio.h>

char data_file[] = "datetime.dat";

void get_data(){
    FILE *fp;

    if((fp = fopen(data_file, "r")) == NULL){
        printf("本プラグラムを実行するのは初めてですね\n");
    }else{
        int year, month, day, h, m, s;
        char feel[256];
        fscanf(fp, "%d%d%d%d%d%d%s", &year, &month, &day, &h, &m, &s, feel);
        printf("前回は%d年%d月%d日%d時%d分%d秒で、気分は%sでした\n", year, month, day, h, m, s, feel);

        fclose(fp);
    }
}

void put_data(){
    FILE *fp;
    time_t current = time(NULL);
    struct tm *timer = localtime(&current);
    char feel[256];

    if((fp = fopen(data_file, "w")) == NULL){
        printf("ファイルをオープンできません\n");
    }else{
        printf("今の気分は?:"); scanf("%s", feel);
        fprintf(fp, "%d %d %d %d %d %d %s\n", timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday, timer->tm_hour, timer->tm_min, timer->tm_sec, feel);
        fclose(fp);
    }
}

int main(){

    get_data();

    put_data();

    return 0;
}

演習 13-4

#include <stdio.h>

int main(){

    FILE *fp;

    int select;
    char name[100];
    double height, weight;

    if(((fp = fopen("hw.dat", "w")) == NULL)){
        printf("can't open file\n");
        return -1;
    }

    while(true){

        printf("名前 身長 体重 : ");
        scanf("%s %lf %lf", name, &height, &weight);

        fprintf(fp, "%s %.lf %.1lf\n", name, height, weight);

        printf("入力を続けますか yes:1/no:0\n");    scanf("%d", &select);
        if(select == 0) break;
    }

    printf("ファイルに書き込みました\n");

    return 0;
}

演習 13-3

#include <stdio.h>
#include <string.h>

typedef struct student{
    char name[100];
    double height;
    double weight;
} Student;

void swap_Student(Student *x, Student *y){
    Student tmp = *x;
    *x = *y;
    *y = tmp;
}

void sort_by_name(Student a[], int n){
   
    int i, j;

    for(i = 0; i < n; i++){
        for(j = n - 1; j > i; j--){
            if(strcmp(a[j - 1].name, a[j].name) > 0) swap_Student(&a[j - 1], &a[j]);
        }
    }
}

int main(){

    FILE *fp;
    Student std[256];
    int i, ninzu = 0;
    double hsum = 0.0;
    double wsum = 0.0;

    if((fp = fopen("hw.dat", "r")) == NULL){
        printf("ファイルをオープンできません\n");
        return (-1);
    }

    while(fscanf(fp, "%s%lf%lf", std[ninzu].name, &std[ninzu].height, &std[ninzu].weight) == 3){
        hsum += std[ninzu].height;
        wsum += std[ninzu].weight;
        ninzu++;
    }
    sort_by_name(std, ninzu);
    for(i = 0; i < ninzu; i++){
        printf("%-10s %5.1f %5.1f\n", std[i].name, std[i].height, std[i].weight);
    }
    printf("----------------------\n");   
    printf("平均       %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu);
   
    fclose(fp);

    return 0;
}

演習 13-2

#include <stdio.h>

int main(){
   
    FILE *fp;
    char filename[256];

    printf("ファイル名を入れてください : ");  scanf("%s", filename);

    fp = fopen(filename, "w");

    printf("ファイルの中身を全て消去しました.");

    fclose(fp);

    return 0;
}

演習 13-1

#include <stdio.h>

int main(){
   
    FILE *fp;
    char filename[256];

    printf("ファイル名を入れてください : ");  scanf("%s", filename);

    fp = fopen(filename, "r");

    if(fp == NULL){
        printf("そのファイルは存在しません\n");
    }else{
        printf("そのファイルは存在します\n");
        fclose(fp);
    }
    return 0;
}