Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 17:18   #1
zarekti
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию Программа, преобразующая RTF в HTML (C/C++)

Люди,очень,очень нужна помощь!!В общем у меня скоро защита по практике программирования,а у меня какие-то не понятные косяки с программой,не могу понять почему!!!пожалуйста помогите.Защита уже через несколько дней Т___Т
суть моего задания создать программу,преобразующию RTF в HTML.
Заранее спасибо!

Код:
вот собственно мой код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include<stdlib.h>
//FILE * pFile;
FILE* eFile;
char * Mem;
//char mas [255];
int FILESIZE=0;

void LoadFileToMem(char*str) {
{
FILE*pFile;
pFile = fopen(str, "r");
if (!pFile) {
printf("error\n");
exit(1);
}

char buf;
int fSize = 0;
while (!feof(pFile)) {
buf = fgetc(pFile);
fSize++;
};
FILESIZE=fSize;
Mem = (char*) malloc(fSize);
rewind(pFile);
int i = 0;
while (!feof(pFile)) {
Mem[i] = fgetc(pFile);
i++;
};
fclose(pFile);
}
}

int main() {
LoadFileToMem("DOC.rtf");


int n = 0; //внешний счетчик
char KeyWord [25];
//scanf("%s",&mas);
int i=0;
for(i=0;i<FILESIZE;i++)
printf("%c",Mem[i]);

eFile = fopen("C:\\doc1.html", "w");
if (eFile == NULL) {
perror("Error opening file");
exit(1);
}
do { //начало анализирующего кода
if (Mem[i]== '{')
{
n++;
int x = 0; // внутренний счетчик
int y = 1;
int b = 0;
while (Mem[i] != '}' || y > 0) {
if (Mem[i]== '\\' || b == 1) {
int a = 0;
if (b == 1) {
KeyWord[0] = Mem[i];
a++;
}
while (Mem[i]!= '}' && Mem[i]!= '{' && Mem[i]!= '\\' && Mem[i]!= ';') {
KeyWord[a] = c;
c = Mem[i];
a++;
if (Mem[i]== '\\') b = 1;
else b = 0;
i++;
}

for (int i = a; i < 25; i++) {
KeyWord[i] = 0;
}
printf("%s", KeyWord);
char HKeyWord[255];
if (strcmp(KeyWord, "\\fonttbl")) strcpy(HKeyWord, "<style>"); 
if (strcmp(KeyWord, "\\f0")) strcat(HKeyWord, "<font>");
if (strcmp(KeyWord, "\\fswiss")) strcat(HKeyWord, "<font>");
if (strcmp(KeyWord, "\\colortbl")) strcat(HKeyWord, "<FONT COLOR>");
if (strcmp(KeyWord, "\\f1")) strcat(HKeyWord, "<\\font>");
if(strcmp(KeyWord,"\\pict")) strcat(HKeyWord,"<IMG>");
if(strcmp(KeyWord,"\\i")) strcat(HKeyWord,"<I>");
if (strcmp(KeyWord, "\\ul")) strcat(HKeyWord, "<U>");
if(strcmp(KeyWord,"\\ulnone")) strcat(HKeyWord,"<\\U>"); 

fputs (&HKeyWord,sizeof(char),1,eFile);
//формирует Header HTML-файла
fputs(HKeyWord, eFile);
}



if (Mem[i]== '{') y++;
//новый вложенный блок
if (Mem[i]== '}') y--;

x++;

}
//printf ("%d symbols in block.\n",x);
//printf ("%d.\n",y);
}
i++;//важная переменна

} while (i!=FILESIZE);//конец анализирующего кода
//fclose(pFile);
fclose(eFile);
//printf("%d Blocks in RTF.\n", n);


return 0;
}



___________
1) Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться.


2) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.06.2011 в 17:38.
zarekti вне форума Ответить с цитированием
Старый 23.06.2011, 17:53   #2
zarekti
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию

спасибо!!!
zarekti вне форума Ответить с цитированием
Старый 24.06.2011, 09:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я не знаю C/C++

но сразу могу сказать, хорошо, что Вы привели свой исходник.
Но плохо, что не рассказали, что не работает, или что работает не так.
Поймите, что чем больше конкретных вопросов, тем больше вероятность получить конкретные ответы... А вывалить программу на 120 строк и сказать, что у Вас с ней непонятные косяки, значит, надеяться на то, что кто-то будет анализировать её полностью, разбирать алгоритм, искать ошибки в реализации. А проблема может быть, например, не в корректных исходных данных (это я просто так, для примера!)...
Андестенд?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.06.2011, 13:06   #4
zarekti
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию

ну в общем то да,просто беда в том, что при запуске ошибок не выдает,просто виснет и все,но я скорее всего думаю,что ошибка где-то в цикле do,потому что его надо как-то подделать под это противную функцию LoadFileToMem,а вот этого я не знаю как сделать оО
еще беда в соотношении rtf служебных знаков с html знаками.
вот.
zarekti вне форума Ответить с цитированием
Старый 24.06.2011, 13:26   #5
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от zarekti Посмотреть сообщение
Код:
void LoadFileToMem(char*str) {
{
FILE*pFile;
pFile = fopen(str, "r");
if (!pFile) {
printf("error\n");
exit(1);
}
Вот только зачем надо было создавать локальный указатель внутри функции при открытия файла ? При выходе из функции он освобождается ! Если хочешь использовать локальный указатель, то передавай его в функцию в качестве параметра или возвращай из функции.
An1ka вне форума Ответить с цитированием
Старый 24.06.2011, 14:07   #6
zarekti
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию

ого как оо
я тоже думала что с этой функцией что-то не так
спасибо!
zarekti вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на С++ на подобиии фреймов HTML attt123 Общие вопросы C/C++ 1 04.04.2010 18:01
как вставить rtf(HTML) строку с помощью VBA Snark Microsoft Office Word 0 09.10.2009 10:19
как преобразовать HTML в RTF Volkogriz Общие вопросы Delphi 7 25.01.2009 03:32
Конвертирование rtf в html и обратно jocry Помощь студентам 1 11.01.2009 15:39