Я пытаюсь создать программу, которая читает текст из файла, который был ранее создан, инвертирует его и записывает в другой файл. Код, который у меня есть, теперь позволяет мне инвертировать отдельные слова, но останавливается всякий раз, когда есть пробел или абзац. Я мог бы использовать некоторую помощь в преодолении этой проблемы. Это код, который у меня есть до сих пор:Обратный String C
#include <stdio.h>
#include <string.h>
int main()
{
int c, d;
FILE *fich1, *fich2;
char string [100], *inicio, *fim, tempo;
fich1 = fopen("FicheiroInicial.txt", "rt");
if (fich1 == NULL)
{
printf ("Erro - Nao foi possivel abrir o ficheiro\n");
return (-1);
}
fscanf (fich1, "%s", string);
fclose (fich1);
inicio = string;
fim = inicio + strlen(string) - 1;
while (fim > inicio)
{
tempo = *inicio;
*inicio = *fim;
*fim = tempo;
++inicio;
--fim;
}
fich2 = fopen("FicheiroFinal.txt", "wt");
fprintf (fich2, "%s", string);
fclose (fich2);
printf ("%s", string);
return 0;
}
Заранее благодарен!
Попробуйте 'fgets' вместо' fscanf'. – Arkku
Спасибо! Я использовал fgets вместо fscanf, и теперь я могу инвертировать целые строки текста, даже с пробелами. У меня все еще такая же проблема, когда строка заканчивается в файле. Есть идеи? – FranciscoS
Какая у вас проблема? Вы хотите, чтобы последний байт файла отображался первым, а первый - последним? Если это так, вам нужно либо прочитать весь файл в памяти, отменить весь блок памяти, и записать его в пункт назначения (для файлов размером до нескольких гигабайт), либо вам нужно прочитать файл в кусках от конца: искать подходящее смещение от конца, читать фрагмент, отменить его, записать обратные данные и повторить. –