[c][Lire et ecrire dans un tableau de caracteres en dimension 2]

[Lire et ecrire dans un tableau de caracteres en dimension 2] [c] - C - Programmation

Marsh Posté le 15-12-2012 à 18:32:31    

Bonsoir,
 
 
Je bosse sous windows7 et mon IDE est Code::Block
 
J´ai ecris un code en c me permettant de lire et ensuite enregistrer les donnees qui m´interesse dans un tableau de caracteres a deux dimensions.
- Je lis la variable suivante:

Code :
  1. char info[30] = "D12,25FD12,55F11,89FD12,3F";


 
- Ensuite je l´enregistre dans le tableau

Code :
  1. t


 
- Puis j´aimerais que ma console m´affiche sucessivement:

Code :
  1. 12,25
  2. 12,55
  3. 11,89
  4. 12,3


 
Helas je n´y arrive pas, car apres le deboggage de mon programme, j´ai constate que l´instruction printf("%s", t[j][i]);
est a l´origine de l´erreur suivant: Program received signal SIGSEGV, Segmentation fault
 
J´ai besoin d´aide.
Merci d´avance.
 
Mon programme:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define max_index 6
  4. #define element 5
  5. //char info[30] = {'D','1','0',',','0','7','F','D','2',',','3','F','\0'};
  6. char info[30] = "D12,25FD12,55F11,89FD12,3F";
  7. char t[max_index][element];
  8. size_t j,i;
  9. size_t Number_index = 0; // Number index of table
  10. size_t N = sizeof(t) / sizeof(t[0]);
  11. size_t M = sizeof(t) / sizeof(t[j][0]);
  12. void readandparse(char * pointer)
  13. {
  14.   char data;
  15.   int k;
  16.   for(k = 0; pointer[k] != 0; k++)
  17.   {
  18.     data = pointer[k];
  19.     if(data == 'F')
  20.     {
  21.       printf("Reception du caractere: F!\n" );
  22.     }
  23.     else if(data == 'D')
  24.     {
  25.       printf("Reception du caractere D: !\n" );
  26.     }
  27.     else
  28.     {
  29.       // Parcourons les indices du tableau  de
  30.       // t[0] a t[max_index - 1]
  31.       for(j = 0; j < N; j++)
  32.       {
  33.         // Pour chaque element t[j] du tableau,
  34.         // ecrivons les donnees dans t[j]
  35.         //de t[j][0] a t[j][element - 1]
  36.         for(i = 0; i < M; i++)
  37.         {
  38.           t[j][i] = data; // Write data into string with two dimensions
  39.            printf("%s", t[j][i]);
  40.         }
  41.          printf("\n" );
  42.        }
  43.     }
  44.   }
  45. }
  46. main()
  47. {
  48.     readandparse(info);
  49.     return 0;
  50. }


Message édité par arthurdubois le 16-12-2012 à 10:54:47
Reply

Marsh Posté le 15-12-2012 à 18:32:31   

Reply

Marsh Posté le 15-12-2012 à 20:50:08    

Il faudrait un printf("%c", t[j][i]); et non un printf("%s", t[j][i]);
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-12-2012 à 10:59:17    

Bonjour gilou et merci pour ton intervention.
 
Ton conseil m´a aide et j´ai pu atteindre mon objectif.
Bref je voulais obtenir ceci a la console:


 
Reception du caractere D: !
12,25
Reception du caractere: F!
 
Reception du caractere D: !
 
12,55
Reception du caractere: F!
 
Reception du caractere D: !
 
11,89
Reception du caractere: F!
 
Reception du caractere D: !
 
12,3
Reception du caractere: F!
 
Process returned 0 (0x0) execution time : 0.041 s
Press any key to continue.


 
Code:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define max_index 6
  4. #define element 5
  5. char info[] = "D12,25FD12,55FD11,89FD12,3F";
  6. char t[max_index][element];
  7. size_t j = 0;
  8. size_t i = 0;
  9. size_t Number_index = 0; // Number index of table
  10. size_t N = sizeof(t) / sizeof(t[j][0]);// Nombre d'élément total du tableau
  11. size_t M = sizeof(t[0]) / sizeof(t[j][0]); // nombre d´elements d´une ligne
  12. void readandparse(char * pointer)
  13. {
  14.   char data;
  15.   int k;
  16.   for(k = 0; pointer[k] != 0; k++)
  17.   {
  18.     data = pointer[k];
  19.     if(data == 'F')
  20.     {
  21.       printf("\n" );
  22.       printf("Reception du caractere: F!\n" );
  23.       printf("\n" );
  24.     }
  25.     else if(data == 'D')
  26.     {
  27.       printf("\n" );
  28.       printf("Reception du caractere D: !\n" );
  29.       printf("\n" );
  30.       i = 0;
  31.       j = 0;
  32.     }
  33.     else
  34.     {
  35.       if(j < N)
  36.       {
  37.         if(i < M)
  38.          {
  39.            t[j][i] = data; // Write data into table t
  40.            printf("%c", t[j][i]);
  41.            ++i;
  42.            ++j;
  43.          }
  44.       }
  45.     }
  46.   }
  47. }
  48. main()
  49. {
  50.     readandparse(info);
  51.     return 0;
  52. }


 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed