Функция на C которая удаляет повторяющиеся пробелы из char*
Функция на C которая удаляет повторяющиеся пробелы из char*
У кого-нить есть Функция на C которая удаляет повторяющиеся пробелы из char*???
спасибо!
спасибо!
на слабо брать никого не стоит!
есть понятие : "нет времени"
вот пример... (не мой)
int strip_spaces(const char *src, char *dst, int size)
{
int in_space = 0;
int count = size - 1;
if(!src || !dst || (size < 0))
return -1;
while(*src && (count >= 0))
{
if(!in_space)
{
if(*src == ' ')
{
in_space = 1;
}
*dst++ = *src++, --count;
}
else
{
if(*src == ' ')
{
src++;
}
else
{
in_space = 0;
}
}
}
*dst = '\0';
return size - count - 1;
}
есть понятие : "нет времени"
вот пример... (не мой)
int strip_spaces(const char *src, char *dst, int size)
{
int in_space = 0;
int count = size - 1;
if(!src || !dst || (size < 0))
return -1;
while(*src && (count >= 0))
{
if(!in_space)
{
if(*src == ' ')
{
in_space = 1;
}
*dst++ = *src++, --count;
}
else
{
if(*src == ' ')
{
src++;
}
else
{
in_space = 0;
}
}
}
*dst = '\0';
return size - count - 1;
}
Вот, что я своял на скорую руку(с примером использования)
Как видите, получилось значительно короче 
Код: Выделить всё
#include <stdio.h>
#include <string.h>
char* strip_spaces(const char* in, char* out)
{
char *p;
strcpy(out,in);
while(1)
{
p = strchr(out,' ');
if (p==NULL) break;
strcpy(p,p+1);
}
return out;
}
int main()
{
char *a = "ab ra ka da b ra";
char b[strlen(a)];
strip_spaces(a,b);
printf("%s\n",a);
printf("%s\n",b);
return 0;
}

- Говорят, пингвин - это ласточка разжиревшая от лени?
- Нет. Это ласточка беременная мыслью.
- Нет. Это ласточка беременная мыслью.
Да короче но не тот результат!
у тебя ф-ция удаляет все пробелы!
а нужно только повторяющиеся...т.е
из строки :
должно остаться :
вот так вот:)
у тебя ф-ция удаляет все пробелы!
а нужно только повторяющиеся...т.е
из строки :
Код: Выделить всё
fdFH EFEWHF gghlrg
Код: Выделить всё
fdFH EFEWHF gghlrg
вот так вот:)
Вот, пожалуйста:
Код: Выделить всё
#include <stdio.h>
#include <string.h>
char* strip_spaces(const char* in, char* out)
{
char *p;
strcpy(out,in);
while(1)
{
p = strstr(out," ");
if (p==NULL) break;
strcpy(p+1,p+2);
}
return out;
}
int main()
{
char *a = "ab raka da b r a";
char b[strlen(a)];
strip_spaces(a,b);
printf("%s\n",a);
printf("%s\n",b);
return 0;
}
- Говорят, пингвин - это ласточка разжиревшая от лени?
- Нет. Это ласточка беременная мыслью.
- Нет. Это ласточка беременная мыслью.
Код: Выделить всё
#!/usr/bin/ruby
string.gsub(/ {1,}/,' ')
#!/bin/sh
echo $@|sed 's/ / /g'
Последний раз редактировалось mend0za 16 июн 2003, 12:25, всего редактировалось 2 раза.
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...
- leikind
- Неотъемлемая часть форума
- Сообщения: 811
- Зарегистрирован: 20 июн 2002, 03:02
- Откуда: Брюссель
- Контактная информация:
[/code][uNIx]mend0za писал(а):ЗЫ: обожаю языковое сектантство, особенно в отношении ассемблера и Cи/C++Код: Выделить всё
#!/usr/bin/ruby string.gsub(/ {1,}/,' ') #!/bin/sh echo $@|sed 's/ / /g'
Код: Выделить всё
ruby -p -e '$_.gsub!(/ +/," ")'
Код: Выделить всё
perl -p -e 's/ +/ /'
Код: Выделить всё
awk '{gsub(/ +/," "); print}'

не ничего более отвратительного, чем обработка текстов в Cи
Pure Bourn Shell:
Pure Bourn Shell:
Код: Выделить всё
#!/bin/sh
for i in $@
do
RESULT="$RESULT $i"
done
echo $RESULT
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...
- leikind
- Неотъемлемая часть форума
- Сообщения: 811
- Зарегистрирован: 20 июн 2002, 03:02
- Откуда: Брюссель
- Контактная информация:
[uNIx]mend0za писал(а):не ничего более отвратительного, чем обработка текстов в Cи
Pure Bourn Shell:Код: Выделить всё
#!/bin/sh for i in $@ do RESULT="$RESULT $i" done echo $RESULT
И еще шелл:
Код: Выделить всё
#!/bin/sh
function strip(){
while test -n "$1"
do
res="$res $1"
shift
done
echo $res
}
echo `strip "qq w ereee rr"`