Rechercher : dans
Par :

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

Dernière réponse le 3 jun 2008 à 20:26:55 nepthuna, le 23 jan 2008 à 20:25:59 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « langage C, pointeurs, chaîne de caractères » dans :
Langage C - Les chaînes de caractères Voir Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Les chaînes de caractères en C++ Voir Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Les pointeurs en langage C VoirDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...

1

tatou_38, le 23 jan 2008 à 20:52:04
  • +1

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 ); }

tatou_38
Angers

Répondre à tatou_38

2

 question, le 3 jun 2008 à 20:26:55

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;
}}

Répondre à question
Collection CommentÇaMarche.net