Прочитать числа из файла и записать их в два других файла по условию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно написать простенькую программу которая берет из текстового файла числа и создает два других файла в один из которых записывает только положительные числа а в другой только отрицательные

Решение задачи: «Прочитать числа из файла и записать их в два других файла по условию»

textual
Листинг программы
#include <stdio.h>
#include <locale>
#include <stdlib.h>
#define MAX 1000
int main(int argc, char *argv[])
{
    int i, b, a, sym;
    char *str;
    srand(time(NULL));
    FILE *fp, *sp, *tp;
    if (argc < 4) {
        argv[1] = "Original_file.txt";
        argv[2] = "Negfile_nymb.txt";
        argv[3] = "Positfive_nymb.txt";
    }
    if (fp = fopen(argv[1], "r"));
    else {
        fp = fopen(argv[1], "wt");
        for (int v = 0; v < MAX; ++v) {
            a = -100 + rand() % 500;
            for (a < 0 ? i = 2 : i = 1, b = a; b /= 10; ++i);
            str = (char*)calloc(i, sizeof(int));
            itoa(a, str, 10);
            fputs(str, fp);
            putc('\t', fp);
            free(str);
        }
        fclose(fp);
        fp = fopen(argv[1], "r");
    }
    sp = fopen(argv[2], "wt");
    tp = fopen(argv[3], "wt");
    char *out = (char*)calloc(10, sizeof(char));    
    for (int i = 0; (sym = getc(fp)) != EOF;)
        if (isdigit(sym) || sym == '-')
            out[i++] = sym;
        else if (i) {
            out[i] = '\0';
            sym = atoi(out);
            if (sym < 0) {
                fputs(out, sp);
                putc('\t', sp);
            }
            else {
                fputs(out, tp);
                putc('\t', tp);
            }
            i = 0;
        }
        fclose(fp);
        fclose(sp);
        fclose(tp);
    return 0;
}

Объяснение кода листинга программы

  1. Объявлены переменные:
    • i, b, a, sym - целочисленные, используются для работы с числами и циклом;
    • str - указатель на строку, используется для работы со строковым представлением числа;
    • out - указатель на строку, используется для временного хранения числового значения.
  2. Задана начальная установка:
    • Задана начальная установка для случайной генерации чисел;
    • Открыты файлы: исходный файл для чтения и два файла для записи.
  3. Проверка входных аргументов:
    • Если в командной строке менее трех аргументов, то используются стандартные имена файлов;
    • Открыт файл для записи.
  4. Генерация чисел и их запись в файл:
    • Если не удалось открыть файл для записи, то сгенерированы и записаны в него случайные числа;
    • Закрыт файл для чтения и открыт для записи.
  5. Чтение чисел из файла и их запись в другие файлы:
    • Число считывается из файла до тех пор, пока не встретится нечисловое значение или конец строки;
    • Если число отрицательное, то оно записывается в один файл, иначе - в другой;
    • Закрыты все файлы.
  6. Код выполняется до тех пор, пока не будут выполнены все условия.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы