2010-02-16 5 views
-1

J'essaie de supprimer des espaces de la fin d'un tableau char (chaîne).Coincé avec la syntaxe C

C'est le pseudo code de ce que je fais, mais il continue de supprimer toute la chaîne:

if(string length - 1 != a space) 
    return 

Dans le cas contraire, il doit être égal à un espace,

while *mypointer-- != a space 
//This should loop back to where there is a character. 

En dehors du tout boucle, j'ajouter maintenant l'un au pointeur en faisant

mypointer ++; 

puis définissez MonPointeur « \ 0 » pour signaler la fin de la chaîne. Je fais quelque chose de fondamentalement faux à l'intérieur de mon temps, mais je n'arrive pas à le comprendre. Qu'est ce que ça pourrait être?

+7

pourquoi ne pas poster le code C que vous avez écrit? –

Répondre

5

Un peu voyance:

while(*mypointer == a space) { 
    --mypointer; 
} 
mypointer[1] = '\0'; 

Notez qu'il est == un espace non = un espace.


Edit: Si je vais écrire, j'utiliserions probablement vraiment quelque chose comme:

#include <string.h> 
... 

char *mypointer = strrchr(string, ' '); 
if (mypointer) *mypointer = '\0'; 
+0

Vous devrez écrire un octet '\ 0 'plus loin, vous écrasez maintenant le dernier caractère non-espace. – Wim

+0

Très bon point. Fixé. –

+3

ne pas oublier que très mauvaises choses peuvent se produire si votre chaîne est tous les espaces. – plinth

0

Sans le code, nous pouvons deviner simplement:

Comment est mypointer initialisés?

Etes-vous sûr de la condition de boucle while? Devrait-il être alors que «le dernier caractère est l'espace»?

1

Vous définissez probablement mypointer à \0, ce qui définit le pointeur sur NULL. Vous devez définir mypointer[1] à \0. Aussi, assurez-vous que vous faites la bonne chose pour le bord des cas suivants:

  • lorsqu'une chaîne est tous les espaces,
  • lorsque la longueur de chaîne est 0.
0

Une légère amélioration peut-être:

while(*mypointer == a space) { 
    *mypointer-- = '\0'; 
} 
0

Jetez un oeil à ce code qui fait le travail exact de dépouiller les espaces de la fin de la chaîne ... ceci est de l'archive Snippets - c'est une chose éducative à regarder wha t se passe lors du passage par le débogueur et la collection très utile de code C aussi ...