bestimmte zeichen aus C string entfernen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/bestimmte_zeichen_aus_c_string_entfernen_137689/page_1 - zur Vollversion wechseln!


bBU.CyTrobIc schrieb am 25.02.2005 um 16:20

ich frag einfach mal :-P

also ich habe ein kleines C Programm geschrieben, wo ich eine textdatei zeilenweise auslese.

ich möchte aber jetzt das aus diesen zeilen alle sonderzeichen und das minus (-) verschwindet. str_replace wie in PHP gibts ja leider nich in C :lol:

jemand ne idee ?

thx


mat schrieb am 25.02.2005 um 16:27

per schleife alle zeichen durchgehen und alle gültigen zeichen in einen neuen string übernehmen.


bBU.CyTrobIc schrieb am 25.02.2005 um 17:31

tjo soweit bin ich auch :)

nur wie, schleife is klar nur hab ich:

variable = "dies-ist-ein-kleiner-text";

wie soll ich in dem string zeichen für zeichen durchgehen ? oO

thx 4 help


mat schrieb am 25.02.2005 um 18:05

da musst du c lernen, weil das ist schon ziemlich grundlegendes wissen.

trotzdem, hier in der unoptimiertesten form ever:

Code:
char source[] = "dies-ist-ein-kleiner-text",
       *temp    = new char[strlen(source)];

int j = 0;
for (int i=0;i != strlen(source);i++)
{
  if (source[i] == '-')
   continue;

  temp[j++] = source[i];
}

temp[j] = 0;

char *output = strdup(temp);

das ist rohform und soll zu einem denkanstoss beitragen.


Master99 schrieb am 25.02.2005 um 18:16

Zitat von bBU.CyTrobIc
ich möchte aber jetzt das aus diesen zeilen alle sonderzeichen und das minus (-) verschwindet. str_replace wie in PHP gibts ja leider nich in C :lol:

kommt drauf an was du hier jetzt unter "c" verstehst.... wenn es wirklich reines c ohne schnickschnack is, dann hast du recht, aber ne replace-fkt gibts in der mfc oder .net natürlich genauso.


bBU.CyTrobIc schrieb am 25.02.2005 um 19:41

@master99
jo reinstes c

@mat
dank dir, ich teste mal n bischen damit rum
hab halt nur noch php im kopf daher das unwissen... man vergisst so schnell :)


ica schrieb am 27.02.2005 um 11:30

Zitat von bBU.CyTrobIc
hab halt nur noch php im kopf daher das unwissen... man vergisst so schnell :)

also sowas vergisst man bestimmt nicht wenn man irgendwann mal auch nur hablwegs c konnte.


samuel schrieb am 27.02.2005 um 17:24

Zitat von bBU.CyTrobIc
variable = "dies-ist-ein-kleiner-text";

wie soll ich in dem string zeichen für zeichen durchgehen ? oO

wtf? du hast ja offensichtlich ueberhaupt keine ahnung was ein string in C ist?


ich empfehle "the c programming language" von kernigham & ritche

sollte wunder bewirken...

sam


SYSMATRIX schrieb am 27.02.2005 um 17:26

hehe true, schöner wäre noch gewesen $varibale ="dies ist ein kleiner test" :D


d3cod3 schrieb am 27.02.2005 um 17:35

Zitat von samrider
ich empfehle "the c programming language" von kernigham & ritche

sollte wunder bewirken...

sam

kann ich zustimmen, einmal da durch und es gibt mal wesentlich weniger fragen.


EG schrieb am 27.02.2005 um 17:37

naja wenn er schon aus files auslesen kann wirda ned soo dumm sein! ;)

also wie oben schon erwähnt:

zeile auslesen und in string rein
string zeichenweise durchgehn und mit switch alle ungültigen zeichen überprüfen

sobald das ding am ende ist ('\0' ...strings in c sind ja bekanntling null-terminiert!) weiterverarbeiten (wie auch immer du das machen willst)!

und dann nächste zeile auslesen das selbe spiel nochmal!
bis fread 'EOF' zurück gibt (end of file)!


atrox schrieb am 02.03.2005 um 19:05

ganz ohne zusätzlichen puffer geht es zb so:

Code:
void strremove(char* source,char ch) { 
        char* target=source;
        for (;(*target=*source)!=0;source++)
                if (*target!=ch) target++;
}


bBU.CyTrobIc schrieb am 03.03.2005 um 23:28

hab schon was anderes gemacht :)

btw: ich bin nich blöd, mir fallen halt ab und zu die einfachsten sachen nicht mehr ein...


Burschi1620 schrieb am 03.03.2005 um 23:33

@mat, ja wie schön dass das grundlegendes is, das kenn ich noch nichteinmal und dabei soll ich nächstes jahr µcontroller programmieren! :bash:

Ich hätte es so gemacht:
Schleife durchlaufen lassen
Dann if die jedes zeichen einzeln überprüft
dann fehlt ma da plan weil ich nicht weiß wie ich die zeichen alle um ein feld weiter vor rücke

aber ich glaube das dürfte so ziemlich genau auf des rauskommen was mat hat

ah mir ist gerade eine lösung eingefallen für mein problem:
man kopiert einfach die zulässigen buchstaben in einen neuen string :)


watchout schrieb am 03.03.2005 um 23:44

Zitat von Burschi1620
@mat, ja wie schön dass das grundlegendes is, das kenn ich noch nichteinmal und dabei soll ich nächstes jahr µcontroller programmieren! :bash:
Gottseidank ist die Welt ungerecht.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025