Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];

Вниз

Помогите написать одну функцию...   Найти похожие ветки 

 
Антон   (2003-02-08 12:48) [0]

Помогите написать одну функцию, которая будет фильтровать строку. Если она встречает "\x01", то вместо этого пишет символ под номером 1, если встречает "\\", то пишет "\".

Я кое-что написал, но дальше как не знаю. Помогите, пожалуйста.

void filter(char *str)
{
char *pos;

while (TRUE)
{
pos = strstr(str, "\\\\");
if (pos == NULL) break;
}
}


 
Reindeer Moss Eater   (2003-02-08 13:24) [1]

function magicfunction(const AString:string):string;
begin
if AString = "\x01" then Result := "1"
else if AString = "\\" then Result := "\"
else
Result:=AString;
end;


 
Reindeer Moss Eater   (2003-02-08 13:25) [2]

Точнее так:
function magicfunction(const AString:string):string;
begin
if AString = "\x01" then Result := #1
else if AString = "\\" then Result := "\"
else
Result:=AString;
end;



 
Антон   (2003-02-08 13:44) [3]

Упс. Не функцию, а процедуру надо написать, которая фильтрует указанную строку. На C++ :).

Reindeer Moss Eater (08.02.03 13:25)
А что если AString = "asd\x01фыв" ??



 
Reindeer Moss Eater   (2003-02-08 14:00) [4]

А ничего.

Если она встречает "\x01", то вместо этого пишет символ под номером 1, если встречает "\\", то пишет "\".

Я должен догадаться, что ты от нее ждешь в любом случае?


 
Anatoly Podgoretsky   (2003-02-08 14:11) [5]

procedure magicfunction(const AString:string);
begin
if AString = "\x01" then Result := #1
else if AString = "\\" then Result := "\"
else
Result:=AString;
end;


В C++ нет процедур!


 
Антон   (2003-02-08 14:18) [6]

Reindeer Moss Eater (08.02.03 14:00)

Объясняю. Если AString = "asd\x01фыв", то ничего у тебя не выйдет. Надо использовать pos. На дельфях я могу такое сделать, но мне надо на C.


Anatoly Podgoretsky © (08.02.03 14:11)э

Что такое процедура, что такое функция? Функция - возвращает результат своей работы (int main();). Процедура ничего не возвращает (void filter();). Понятно, а?


 
uw   (2003-02-09 10:37) [7]

void filter(char *s){
int i = 0, j = 0;
int wasSlash = 0;

while(s[i]){
if(s[i] == "/"){
if(!wasSlash)
s[j++] = "/";
wasSlash = 1;
}else{
wasSlash = 0;
if(s[i] == 1)
s[j++] = s[0]; /* May be I"m wrong here */
else
s[j++] = s[i];
}
i++;
}
s[j] = 0;
}


 
Anatoly Podgoretsky   (2003-02-09 11:34) [8]

Антон (08.02.03 14:18)
Правильно!
Так что то теперь у тебя не должно быть особых проблем с преобразованием фцнкции в процедуру.
Но в твоем примере логически все равно функция с возвращением void, так как нет в Си процедур, то им приходится изврщаться вот таким способом.

А вот это Антон (08.02.03 13:44) надо делать было сразу, что бы тебе не пытались давать примеры на Дельфи, если свое время не ценишь, то цени хотя бы чужое.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
14-76125
Сатир
2003-02-06 13:59
2003.02.24
Забыл математику, а справочника под рукой нет:(


3-75759
zx1
2003-02-05 17:12
2003.02.24
Программирование БД


1-75974
Kolius
2003-02-12 12:44
2003.02.24
Поиск в базе данных


14-76116
Петр 1
2003-02-05 19:44
2003.02.24
Указ о достоинстве гостевом на ассамблеях имеющем.


1-75948
Gaber
2003-02-05 12:42
2003.02.24
Отчет Word





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский