The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"замена "
Отправлено samara, 05-Окт-05 00:37 
>>хе-хе, ну на С++ это конечно здорово, но вот хорошо бы именно
>>на С! ;)
>
>Да какие проблемы, если есть желание изобретать велосипед:
>
>#include <stdio.h>
>#include <string.h>
>
>char * replace(const char * src, const char * delim, const char
>* repl)
>{
> char * start_pos=(char *)src;
> char * end_pos=(char *)src;
> char * dst_ret=NULL;
> char * dst_tmp;
> size_t dst_len=1; // For trailing NULLTerm
> size_t bl_size=0;
>
> int need_brake=0;
>
> if ((dst_ret=calloc(1, 1))==NULL)
>   {
>   perror("replace::calloc");
>   return NULL;
>   }
>
> while (1)
>  {
>  if ((end_pos=strstr(start_pos, delim))==NULL)
>   {
>   end_pos=(char *)src+strlen(src);
>   need_brake=1;
>   }
>
>  bl_size=(end_pos-start_pos)+strlen(repl);
>  dst_len+=bl_size;
>  if ((dst_tmp=(char *)realloc(dst_ret, dst_len))==NULL)
>   {
>   if (dst_ret) free(dst_ret);
>   perror("replace::realloc");
>   return NULL;
>   }
>  dst_ret=dst_tmp;
>  strncat(dst_ret, start_pos, bl_size-strlen(repl));
>
>  if (need_brake) break;
>
>  strcat(dst_ret, repl);
>  start_pos=end_pos+strlen(delim);
>  }
>
> return dst_ret;
>}
>
>int main(int argc, char ** argv)
>{
> char str[100]="aaa\nbbb\r\nccc\n";
> char * str1;
> char * str2;
>
> str1=replace(str, "\r\n", "<br>");
> if (str1==NULL) return 1;
>
> str2=replace(str1, "\n", "<br>");
> if (str2==NULL)
>  {
>  free(str1);
>  return 1;
>  }
>
> printf("[%s]\n", str);
> printf("[%s]\n", str2);
>
> free(str1);
> free(str2);
>
> return 0;
>}
>
>Кое-что можно подоптимизировать (компилятор не станет кэшировать результаты strlen и подобных вещей,
>неплохо бы самому), ну и конечно, можно ввести проверки на различные
>ситуации "от дурака", но мы пока решим, что программер сам себе
>не вредитель :)

а shell  не пойдёт?
я тоже в данный момент занимаюсь этим
на с у меня лучше получется
поэтому заставлаю себя тоже самое делать на shell
такие два скриптика
один превратить txt файл в html
второй сгенерировать простенький index.html
полезно когда с инета скачаеш кучу html
неудобно и медленно открывается из файл менеджера
1. text-to-html
#!/bin/bash -x

HEADER="<html>
<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=koi8-r\">
<title></title>
</head>
<body>
<table width=100%>
<tr>
<td>
<font size=4>
<div align=\"justify\">
"
FOOTER="
</div>
</font>
</td>
</tr>
</table>
</body>
</html>
"
HTML=".html"
for f in *.txt
do
    echo > "$f$HTML" "$HEADER"
    cat -E "$f" | sed -e "s/[$]/<br>/g" >> "$f$HTML"
    echo >> "$f$HTML" "$FOOTER"
done
  
2. - generate-index
#!/bin/bash

HEADER="<html>
<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=koi8-r\">
<title></title>
</head>
<body>
"
FOOTER="
</body>
</html>
"
echo >> gen-index.html "$HEADER"

for f in [^index]*.htm*
do
    echo >> gen-index.html "<a href=\"$f\">$f</a><br>"
done
  
echo >> gen-index.html "$FOOTER"


 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру