Bonsoir tout le monde. Voilà mon programme compile sans erreurs mais plante quand je l'execute (dès que je rentre le 1er mot).
Je pense que c'est un problème d'allocation dynamique mais je ne vois pas où se trouve mon erreur ni Visual Studio d'alleurs ! J'aurais besoin d'avis d'experts...

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
	char mot[51];
	char *pmotPlusLg;
	int lgmotPlusLg, lgMotLu, cpt=0;
 
	lgmotPlusLg=-1;
	pmotPlusLg = " ";
 
	//Prototypes
	void FONCTION(char *, int *, int *, char [], int);
 
	printf("\tLecture d'une suite de mots. \nArret a la lecture d'une * en 1er caractere.\n\nVeuillez entrer le mot : ");
	gets(mot);
	do
	{
		if((strcmp(mot, pmotPlusLg))==0)
			cpt++;
		else
		{
			lgMotLu=strlen(mot);
			if(lgMotLu>lgmotPlusLg)
				FONCTION(pmotPlusLg, &cpt, &lgmotPlusLg, mot, lgMotLu);
			else
			{
				if(lgMotLu==lgmotPlusLg)
				{
					if((strcmp(mot, pmotPlusLg))<0)
						FONCTION(pmotPlusLg, &cpt, &lgmotPlusLg, mot, lgMotLu);
				}
			}
		}
		printf("Veuillez rentrer le nouveau mot : ");
		gets(mot);
	}
	while(mot[0]!='*');
	free(pmotPlusLg);
	printf("Le mot le plus long est : %s avec une longueur de : %d. Il a ete lu %d fois\n", pmotPlusLg, lgmotPlusLg, cpt);
 
	system("PAUSE");
 
	return 0;
}
 
//Fonction
 
void FONCTION(char *i, int *c, int *lgi, char mLu[], int lgmLu)
{
	free(i);
	*c=1;
	i=(char *) malloc(lgmLu + 1);
	strcpy(i, mLu);
	*lgi=lgmLu;
}
Merci d'avance.