Salut tout le monde,

Un petit pb en C, quelqu'un peu t'il m'aider?

Dans le code suivant je cherche à obtenir les chaînes suivantes:

"%.15s" dans la fonction printf
"%15s" dans la fonction scanf

le tout via les macros mais ça bug et je vois pas d'ou ça vient.

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
#include <stdlib.h>
#include <stdio.h>
#define BUFFER_SIZE             16
#define AZT_DATA_SIZE(x)        ((x)-1)
#define AZT_INPUT_FORMAT(n)     % ## AZT_DATA_SIZE(n) ## s
#define AZT_OUTPUT_FORMAT(n)    %. ## AZT_DATA_SIZE(n) ## s
 
int main(void)
  {
    char *sp_AZT=malloc(BUFFER_SIZE);
    int i;
 
    for (i=0; i<BUFFER_SIZE; i++) sp_AZT[i]=0;
    scanf(AZT_INPUT_FORMAT(BUFFER_SIZE), sp_AZT);
    printf(AZT_OUTPUT_FORMAT(BUFFER_SIZE) "\n", sp_AZT);
    free(sp_AZT);
    return(EXIT_SUCCESS);
  }