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

  FORUM HardWare.fr
  Programmation
  C

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2168182
arthurdubo​is
King Arthur
Posté le 15-12-2012 à 18:32:31  profilanswer
 

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
mood
Publicité
Posté le 15-12-2012 à 18:32:31  profilanswer
 

n°2168192
gilou
Modérateur
Modzilla
Posté le 15-12-2012 à 20:50:08  profilanswer
 

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é!  --
n°2168200
arthurdubo​is
King Arthur
Posté le 16-12-2012 à 10:59:17  profilanswer
 

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. }


 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

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

 

Sujets relatifs
Un tableau est-il un objet ?lire un fichier
Tri tableau 2 dimensionsArchitecture Client - Serveur : Tableau Collaboratif
Retourner facilement la cle d'un tableauCréation d'un tableau html (lignes + colonnes) avec mysql
Problème affichage tableau de taille variabletri tableau associatif JavaScript
Plus de sujets relatifs à : [c][Lire et ecrire dans un tableau de caracteres en dimension 2]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR