begin process at 2012 05 28 19:38:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

[debutant]Les pointeur


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

[debutant]Les pointeur

vendredi 3 juin 2005 à 17:57:55 | [debutant]Les pointeur

firemax

Bonjour

Suite a un de mes autres messages j'ai quelques question sur les pointeurs

1/Un pointeur represente bien une adresse d'une autre fonction ? Donc que designe ceci :
char *tab[100];

2/Soit txt un tableau (char txt[100])
char *ptr = txt;
ptr contien quoi ? l'integralite de txt ?

3/if(*ptr == ' ') donc si la position actuel de ptr est un espace le programe rentre dans la boucle ? Mais alors  ptr++ incremente ptr de 1 mais comment savoir que c'est la position de ptr dans la chaine txt ou ce que represente l'adresse de ptr

4/tab[i] = ptr; ptr contiens alors la position du mot mais comment ca se fait que le mot qui suivent ne figure pas dans cette chaine ??

Je suis vraiment debutant donc pas la tete et je ne cherche qu'a comprendre

PS: voila le bout de code avec les pointeurs :

for(int j = 0; j < strlen(txt); j++)
{
  if(*ptr == ' ')
  {
    *ptr = 0;
    ptr++;
    tab[i] = ptr;
    i++;
    j++;
  }
  ptr++;
}


vendredi 3 juin 2005 à 18:13:44 | Re : [debutant]Les pointeur

xboxut

char *tab[100]; c un tableau de pointeur char de 100 entree

ptr contient l adresse de la premiere case de txt soit l adresse de txt[0]


*ptr represente la valeure de la variable a l adresse ptr, kan tu incremente ptr de 1 tu ogmente l adresse de 8 bits,si tu augmente *ptr de 1 tu ogmente de 1 la valeur pointé
par ptr

j comprend pas la 4 eme question


for(int j = 0; j < strlen(txt); j++) // on parcour la chaine
{
  if(*ptr == ' ')// si le charactere pointé a la valeur d un espace
  {
    *ptr = 0; //alors on met le charactere pointé a 0
    ptr++;//on ajoute 1 mot a l adresse
    tab[i] = ptr; //la chepas ce qu on fait :p ca a pas de rapport ac ce qu il y a avant et c con :p de choper l adresse de chaque char
    i++;
    j++;
  }
  ptr++;
}
vendredi 3 juin 2005 à 18:13:58 | Re : [debutant]Les pointeur

vecchio56

Administrateur CodeS-SourceS
1) un pointeur contient une adresse, pas forcément celle d'une fonction. Ca peut aussi être une variable.
char* tab[100] est tableau contenant 100 char*. Il faut donc le voir comme un tableau et non un pointeur
2) ptr pointe vers le début du tableau txt. En gros c'est la même chose, sauf que tu peux modifier ptr (ptr++), pas txt. Il faut que tu gardes en mémoire que un pointeur contient juste une adresse. La taille de ptr ne dépend pas de celle de txt. En ce sens un pointeur est seulement un entier que tu interprètes différemment (tu l'intèrprètes par indirection en général)
3) pas conpris la question
4) on a mis des 0 à la place des espaces, c'et pour ca que les mots qui suivent n'apparaissent pas (c'est le caractère 0 ou '\0' qui marque la fin d'un chaine)
Ca serait plus facile a expliquer avec un dessin

vendredi 3 juin 2005 à 18:19:30 | Re : [debutant]Les pointeur

vecchio56

Administrateur CodeS-SourceS
xboxut> On chope pas tous les char*, juste ceux qui sont après un espace
Regarde le pb initial: http://www.cppfrance.com/forum.v2.aspx?ID=473941
vendredi 3 juin 2005 à 18:21:21 | Re : [debutant]Les pointeur

xboxut

c vrai dsl j me suis un poil emporte :p normal ossi apres une journee de revision du bac :D
vendredi 3 juin 2005 à 18:54:11 | Re : [debutant]Les pointeur

firemax

tab[i] = ptr;

Le truc que je comprend pas encore c'est que d'apres ce que vous m'avez dit
*ptr //valeur
ptr //position

donc tab[i]=ptr contienderais la position dans ptr :s je suis vraiment dsl ca je pige pas encore

Mais j'ai compris pour les autres question comme quoi tous n'est pas perdu :)

PS:J'ai un probleme lors de la compilation :s

char *ptr = txt;
c:42: warning: initialization makes pointer from integer without a cast

for(int j = 0; j < strlen(txt); j++)
error: 'for' loop initial declaration used outside C99 mode

