@ZIK1337

Как записать символы в обратном порядке в каждой строке файла?

Нужно перевернуть символы (записать в обратном порядке) в каждой строке файла.
Есть такой набросок кода:
fseek(file_ptr, 0, SEEK_SET);
		while (fgets(text, 50, file_ptr)) {
			_strrev(text);
			fseek(file_ptr, 0, SEEK_SET);
			fputs(text, file_ptr);
			fputs("\n", file_ptr);
			fseek(file_ptr, 0, SEEK_END);
		}

Но реверс происходит только первой строки, да еще и пустую строку оставляет (строку fputs("\n", file_ptr); в коде убирал, все равно остается пустая начальная строка):
spoiler
qtlHcC2.jpg

Подскажите, что я делаю не так?
Вот весь код:
spoiler
#include <stdio.h>
#include <string.h>
#include <locale.h>

int main(int argc, char **argv)
{
	setlocale(LC_ALL, "Ru");
	FILE *file_ptr; // указатель на файл (задание 1.1)
	int N; // количество строк и символов в строках (задание 1.1)
	int count=0; // для подсчета количества строк (задание 1.2)
	char ch; // для подсчета количества строк (задание 1.2)
	char text[50]="0"; // строка для чтения из файла

	file_ptr = fopen("D:\\f1.txt", "w+");

	if (file_ptr != NULL) {
		printf("Введите количество строк в файле и символов в них (не более 10): \n");
		scanf("%d", &N);
		
		if (N > 10) {
		do {
			printf("Нужно ввести число не более 10! Повторите ввод: \n");
			scanf("%d", &N);
		} while (N > 10);
		}

		printf("Введите строки не более %d символов.\n", N);

		for (int i = 0; i < N; i++)
		{
			printf("Введите %d-ю строку: \n", (i+1));
			scanf("%s", text);
			if (strlen(text) > N) {
				do {
				printf("Нельзя вводить больше %d символов! Введите строку еще раз: \n", N);
				scanf("%s", text);
				} while (strlen(text) > N);
				fputs(text, file_ptr);
				fputs("\n", file_ptr);
			}
			else
			{
				fputs(text, file_ptr);
				fputs("\n", file_ptr);
			}
		}

		// вывод числа строк в файле (задание 1.2)
		fseek(file_ptr, 0, SEEK_SET);
		while ((ch = fgetc(file_ptr)) != EOF) {
			if (ch == '\n')
				++count;
		}
		printf("Количество строк в файле: %d\n", count);

		// реверс строк в файле (задание 1.3)
		fseek(file_ptr, 0, SEEK_SET);
		while (fgets(text, 50, file_ptr)) {
			_strrev(text);
			fseek(file_ptr, 0, SEEK_SET);
			fputs(text, file_ptr);
			fputs("\n", file_ptr);
			fseek(file_ptr, 0, SEEK_END);
		}
		
		// чтение файла
		//fseek(file_ptr, 0, SEEK_SET);
		//while (fgets(text, 50, file_ptr)) {
		//	printf("%s", text);
		//}

		fclose(file_ptr);
		_getch();
		return 0;

	}
	else {
		printf("Невозможно открыть файл\n");
		return 1;
	}

}</code lang="cpp"></spoiler>
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@vanyamba-electronics
char tmp;
...
tmp = text[0];
text[0] = text[2];
text[2] = tmp;
fputs(text, file_ptr);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Eltex Новосибирск
от 80 000 руб.
ITM Холдинг Екатеринбург
от 65 000 руб.
от 75 000 до 120 000 eur.
20 мая 2019, в 18:15
2500 руб./за проект
20 мая 2019, в 17:56
20000 руб./за проект
20 мая 2019, в 17:23
3000 руб./за проект