Другие языки программирования и технологии

Помогите пожалуйста, Файлы в СИ.

Текстовой файл:

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

main() {
    FILE *f;
    int c;
    int v, m = 0;

    // запись
    if ( (f = fopen("file.txt", "wt")) == NULL ) exit(0);
    srand(time(NULL));
    for (c = 0; c < 10; ++c) fprintf(f, "%d ", rand() % 51 - 25);
    fclose(f);

    // чтение
    if ( (f = fopen("file.txt", "rt")) == NULL ) exit(0);
    while ( fscanf(f, "%d", &v) == 1 ) if (v < 0 && v < m) m = v;
    fclose(f);
    if (m < 0) printf("result: %d\n", m);
}

Двоичный (пример для типа double):

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

main() {
    FILE *f;
    int c;
    double v, m = 0;

    // запись
    if ( (f = fopen("file.bin", "wb")) == NULL ) exit(0);
    srand(time(NULL));
    for (c = 0; c < 10; ++c) {
        v = (double)(rand() % 51 - 25);
        fwrite((void *)&v, sizeof(v), 1, f);
    }
    fclose(f);

    // чтение
    if ( (f = fopen("file.bin", "rb")) == NULL ) exit(0);
    while ( fread((void *)&v, sizeof(v), 1, f) == 1 ) if (v < 0 && v < m) m = v;
    fclose(f);
    if (m < 0) printf("result: %f\n", m);
}

ЗЫ:
В варианте с двоичным файлом сразу читать пачку чисел в массив. По уму, все операции ввода/вывода тоже надо проверять на ошибки.
Если нужно читать начальные значения со стандартного ввода (клавиатуры) , то просто считываешь очередное значение функцией scanf() вместо rand(), а потом пишешь в файл.
Dennis Archiptschuk
Dennis Archiptschuk
72 006
Лучший ответ
Для начала разберись с файловыми потоками (как открывать, закрывать, записывать в поток) , потом разберись, каким образом осуществляется конвертация типов. Объедини знания - и получишь результат)
Айвар Закиров
Айвар Закиров
2 455