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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

probleme acces


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

probleme acces

dimanche 6 novembre 2005 à 10:48:29 | probleme acces

deck_bsd

Membre Club
Bonjour,

Voila j'ai crée la procédure suivante :
----------------------------------------------------------------------------
void ReversD(char *D_ptTextNoReverse)
{
    char D_cTextTmp[500]="";
    char D_cCar;
    int D_iSize,D_ia,D_ib=0;
   
    D_iSize=strlen(D_ptTextNoReverse);
    D_ia=D_iSize-1;
   
    //Remise des lettre dans le bon sens.
    while(D_ib<=D_iSize)
    {
        D_cCar=D_ptTextNoReverse[D_ib];
        D_cTextTmp[D_ia]=D_cCar;
        D_ia--;
        D_ib++;
    }
    strcpy(D_ptTextNoReverse,D_cTextTmp);
}
----------------------------------------------------------------------------

Tous fonctionne, il affiche a l'écrant la variable modifié avec le text dans le sens inverse et puis pouf juste après mon programme plante (surement un acces violation) mais je ne vois pas ou. Je l'ai déjà utiliser dans un de met programme mais la la variable D_ptTextNoReverse etait déclarée en global (char D_cText[350]) et donc on ne passait pas en paramettre un pointeur de type char mais bien la variable elle même. Je soupçone que le problème doit se trouver la mais je ne vois pas comment. Je voulait juste généraliser ma fonction pour la mettre dans mon .h snif lol

Merci d'avance.

dimanche 6 novembre 2005 à 11:53:41 | Re : probleme acces

MuPuF

Par hasard, as-tu mis le char null a la fin de la chaine ? Je crois pas moi en regarde ton prog, tiens nous informé
dimanche 6 novembre 2005 à 12:03:54 | Re : probleme acces

deck_bsd

Membre Club
non il n'y est pas, mais la n'est pas le problème vu que cette procédure marche très bien quand je transmet direct une variable et sa taille (ex :char variable[10]) mais pas avec un pointeur char. je pense que le problème vient de la. Surtout que j'ai fait ce que tu a dit mais que le résultat est le même, plantage :'( snif
dimanche 6 novembre 2005 à 12:26:58 | Re : probleme acces

BruNews

Administrateur CodeS-SourceS

Sur chaine vide '"" tu plantes à tout coup:

char D_cCar;
int D_iSize,D_ia,D_ib=0;
   
D_iSize=strlen(D_ptTextNoReverse);
D_ia=D_iSize-1;

DONC:
D_iSize = 0
D_ia = -1
D_ib = 0

while(D_ib <= D_iSize) S'EXECUTERA !!!
D_cCar=D_ptTextNoReverse[D_ib]; // OK
D_cTextTmp[D_ia] = D_cCar; // BADABOUM, D_cTextTmp[-1] !!!

Je t'avais pourtant déjà donné une fonction FIABLE et autrement mieux codée:
void __stdcall ReverseStr(char *psz)
{
  char *c = psz, a;
  while(*c) c++;
  while(psz < --c) {a = *psz; *psz++ = *c; *c = a;}
}

ciao...
[ Lien ]
BruNews, MVP VC++

dimanche 6 novembre 2005 à 12:31:47 | Re : probleme acces

24Karas

bon j'te l'ai faite en un peu plus optimisé je pense

FONCTION :

void Reverse(char *szInput)
{
    //vars
    char *sPtrStart;
    char *sPtrEnd;
    char cTmp;
    unsigned int uLen;

    // while there is letter to exchange
    uLen = strlen(szInput);            // length of the input string
    sPtrStart    = szInput;            // start of the string
    sPtrEnd        = szInput+uLen-1;    // end of the string
    while (sPtrStart < sPtrEnd)
    {
        // exchange letters
        cTmp        = *sPtrStart;
        *sPtrStart    = *sPtrEnd;
        *sPtrEnd    = cTmp;

        // move pointers
        sPtrStart++;
        sPtrEnd--;
    }
}

USAGE :
int main (void)
{
    //vars
    char *szBuff;

    szBuff = (char *)malloc(12);
    strcpy (szBuff,"1234567890A");
    fprintf (stderr,"%s\n",szBuff);
    Reverse(szBuff);
    fprintf (stderr,"%s\n",szBuff);
    free (szBuff);

    return (0);
}

marche très bien ici.
enfin test rapide pas que ça à foutre

++
dimanche 6 novembre 2005 à 12:32:23 | Re : probleme acces

24Karas

oupss trop rapide le brunews
dimanche 6 novembre 2005 à 13:38:49 | Re : probleme acces

deck_bsd

Membre Club
Oui Brunews, mais je la comprend pas ta solution c'est pour ca, déjà le while(*c) c'est quoi la condition??? lol
dimanche 6 novembre 2005 à 13:40:32 | Re : probleme acces

deck_bsd

Membre Club
BrunNews , pk D_iSize = -1, il ne prend pas la taille de la chaine vide, mais celle qui est passé en paramètre donc D_iSize n'est pas égale a -1.
dimanche 6 novembre 2005 à 14:00:39 | Re : probleme acces

BruNews

Administrateur CodeS-SourceS
Si chaine vide
D_iSize vaut 0 donc D_ia=D_iSize-1; met bien D_ia à -1, non ?

char *c = buf;
c pointe sur adresse de buf donc sur buf[0]
So buf est "ABC"
c pointe sur adresse du 'A'
donc *c vaut 'A'
while(*c) c++;
tant qu'il ne pointe pas sur 0 final on pousse c, ok ?

Faut absolument étudier les pointeurs si tu veux du code performant.

ciao...
[ Lien ]
BruNews, MVP VC++
dimanche 6 novembre 2005 à 14:49:24 | Re : probleme acces

deck_bsd

Membre Club
BuNews, dezo de te contredire mait j'utilise la chaine vide comme tu dit est simplement un chaine de car ou je vais mettre le mot reconstituer temporairement avant de l'affecter a la bonne variable, je l'initialise a vide c'est tout. Le strlen est la taille de la chaine qu l'on reçoit a moin d'etre un fiaifait malin personne ne voudrai inverser un text vide lol ;).

