kotu a dit :
j'ai établi le code suivant mais pour ne pas changer j'ai une nouvelle fois une erreur ... seulement je ne la trouve pas non plus ...
si quelqu'un peut m'aider à corriger ma version .... ou au pire m'en donner une autre si vous ne savez pas comment corriger la mienne
Ton code commenté (mais non corrigé)
#include <stdio.h>
#include <stdlib.h>
/* -ed-
#include <malloc.h>
non standard et inutile.
*/
#define C 256
/* -ed- pourquoi une globale ? */
char *repertoire;
/* -ed- pourquoi un retour de type char, de plus, non utilise ! */
char repCourant()
{
repertoire = (char *)malloc (C * sizeof(char));
/* -ed-
pourquoi un cast ?
sizeof (char) vaut 1 par definition.
pourquoi allouer une taille fixe. Qui dit qu'elle est suffisante ?
*/
char *adresse;
char rep[C];
*adresse = getcwd (rep,C-1);
/* -ed-
pourquoi '*adresse' ?
quel est le type retourne par getcwd() ?
*/
if (adresse)
{
repertoire = &rep[0];
/* -ed-
quel est le type de repertoire ?
quel est le type de &rep[0] ?
pourquoi ecrire du code incoherent ?
pourquoi ne pas lire les warnings ?
*/
free(repertoire);
/* -ed-
vu que repertoire a ete modifie depuis le malloc(),
il y a peu de chance pour que ce code ait un sens.
*/
}
}
int main ()
{
repCourant();
printf("%s\n",&repertoire[0]);
/* -ed-
acceder a un bloc libe're' invoque un comportement indefini.
*/
/* -ed- compatibilite C90 */
return 0;
}