Загрузка данных


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

struct Substance {
    char name[50];
    float specificWeight;
    int conductivity; 
};

int main() {
    FILE *f;
    struct Substance subs[100];
    int n, i;
    
    printf("Введите количество веществ: ");
    scanf("%d", &n);

    for(i = 0; i < n; i++) {
        printf("\nВещество %d:\n", i+1);
        printf("Название: ");
        scanf("%s", subs[i].name);
        printf("Удельный вес: ");
        scanf("%f", &subs[i].specificWeight);
        printf("Проводимость (1-проводник, 2-полупроводник, 3-диэлектрик): ");
        scanf("%d", &subs[i].conductivity);
    }
    
    f = fopen("substances.txt", "w");
    if(f == NULL) {
        printf("Ошибка создания файла!\n");
        return 1;
    }
    
    fprintf(f, "%d\n", n);
    
    for(i = 0; i < n; i++) {
        fprintf(f, "%s %.2f %d\n", subs[i].name, subs[i].specificWeight, subs[i].conductivity);
    }
    
    fclose(f);
    
    printf("\nДанные успешно сохранены в файл substances.txt\n");

    printf("\n=== Чтение данных из файла ===\n");
    
    f = fopen("substances.txt", "r");
    if(f == NULL) {
        printf("Ошибка открытия файла для чтения!\n");
        return 1;
    }
    
    int count;
    fscanf(f, "%d", &count);
    
    printf("\n%-20s %-15s %-12s\n", "Название", "Уд. вес", "Тип");
    printf("-----------------------------------------------\n");

    struct Substance temp;
    for(i = 0; i < count; i++) {
        fscanf(f, "%s %f %d", temp.name, &temp.specificWeight, &temp.conductivity);
        
        const char *condType;
        switch(temp.conductivity) {
            case 1: condType = "Проводник"; break;
            case 2: condType = "Полупроводник"; break;
            case 3: condType = "Диэлектрик"; break;
            default: condType = "Неизвестно";
        }
        
        printf("%-20s %-15.2f %-12s\n", temp.name, temp.specificWeight, condType);
    }
    
    fclose(f);

    
    return 0;
}