begin process at 2012 05 30 04:40:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

surpression espace


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

surpression espace

jeudi 4 mars 2010 à 16:04:50 | surpression espace

fadiam

Bonjour à tous

Je cherche le moyen de supprimer des espaces de telle sorte à ce qu'il n'en reste un. Lorsque l'on entre une chaine de caractère :
"code source" doit etre transformé en "code source"
de même s'il y a plusieurs mots :
"code source c'est top" -> "code source c'est top"

des idées?

J'ai fait ca :
Code C/C++ :
void suppr_espace(char * ligne){

    int j, i, n;
    n=strlen(ligne);

    for(i=0;i<n;i++)
        if( (ligne[i]==' ') && (ligne[i++]=' ')*/)
        {

                for(j=i++;j<n;j++)
                    ligne[j]=ligne[j+1];

        }
}


le problème est que s'il y a plus de deux espaces, ca ne marche plus, juste une espace est supprimé. Moi je veux qu'il ne reste plus qu'un espace.

merci
jeudi 4 mars 2010 à 16:22:45 | Re : surpression espace

tpoinsot

Bonjour,

C'est l'utilisation de i++ qui ne va pas. Et il ne faut pas limiter par i<n mais par i<n-1.

Code C/C++ :
        if( (ligne[i]==' ') && (ligne[i+1]=' ')*/)


ensuite :
Code C/C++ :
                for(j=i;j<n;j++)

Là, tu vas jusqu'à n pour choper le 0.
Mais après, il faut faire n=n-1 puisque tu as supprimé un caractère.

De toute manière tu vas te rendre compte que ta méthode non plus ne va pas.
Si tu la conserves, fais au moins
Code C/C++ :
    for(i=0;i<n-1;i++)
        while ( i<n-1 && (ligne[i]==' ') && (ligne[i+1]=' ')*/)

jeudi 4 mars 2010 à 16:24:42 | Re : surpression espace

tpoinsot

j'ai copié ta ligne avec */ dans le if : retire ça !
jeudi 4 mars 2010 à 18:11:09 | Re : surpression espace

BruNews

Administrateur CodeS-SourceS
// ON RETOURNE LA FIN D'ECRITURE POUR EVENTUEL CHAINAGE.
// strlen() est un 1er parcours, inutile donc nuisible aux perfs.
char* suppr_espace(char *psz)
{
char *d = psz, prev = 0, a;
while(a = *psz) {
if(a == ' ') if(prev == ' ') goto nextCHR;
*d++ = a;
nextCHR:
prev = a;
psz++;
}
*d = 0;
return d;
}


ciao...
BruNews, MVP VC++
jeudi 4 mars 2010 à 19:11:37 | Re : surpression espace

fadiam

oups j'avai pas vu le */!!. Je teste ca tout de suit. merci
jeudi 4 mars 2010 à 19:24:46 | Re : surpression espace

fadiam

char* suppr_espace(char *psz)
{
char *d = psz, prev = 0, a;
while(a = *psz) {
if(a == ' ') if(prev == ' ') goto nextCHR;
*d++ = a;
nextCHR:
prev = a;
psz++;
}
*d = 0;
return d;
}



Désolé, mais je connais pas la signification de nextCHR.
jeudi 4 mars 2010 à 21:00:42 | Re : surpression espace

BruNews

Administrateur CodeS-SourceS
C'est sur que si on cherche la 'signification' d'un label de saut, on n'est pas rendu.

ciao...
BruNews, MVP VC++
jeudi 4 mars 2010 à 23:05:58 | Re : surpression espace

fadiam

je voulais juste savoir ce que c'était étant donné que c'est la première fois que je vois cette expression. Ca ne me dit toujours pas ce que c'est : 'un label de saut'. merci
vendredi 5 mars 2010 à 07:56:36 | Re : surpression espace

tpoinsot

Réponse acceptée !
Une "étiquette", et quand tu fais "goto étiquette" le programme continue à l'instruction après l'étiquette.

Il parait que c'est une pratique très mauvaise. Elle est condamnée par le clergé.


Cette discussion est classée dans : ligne, code, source, espace, surpression


Répondre à ce message

Sujets en rapport avec ce message

Incomprehension d'une ligne de code [ par LordBob ] Bonjour a tous,voila je regardais une source du site, une de Brunews sur les boites de dialogue de type login/pass... et il y a une partie de la sour IMPORTANT, POUR TOUS [ par BruNews ] JE SOLLICITE VOTRE PARTICIPATION A LA BONNE TENUE DE CE SITE.Si vous voyez une source sans code, mieux qu'un commentaire sur la source, mettez moi un la fonction "afficher le source" de internet explorer [ par zip8000 ] Bonjour,je cherche a reproduire le resultat de la fonction "afficher la source" qui ouvre le code html d'une page internet. Mon but est de recuperer c effacer une ligne de l'ecran [ par amin79 ] Bonjour, Est ce qu'il y a une commende qui permet d'effacer une ligne de l'ecran ou une partie de la ligne. La commande delline(); ne marche pas avec Code source Emule [ par mafia_turc ] alors voila je cherche le code source d'emule pour un peu le modifier et plutot le compiler sur linuxparce que je préfère avoir un emule kademlia sur commment compiler un code source c++ [ par temoin ] TEMOIN Allo je besoin de l'aide pour savoir comment compiler des code source c++ quand tu as cinq a six fichier different moi je ne sais pas puisque a recherche code source jeu de voiture [ par Arnaud16022 ] hellodans le cadre d'un projet de jeu de type Vice City qui aboutira peut-etre hypotétiquement avec bcp de chance pas du tout dans environ 4 ans, je c Besoin d'aide sur une source [ par lepins ] Bonjour tout le monde,je suis etudiant et j'aimerai travailler sur le code:"LES SOCKETS C++ COMME DS MIRC : TOUT EST SIMPLE AVEC LA CLASSE PROSOCK"qui Erreur C++ [ par LordBob ] bonjours a tous,je suis en train de faire un programme, mais j'ai un probleme, une ligne de code qui bug, mais je n'arrive pas a savoir pourquoi... je utilisation en C (ou C++) de (source C ou) DLL [ par wipeout ] Mon but est d'utiliser des fichiers C (avec .c et .h... bien sur!) dans mon application linux et windows. Je dispose d'une DLL compilé (par http://www


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales