Bonjour,
Je cherche à faire des chaines de caractères de longueurs non constantes, par exemple:

Ce cas là fonctionne bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
static const int NX = 12;
static const int NY = 7;
NcFile dataFile("simple_xy.nc", NcFile::Replace);
NcDim* xDim = dataFile.add_dim("x", NX);
NcDim* yDim = dataFile.add_dim("y", NY);
NcVar *monChar = dataFile.add_var("monChar", ncChar, xDim, yDim);
char* monCharUn[] = {"aaaaaa","bbbbbb","cccccc","dddddd", "eeeeee", "ffffff", "gggggg", "hhhhhh", "iiiiii", "jjjjjj", "kkkkkk", "llllll"};
monChar->put(&monCharUn[0][0], NX, NY);
J'obtiens dans le NetCDF:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 monChar =
  "aaaaaa",
  "bbbbbb",
  "cccccc",
  "dddddd",
  "eeeeee",
  "ffffff",
  "gggggg",
  "hhhhhh",
  "iiiiii",
  "jjjjjj",
  "kkkkkk",
  "llllll" ;
Par contre si je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
static const int NX = 12;
static const int NY = 7;
NcFile dataFile("simple_xy.nc", NcFile::Replace);
NcDim* xDim = dataFile.add_dim("x", NX);
NcDim* yDim = dataFile.add_dim("y", NY);
NcVar *monChar = dataFile.add_var("monChar", ncChar, xDim, yDim);
char* monCharUn[] = {"aaaaaa","bbb","cccccc","dddddd", "eeeeee", "ffffff", "gggggg", "hhhhhh", "iiiiii", "jjjjjj", "kkkkkk", "llllll"};
monChar->put(&monCharUn[0][0], NX, NY);
ça me donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 monChar =
  "aaaaaa",
  "bbb\000ccc",
  "ccc\000ddd",
  "ddd\000eee",
  "eee\000fff",
  "fff\000ggg",
  "ggg\000hhh",
  "hhh\000iii",
  "iii\000jjj",
  "jjj\000kkk",
  "kkk\000lll",
  "lll\000\000\000*" ;
snif, comment faire pour avoir des éléments de longueurs différentes, sachant que quand je fais le NetCDF à la main (ncgen) ça marche bien :/

merci d'avance!!