je crois que j'ai plus ou moins compris ce que tu voulais dire thomas.
Je connais pas la technique buffer-Overflow mais je vais me renseigner la dessus le code fonctionne mais maintenant il me renvoie segmentation fault quand il y a plus de 19 mots dans la liste j'y comprends rien...
[^] # Re: Les tableaux c'est pas beau...
Posté par arnohoho . En réponse au message Tableau dynamique de pointeur vers char. Évalué à 0.
Je connais pas la technique buffer-Overflow mais je vais me renseigner la dessus le code fonctionne mais maintenant il me renvoie segmentation fault quand il y a plus de 19 mots dans la liste j'y comprends rien...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
/* Ouverture du fichier de configuration pour y récupérer la liste de processus */
FILE *fp;
if ((fp = fopen("proc_liste.conf", "r")) == NULL)
{
fprintf(stderr, "\nErreur à l'ouverture du fichier");
exit(1);
}
/* Lecture du contenu du fichier caractà ̈re par caractà ̈re et stockage en mémoire du fichier */
char now[2] = "a";
char prec = '0円';
char **message;
long count = -1;
message = (char **)calloc(1, sizeof(char *));
while ((now[0] = fgetc(fp)) != EOF)
{
/* Vérifie si c'est un nouveau mot pour stocker, sinon complete le mot avec la nouvelle lettre */
if (isalnum(now[0]) != 0 && isalnum(prec) == 0)
{
count++;
if (count > 0)
message = (char **)realloc(message, (count + 1) * sizeof(char *));
message[count] = malloc(sizeof(char) * 2);
strcat (message[count], now);
}
else if (isalnum(now[0]) != 0 && isalnum(prec) != 0)
{
message[count] = realloc(message[count], (strlen(message[count]) + strlen(now) + 1));
strcat (message[count], now);
}
prec = now[0];
}
/* affichage du fichier maintenant contenu en mémoire */
long e;
for (e = 1; e <= count; e++)
puts(message[e]);
/* liberer la mémoire utilisée */
long i;
for (i = 0; i <= count; i++)
free(message[i]);
fclose(fp);
return(0);
}
quand il y a que 19 mot dans le fichier ça fonctionne plus le prog me fait des problemes.