for(int j = 0; j < strlen(txt); j++)
c:43: warning: passing arg 1 of `strlen' makes pointer from integer without a cast
vendredi 3 juin 2005 à 19:13:55 | Re : [debutant]Les pointeur

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
tab[i] est un char*, et il pointe au même endroit que ptr, rien de plus a comprendre
tes erreurs son bizarres, elles parlent d'integer. Tu ne t'est pas trompé en déclarant txt?
La 2eme erreur c'est juste à cause du int j dans le for, déclare plutot j avant le for
int j;
for(j = 0; ...)

vendredi 3 juin 2005 à 19:18:55 | Re : [debutant]Les pointeur

firemax

Voila le code que j'ai fais et je vois pas de txt :s

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

void count();
void tri();
char txt[1000];

int main()
{
 printf("\n\nEntrer le texte de votre choix\n\n");
 fgets(txt,999,stdin);                 
 printf("\nVous avez rentre : %s\n\n",txt);
 count();

 return(0);
}

void count()
{
 int taille=strlen(txt);
 int caract=strlen(txt);
 int nb=0,i=0;

 for(i;i<taille;++i)
     {
             if((txt[i]== ' ') || (txt[i] == '\'') || (txt[i] == ',')){
             nb++;
             caract--;}
     }
 nb++; //car pas d'esapace en fin de ligne
    
 printf("Il y a : %d mot",nb);
 printf("\nIl y a %d caractere (sans espace)",caract-1);
}
void tri(txt)
{
    
char *tab[100];
int i = 0;
char *ptr = txt;
int j;
for( j = 0; j < strlen(txt); j++)
{
  if(*ptr == ' ')
  {
    *ptr = 0;
    ptr++;
    tab[i] = ptr;
    i++;
    j++;
  }
  ptr++;
}
    
}


vendredi 3 juin 2005 à 19:22:59 | Re : [debutant]Les pointeur

vecchio56

Administrateur CodeS-SourceS
void tri(txt) tu a oublié de mettre le type, peut être qu'il le suppose en int?
tu dois mettre void tri(char* txt)
Ce txt masque celui que tu as deja en global
vendredi 3 juin 2005 à 19:32:04 | Re : [debutant]Les pointeur

firemax

Ah oui


Je vous remerci :)




1 2 3

Cette discussion est classée dans : txt, ptr, char, debutant, pointeur


Répondre à ce message

Sujets en rapport avec ce message

pointeur sur une structure [ par xc78370 ] Bonjour, Voila mon probleme. si quelqu'un a une idée, mrci d'avance.j'ai plusieurs structures, du style :---------------------------------------struct FTP et fichiers [ par cobra176 ] j'ai créer un programme qui recherche des mots clée et affiche les lignes qui les contint dans des fichiers log qui eux sont contenu dans un serveur f conversion [ par anubis52100 ] je souhaiterai conaitre le code pour convertir un CString en Char*voila se que j'ai fait mais jarive pas a convertir strNom en char*j'y arive mais qua Je n'y comprend plus rien :-( [ par ChrOnOs83 ] Slt à ts,tout dabor je suis dsl mais je ne savai pa tro comen resumé mon pb en quelque mot et c pr cela ke je né pa fai un sujet clair.en realité jaim Attribution de caractere nul à un pointeur de caractere [ par Cako19 ] Bonjour,Je développe en C sous Visual C++.Je souhaiterais pouvoir affecter plusieurs caracteres nuls à une chaine de caracteres sans qu'elle se finiss c++ pointeur pour debutant [ par blastmanu ] Bonjour a tous et a toutes !!!Voila je debute dans la programmation et en particulier C++ et je galere un peu avec les pointeurs, l Pb Class et pointeur ... [ par payen ] salut a tous,j'ai un petit probleme en C++: j'ai definit une class CImage, avec entre autre, un pointeur vers une variable de type char (char *nom_ima Pointeur et liberation de memoire [ par Darkneon ] Salut, J'avais un probleme apres que je liberais de la memoire allouer a un pointeur, le message "Null pointer assignment" m'apparaisait toujours. Le Probleme complique sur pointeur mais reponse simple surement [ par MrKribou ] Un probleme de pointeur je pense.Je vous expose la situation :Dans une Classe (ClassEx) voila je fais un truc du genre :char* pChar = this->getInfo("i Gestion fichiers TXT [ par trystan007 ] Salut, je cherche une commande afin de gérer des fichier texte.En cherchant, je suis tombé sur la commande fopen, mais le code suivant  (code d'exempl


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

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