Pour ton exemple j'avai tout compris sauve le while (*c) je ne l'avait pas vu comme ça. Enfaite si je me trompe pas, la tu utilise l'arithémitque des pointeurs c'est bien cela? en faisant pas exemple c++ c'est égale a c+1 fois la taille de c(donc du type) ce qui fait avancer et donc passe a la lettre suivante c'est bien cela?


1 2

Cette discussion est classée dans : acces, char, ib, ia, pttextnoreverse


Répondre à ce message

Sujets en rapport avec ce message

Comment passer un CString en Char ??? [ par Bringdal ] Comment passer un CString en Char ???exemple : pour récupérer un chemin d'acces en vue d'une éxécution du fichier sélectioné par le user.CString Chemi Inverser une chaîne de caractères langage c+ [ par lina20 ] bonjour a tous; Comment faire pour inverser une chaîne de caractères dans Dev-c++ ,(c'est à dire si chaîne=jeudi alors chaîne #include #include<st Problème d allocation dynamique [ par Beqtb0x ] /*Bonjour a tous, je viens d'arriver sur ce site, je suis étudiant en première année d'informatique et j'ai un problème a un tp que même la prof n'est Erreurs C2065 et C2143 [ par thomas71 ] Bonjour, J'ai un petit problème avec le bout de code ci-dessous. Je travaille sous Visual Studio 2010. Deux erreur apparaissent lors de la compilatio [C++]Récupérer une classe retournée par un exe [ par infodaoudi ] bonjour, j'ai un programme qui contient une fonction principale [code=cpp]#pragma comment(linker,"/entry:LoadingParams") EParams LoadingParams(char * jeu d'echec C++ [ par CKBT ] bonjour, Je débute en programmation C++, je dois réaliser un pseudo jeu d'echec. Mais j'ai un soucis au niveau de l'echiquier. Je veux utiliser un tab PUISSANCE 4 C++ [ par AlenDjavo ] salut tout le monde je suis bloque dans mon pussance 4 je n`arive pas a afficher mon tableu quelquen peux me aider svp dsl pour le fautes. j'ai besoin l'aide pour correcte un code sur les arbre binaire de recherche (dictionaire) [ par momoinfo92 ] l'annonce de l'exercice est: créer un dictionaire français-anglais utilisé l'arbre binaire de recherche basée sur l'ordre alphabétique des mots chaq envoyer une lettre char, au pic 16F877 via un RS232 [ par mohsineb ] Salit tous le monde dans le cadre de mon projet de fin d'etudes, je cherche un code sert a envoyer une lettre char à un pic, via un cable rs232 le p


Nos sponsors


Sondage...

Comparez les prix

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 : 1,232 sec (3)

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