PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einzelne Zeichen aus Zeichenkette entfernen ?



Prick
05-06-2002, 22:49
Hallo Community,

ich habe ein kleines Problem und zwar möchte ich in C aus einer Zeichenkette (zb. "das|ist|ein|test") ein bestimmtes Zeichen entfernen. In diesem Falle wäre es das "|", so dass das die Zeichenkette wie folgt lautet: "dasisteintest".
Sollte jemand eine Idee haben, wäre ich auf eine Antwort sehr dankbar.

Danke im Vorraus,
Prick

anda_skoa
06-06-2002, 08:33
void removeChar(char* string, char remCh)
{
int pos;
for (pos = 0; pos < strlen(string); ++pos)
{
if (strlen[pos] == remChar)
{
int len = strlen(string);
len -= pos;
strncpy(string[pos], string[pos+1], len);
}
}
}


Nicht getestes, so ähnlich sollte es aber gehen.

Ciao,
_

Demonus
06-06-2002, 09:11
Am einfachsten gehts so:



char array[]="Dies!ist!ein!Test";
char *ptr;
int i;

for(i=0;array[i]!='\0';i++){
if(array[i]=='!'){
ptr=&array[i+1];
array[i]=0;
strcat(array,ptr);
i--;
}
}

anda_skoa
06-06-2002, 12:50
Ah, du hast recht. :)

aray{i] != '\0' ist wirklich besser als jedesmal strlen, und strcat ist auch einfacher

Muß ich mir merken.

Ciao,
_

Demonus
06-06-2002, 13:16
Auf die einfachsten Lösungen kommt man meist immer erst,
wenn man die schwierigste schon programmiert hat.

Prick
06-06-2002, 14:10
Dankeschön!

Prick
06-06-2002, 19:45
nochmal eine Frage:
Wäre es nun auch möglich aus dem zu ersetzenden Zeichen ein Leerzeichen einzusetzen, so dass der String dann so aussieht: "Das ist ein Test" ?

Danke nochmals.

Boron
06-06-2002, 20:11
Einfach mit einer Schleife durch den String gehen und jedes einzelne Zeichen prüfen ob es ein "unerwünschtes" Zeichen ist und in dem Fall durch das Leerzeichen ersetzen:

char array[] = "Dies!ist!ein!Test";
int i = 0;
while ( array[i] != '\0')
{
if ( array[i] == '!' )
{
array[i] = ' ';
}
i++;
}
Gruss Boron