Перенос текста из одного файла в другой - C (СИ)
Формулировка задачи:
Нужно ввести n-ое количество строк, которые сохраняется в файле text1.txt и переносятся в text2.txt.
Но при вводе, например: я поел; в файле text.2 появляется дополнительный enter и "я".
Очевидно, что проблема в самом коде программы. В чем причина?
PS. по заданию дополнительно нужно, чтобы эти строчки выводились в порядке убывания. Как это сделать проще всего?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(void)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int i = 0, length = 0;
char *str = malloc(sizeof(char));
FILE *T1, *T2;
printf("Введите строки:\n");
T1 = fopen("text1.txt", "w");
while (str[1] != '\0')
{
fgets(str, 100, stdin);
i++;
if (length < (int)strlen(str))
length = strlen(str);
fprintf(T1, "%s", str);
}
i--;
fclose(T1);
T1 = fopen("text1.txt", "r");
T2 = fopen("text2.txt", "w");
while (!feof(T1))
fputc(fgetc(T1), T2);
fclose(T1);
fclose(T2);
}Решение задачи: «Перенос текста из одного файла в другой»
textual
Листинг программы
strcpy(strs[i], str); fprintf(T1, "%s", strs[i]);//Запись в файл 1 ++i;
Объяснение кода листинга программы
- Создается массив строк типа char с именем strs размером n.
- В каждой ячейке массива strs[i] копируется строка str.
- Открывается файл T1 для записи (в режиме
w). - В файл T1 записывается содержимое каждой ячейки массива strs[i] с помощью функции fprintf.
- Увеличивается значение i на единицу для перехода к следующей ячейке массива.