Форум: "Потрепаться";
Текущий архив: 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