Hello,

Je suis programmeuse, plutôt anglophone ( oui je ne suis pas parfaite ) en C, j'ai des notions de base.
J'ai quelques soucis avec le "return" d'un string ou d'un tableau depuis une function.
Pour donner un exemple, je tente de simuler en C la function MID$ du basic.
Pour remémorer, on a:

Code BASIC : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
   string_2$ = MID$( string_1$, start% [, NBytes% ] )        function  .BASIC
   MID$( string_1$, start% [, NBytes% ] ) = string_2$        statement .BASIC

Je laisse de côté la variante "statement" qui ne m'intéresse pas.
Si j'utilise ( sans options ):

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
void MID( const char * string_1, char * string_2, int start, int NBytes );

Je récupère le résultat string_2 extrait du string_1.
Pas de souci. Cela me semble propre.
Si je veux copier le style MID$, cela se complique...
Un exemple ( retourne le jour de la semaine ):

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
19
20
21
22
23
24
25
26
27
28
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
void MID( const char * string_1, char * string_2, int start, int NBytes )
/* char * MID( const char * string_1, int start, int NBytes ) */ {  /* => string_2 */
    int k = 0, l = 0;
    for( k = start; k < (start + NBytes); k++ )
    {
        string_2[l] = string_1[k ];
        l++;
    }
       string_2[l] = '\0';
}
 
int main()
{
   char buf[64] = "SUNMONTUEWEDTHUFRISAT";
   char buf2[64] = ".....................";
   int i;
   for ( i = 0; i < 7; i++ ) {
      MID( buf, buf2, 3 * i, 3);
      printf( "%i => %s\n", i, buf2 );
   }
   return 0;
}
Pour le moment, pas de problème.
Mais si je veux utiliser la fonction en tant que:


avec un


cela cafouille.

Pas très étonnée, string_2 est un... string ! pas une variable.
Mais si je veux mettre un


cela fonctionne mais ce n'est pas le string_2 voulu !
Un pointer... Pas trouvé comment faire ( si c'est possible ). À moins d'utiliser des string en global mais pas joli !
Pourquoi cela fonctionne avec un string explicite et pas la variable correspondant au string ?
La méthode bourrin utilisant getc et transférer lettre par lettre... Pas chaude du tout ( et vu la canicule... ).
Bien sûr, je peux renoncer à la forme "function", mais j'aime comprendre.

Mon but est d'aller plus loin dans l'exploitation de MID pour traiter des 1000-3000 lignes de données en ASCII dans un file séparé combinant diverses sortes de valeurs, int, double, char. De coder en préliminaire les doubles du fichier source en 8 bytes IEEE à décoder ensuite en double en lecture.

Merci pour vos idées.