Задать вопрос
ZIK1337
@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>
  • Вопрос задан
  • 266 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@vanyamba-electronics
char tmp;
...
tmp = text[0];
text[0] = text[2];
text[2] = tmp;
fputs(text, file_ptr);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы