Téléchargement
illégal
Posez votre question Signaler

Langage C, pointeurs, chaîne de caractères [Résolu]

nepthuna - Dernière réponse le 3 juin 2008 à 20:26
Bonjour,
je commence en programation C, je fait un petit programme qui doit permettre d'écrire 2 mots et d'afficher les plus long. Je voudrais le faire sans passer par un tableau mais juste des pointeurs.
quand je compile le programme ça m'affiche que tout va bien, mais au moment de l'éxecuter il ne va pas jusqu'au bout. J'ai utilisé le débugger, mais je sais pas trop m'en servir, mais aparament il doit y avoir un problème dans cette boucle:
for ( ; *p != '\0' ; p++, i++)
je ne sais pas si c'est possible de mettre un pointeur en condition?
sinon la fonction entière qui pose problème c'est celle la:
char *compte(char *tab1, char *tab2)
{
int i=0, j=0;
char *p;
p = tab1;
for ( ; *p != '\0' ; p++, i++)
p=tab2;
for ( ; *p != '\0' ; p++,j++)
if (i > j)
return tab1;
if (j > i)
return tab2;
}
tab1 et tab2 sont une chaine de caractères contenant chacun un mot, et *p avance dans le mot, et i et j comptent.
il y a peut-être beaucoup plus simple mais j'aimerais comprendre pourquoi ça marche pas.
merci
Lire la suite 

Langage C, pointeurs, chaîne de caractères »

2 réponses
Réponse
+2
moins plus
en C, une chaîne de caractère est un tableau. Un tableau de caractères, dont le dernier est '\0', le fin de chaîne.
Une chaîne peut être désignée par un pointeur (sur charactère) qui pointe lsur le premier caractère de la chaîne.

Tes boucles for() n'ont pas de corps de fonction, il faut néamoins mettre un ';' après :

for ( ; *p != '\0' ; p++, i++);

sinon il va exécuter l'instruction suivante à chaque boucle au lieu d'une seule fois après être sorti de la boucle !!!

De sorte que ta fonction est correcte au niveau compilation, mais cela ne fait pas ce que tu attends !

Remarque que tu peux écrire de façon plus simple :

for ( ; *p ; p++ , i++ );

ou encore plus simplment toute ta fonction en une seule ligne :

char *compte(char *tab1, char *tab2) { return ( (strlen(tab1) > strlen(tab2) ? tab1 : tab2 ); }
Ajouter un commentaire
Réponse
+1
moins plus
slt tous
j'ai un program en c ,je veux que m'apronne cette prog

struct list *creation()
{
struct neoud *p;
struct list *plist;
plist=malloc(sizeof(*plist));
if (plist=NULL)
{
p=malloc(sizeof(*p));
if (p !=NULL)
{p-> suivant=NULL;
p-> valeur=0;
plist-> start=p;
plist->courant =NULL;
}}
else
{
printf("___________");
return plist;
}}
void insertion (struct list *p, void *val)
{
struct neoud *pi;
pi=malloc(sizeof(*pi));
pi-> valeur =val;
if(pi)
{
if (p->courant)
{
p-> start->suivant=pi;
pi->suivant=NULL;
}}
else
{
pi->suivant =p->courant->suivant;
p-> courant->suivant=pi;
}}
Ajouter un commentaire
Ce document intitulé « langage C, pointeurs, chaîne de caractères » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?