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
|
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
typedef enum
{ false, true }
bool;
static char const *error_table[] = {
"a",
"bb",
"cc c",
"dd dd",
};
static void add_error_msg (bool offers, size_t * n_errors, size_t i_module,
size_t i_error, char ***out)
{
*out = realloc (*out, (++(*n_errors)) * sizeof **out);
if (*out != NULL)
{
char *temp = malloc ((strlen ("Module XXXX : ") + 1 +
strlen (error_table[i_error])) * sizeof *temp);
if (temp != NULL)
{
sprintf (temp, "Module %u%c : %s", i_module, offers ? 'o' : 'e',
error_table[i_error]);
(*out)[*n_errors - 1] = temp;
}
else
fprintf (stderr, "Impossible d'allouer un message d'erreur");
}
else
fprintf (stderr, "Impossible d'allouer le log d'erreur");
}
/* ------------------------------------------------------------------------
Utilisation : */
int main (void)
{
char **log = NULL;
size_t n_errors = 0;
/* Par exemple */
add_error_msg (true, &n_errors, 0, 0, &log);
add_error_msg (true, &n_errors, 0, 2, &log);
add_error_msg (true, &n_errors, 0, 1, &log);
{
size_t i;
for (i = 0; i < n_errors; i++)
{
printf ("'%s'\n", log[i]);
}
}
return 0;
} |
Partager