Прочитать числа из файла и записать их в два других файла по условию - 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; }
Объяснение кода листинга программы
- Объявлены переменные:
- i, b, a, sym - целочисленные, используются для работы с числами и циклом;
- str - указатель на строку, используется для работы со строковым представлением числа;
- out - указатель на строку, используется для временного хранения числового значения.
- Задана начальная установка:
- Задана начальная установка для случайной генерации чисел;
- Открыты файлы: исходный файл для чтения и два файла для записи.
- Проверка входных аргументов:
- Если в командной строке менее трех аргументов, то используются стандартные имена файлов;
- Открыт файл для записи.
- Генерация чисел и их запись в файл:
- Если не удалось открыть файл для записи, то сгенерированы и записаны в него случайные числа;
- Закрыт файл для чтения и открыт для записи.
- Чтение чисел из файла и их запись в другие файлы:
- Число считывается из файла до тех пор, пока не встретится нечисловое значение или конец строки;
- Если число отрицательное, то оно записывается в один файл, иначе - в другой;
- Закрыты все файлы.
- Код выполняется до тех пор, пока не будут выполнены все условия.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д