Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2687 connectés 

 


Dernière réponse
Sujet : [c] Ca semble con mais...
fodger ouais à tous les coups c'est ça, le genre d'inatention qui coûte cher:D... parce qu'à l'affichage le tableau était considéré comme une chaîne de caractères unique. merci ;).

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
fodger ouais à tous les coups c'est ça, le genre d'inatention qui coûte cher:D... parce qu'à l'affichage le tableau était considéré comme une chaîne de caractères unique. merci ;).
LetoII

Fodger a écrit a écrit :

 
 
à cause du '\0'?




 
Tout à fait. J'ai pas osé être aussi explicite (penssant que ct une faute de frape son 5 :D)

darkoli

Fodger a écrit a écrit :

J'avais mal écrit, j'ai rectifié!  
Evidemment je n'écris pas au même endroit... par ailleurs la lecture se faisait dans la même fonction.  
 
Par ailleurs l'utilisation du malloc n'est pas requise puisque qu'il s'agit d'un tableau double, et non d'un pointeur double.
 
Donc une autre remarque?




 
Le problème c'est le '\0' !!! C'est lui qui indique la fin de la chaîne ...
 
Si tu écris uniquement la 1° danss le tableau et que tu l'affiches ça marche.
 
Maintenant écrit la deuxième et affiche la 1° puis la 2° et là tu vas comprendre que le '\0' de la premiere chaine (qui se trouve en réalité à la position [1][0] est écrasé lors de l'écriture de la 2° chaîne !!!
 
Ps : pour simplifier la génération de ta chaîne :

Code :
  1. char tcTmp[1440][5 + 1]; /* 1440 chaînes de 5 caractères */
  2. [...]
  3. sprintf(tcTmp[k], "%02d;%02d", i , j); /* écriture d'un nombre sur 2 chiffres et remplissage par des '0' pour les positions non utilisées */

chrisbk yes it is
fodger

letoII a écrit a écrit :

Si tu veux pas faire de malloc, met 6 comme taille de chaîne, marchera beaucoup mieux




 
à cause du '\0'?

LetoII Si tu veux pas faire de malloc, met 6 comme taille de chaîne, marchera beaucoup mieux
LetoII Non, j'ai du le faire une fois... juste pour voir ce que ça faisait :D
chrisbk

letoII a écrit a écrit :

Mais si c simple: a = k++; => a = k; k += 1;
                  a = ++k; => k += 1; a = k;
 
Là où c chaud c: a = --k++; :D




 
 
fo etre fou pour ecrire des trucs comme ca :O

chrisbk

Fodger a écrit a écrit :

J'avais mal écrit, j'ai rectifié!  
Evidemment je n'écris pas au même endroit... par ailleurs la lecture se faisait dans la même fonction.  
 
Par ailleurs l'utilisation du malloc n'est pas requise puisque qu'il s'agit d'un tableau double, et non d'un pointeur double.
 
Donc une autre remarque?




 
ouaip, rebalance nous le code exact

fodger J'avais mal écrit, j'ai rectifié!  
Evidemment je n'écris pas au même endroit... par ailleurs la lecture se faisait dans la même fonction.  
 
Par ailleurs l'utilisation du malloc n'est pas requise puisque qu'il s'agit d'un tableau double, et non d'un pointeur double.
 
Donc une autre remarque?
LetoII Mais si c simple: a = k++; => a = k; k += 1;
                  a = ++k; => k += 1; a = k;
 
Là où c chaud c: a = --k++; :D
chrisbk

letoII a écrit a écrit :

 
 
Moi j'adore :D
Je sais que certain ont du mal à le lire, mais ça fait trop longtemps que je l'utilise ça vient naturellement maintenent :ange:  




 
je sais jamais si ca se fait apres ou avant :D C'est comme l'operateur ternaire, je peux pas le voir en peinture celui la :D

LetoII

chrisbk a écrit a écrit :

 
 
j'ai horreur de ca [:ddr555]




 
Moi j'adore :D
Je sais que certain ont du mal à le lire, mais ça fait trop longtemps que je l'utilise ça vient naturellement maintenent :ange:

chrisbk

letoII a écrit a écrit :

normal
 
 

Code :
  1. int i, j, k=0;
  2. char *tcTmp[1440];
  3.   for(i=0; i<24; i++)
  4.   {
  5.      for(j=0; j<60; j++)
  6.      {
  7.        tcTmp[k] = (char*)malloc(sizeof(char)*6);
  8.        sprintf(tcTmp[k++], "%.2d:%.2d", i, j);
  9.      }
  10.   }






 
j'ai horreur de ca [:ddr555]

chrisbk ben ouais, normal, t'ecris tjs au meme endroit :O
 
 

Code :
  1. int i, j, k=0;
  2. char tcTmp[1440][5];
  3. int cpt = 0;
  4.   for(i=0; i<24; i++)
  5.   {
  6.      for(j=0; j<60; j++)
  7.      {
  8.         if(i<10 && j<10)
  9.            sprintf(tcTmp[cpt], "0%d:0%d", i, j);
  10.         else if(i<10)
  11.            sprintf(tcTmp[cpt], "0%d:%d", i, j);
  12.         else if(j<10)
  13.            sprintf(tcTmp[cpt], "%d:0%d", i, j);
  14.         else
  15.            sprintf(tcTmp[cpt], "%d:%d", i, j);
  16. cpt ++;
  17.      }
  18.   }

LetoII normal
 
 

Code :
  1. int i, j, k=0;
  2. char *tcTmp[1440];
  3.   for(i=0; i<24; i++)
  4.   {
  5.      for(j=0; j<60; j++)
  6.      {
  7.        tcTmp[k] = (char*)malloc(sizeof(char)*6);
  8.        sprintf(tcTmp[k++], "%.2d:%.2d", i, j);
  9.      }
  10.   }

fodger Bon, j'ai un truc bizzard, tout con, mais bizzard...
 
Rien de bien sorcier, je génère les heures & minutes ('xx:xx') dans un tableau à double entrée.
 
Sauf que lorsque je veux le relire, il me sort tout à la suite!!!
donc d'abord :

Code :
  1. int i, j, k=0;
  2. char tcTmp[1440][5];
  3.    for(i=0; i<24; i++)
  4.    {
  5.       for(j=0; j<60; j++)
  6.       {
  7.          if(i<10 && j<10)
  8.             sprintf(tcTmp[k], "0%d:0%d", i, j);
  9.          else if(i<10)
  10.             sprintf(tcTmp[k], "0%d:%d", i, j);
  11.          else if(j<10)
  12.             sprintf(tcTmp[k], "%d:0%d", i, j);
  13.          else
  14.             sprintf(tcTmp[k], "%d:%d", i, j);
  15.          k++;
  16.       }
  17.    }


 
Ensuite tout connement :

Code :
  1. for(i=0; i<1440; i++)
  2. {
  3. printf("Heure n° %d : %s\n", i, tcTmp[i]);
  4.          k++;
  5. }


 
Et bien il me sort tout comme si il ne voyait qu'une seule chaîne:o?!
 
Des suggestions:)?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)