Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » spaces entfernen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
14.05.2004, 00:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zu schreiben ist folgende funktion...

C++:
void remove_spaces(char*s);


diese funktion soll einfach nur alle führenden spaces aus dem string s löschen...



C++:
int main(){
char s[128] = "     Hello World";
printf("%s\n",s);
StrRmLe(s);
printf("%s\n",s);//Hier  sollte Hello World dann nicht mehr um 5 Leerzeichen versetzt sein
}





so für die golfer...ich sag mal par 100 innerhalb der geschweiften klammern...(habs selber noch nicht geproggt werds gleich mal versuchen...)
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.05.2004, 00:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ok die 100 ist locker zu schaffen bin gleich mit meinem ersten versuch runtergekommen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.05.2004, 01:07 Uhr
Pablo
Supertux
(Operator)



C++:
char* ltrim(char* dest, const char* src)
{
        int s=strlen(src);
        char s[MAX_LENGTH], *tmp;
        strcpy(s,src);
        tmp=s;
        if (!*src) { *dest=0; return dest;  }
        s--;

        while(s-- && (isspace(*tmp)&&isspace(*(tmp+1))) )
                tmp++;
        if (isspace(*tmp)) tmp++;

        strcpy(dest, tmp);

        return dest;
}




Die Funktion hatte ich vor 100 Jahren oder so geschrieben

edit--
Jetzt, so on the fly

C++:
char* ltrim(char* d, const char* s){while(isspace(*s++));strcpy(d,--s);return d;}



So, alles zusammen (mit char* ltrim und so) habe ich 101, nur die Funktion 46
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 14.05.2004 um 01:17 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.05.2004, 02:20 Uhr
0xdeadbeef
Gott
(Operator)



Code:
#!/bin/sh
echo $*|sed 's/ //g'


Na, Spaß beiseite:

C++:
void remove_spaces(char*s){while(*s){while(*s)if(*s-32)++s;else memmove(s,s+1,strlen(s))}


Das macht 52 zwischen den Klammern.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 14.05.2004 um 02:32 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.05.2004, 02:34 Uhr
0xdeadbeef
Gott
(Operator)


Ups - es geht ja nur um führende Spaces... Na dann halt:

C++:
void remove_spaces(char *s){while(*s==32)memmove(s,s+1,strlen(s));}


strcpy geht hier nicht, weil die Speicherbereiche sich überschneiden. Das macht 38.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 14.05.2004 um 02:49 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.05.2004, 07:35 Uhr
Pablo
Supertux
(Operator)


Was ist wenn man auch TABS in den führenden spaces hat? Die sollten auch als spaces gelten, oder?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.05.2004, 07:39 Uhr
Pablo
Supertux
(Operator)


Dann

C++:
void ltrim(char* d, const char* s){while(isspace(*s++));strcpy(d,--s);}



Dann machst das 35
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.05.2004, 09:11 Uhr
(un)wissender
Niveauwart


Irgendwo ist meine Schleife verloren gegangen, findet sie einer?
(Also 0 innerhalb der Schleife, gewonnen!)


C++:
#include <algorithm>
#include <iostream>
#include <string>
#include <cctype>

int main()
{
    std::string testString = "     Hello World";
    testString.erase(
        testString.begin(),
        std::find_if(
            testString.begin(), testString.end(), isgraph));
    std::cout << testString << std::endl;
    return 0;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.05.2004, 09:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
was mich so ankotzt ist das ich es irgendwie nicht mehr schaffe ein rätsel zu stellen bei dem ich ne andere lösung habe als du...irgendwie laufen die neuen rätsel immer darauf hinaus das am ende alle die gleiche lösung haben(früher sind mir irgendwie rätsel mit mehr lösungsmöglichkeiten eingefallen)

C++:
void remove_spaces(char*s){for(;*s==32;)memmove(s,s+1,strlen(s));}




mein erster ansatz war übrigens so...

C++:
void remove_spaces(char *s){
int x=strlen(s);
for(char *p=s;*p==' ';++p);
memmove(s,p,x+1-(p-s));
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 14.05.2004 um 09:47 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.05.2004, 10:06 Uhr
(un)wissender
Niveauwart


@Windalf
Dies sollte den Konventionen entsprechen und mich entgültig zum absoluten Sieger machen!
Habe immer noch 0 in der Schleife.


C++:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <cctype>

void remove_spaces(char * str)
{
    std::string testString = str;
        testString.erase(
            testString.begin(),
            std::find_if(
                testString.begin(), testString.end(), &isgraph));
    
    size_t length = testString.size();    
    str[length] = '\0';
    memmove(str, testString.c_str(), length);
}

int main(){
    char s[128] = "     Hello World";
    printf("%s\n",s);
    remove_spaces(s);
    printf("%s\n",s);
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: