Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

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

 
Антон   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-75887
Asker
2003-02-13 01:37
2003.02.24
массивы


1-75911
nikulin
2003-02-14 12:11
2003.02.24
Как получить изображение раб стола???


1-76010
vogus
2003-02-12 19:17
2003.02.24
Почему MDIChild сначала появляется, а потом разворачивается


14-76145
Sergey13
2003-02-06 08:34
2003.02.24
Закон о языке


1-76013
bsa
2003-02-13 09:25
2003.02.24
Delphi7 - компонент TPopupActionBar