IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Stocker chaîne de caractères dans un tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Par défaut Stocker chaîne de caractères dans un tableau
    Bonjour,
    suite à un problème que j'avais ds un autre poste qui était de récupérer la date et l'heure je viens vous demander conseil,

    En effet, arrivant a récupérer date et heure, je voudrais la décomposé.

    Je m'explique :
    je reçois cette chaine de caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date: Fri, 16 May 2008 16:28:04 GM
    via le code suivant :
    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
    while (1)
    	{
    			if (DataRdyUART())				
    			{
    			j = ReadUART();
    				if (j =='D')
    				{
    				while(1)
    					{
    					j = ReadUART();
    					WriteUART(j);
    						if (j == 'S') 
    							{
    							putrsUART("\r\n");
    							f = 1;
    							break;
    							}
    					}
    				}
    				if ( f == 1 ) break;
    			}
    	}

    mais je voudrais tout décomposer pour tout décomposé du style JJ/MM/YY et HH/mm/ss

    je pensais partir sur un solution comme
    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
    ]while (1)
    	{
    			if (DataRdyUART())				
    			{
    			j = ReadUART();
    				if (j =='D')
    				{
    				while(1)
    					{
    					j = ReadUART();
    					DATE[i] = j;
    						if (j == 'S') 
    							{
    							putrsUART("\r\n");
    							f = 1;
    							break;
    							}
                                             i++;
    					}
    				}
    				if ( f == 1 ) break;
    			}
    	}
    par contre pour apres retirer les caractère 2 a 2 je ne vois pas trop comment.
    Car je voudrais a partir de ce tableau créer des variables.

    je ne sais pas si je suis clair...

    en vous remerciant pour votre aide!

  2. #2
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Je pense que tu vas trouver ton bonheur dans la FAQ C du site
    Comment décomposer une date :clique ici

    Comme tu débutes (je demi-débute ) tu gagneras peut être du temps si je pointe le fait que dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     struct tm *t;
     t = gmtime(&timestamp);
    " t " est un pointeur sur une structure tm . Donc si tu veux obtenir les différents champs de la structure il faut utiliser la syntaxe suivante (par exemple pour le jour du mois j )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int j;
    j=t->tm_mday;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Par défaut
    je te remercie pour ta réponse,

    j'avais remarqué le FAQ pour la date...

    mais je ne vois pas du tout comment m'en servir, que dois je lui rentrer?
    une chaine de caractère? un tableau? je vais regarder cela de plus près.

    Deplus je n'est pas la fonction gmtime.

    en effet mon support est un pic 24F, mais j'ai bien un même type de fonction dans ma stack. et donc un équivalent a gmtime.

    Le truc c'est que lorsque je démarre mon système, j'ai bien une bonne incrémentassions des secondes, minute, heure....date. Mais si je démarre le montage a 14h, pour le système il est 00:00:00....
    je veux donc le mettre a l'heure via la chaine de caractères que je récupère.

    mais je bloque sur le comment mettre a jour, ce que je doit fournir a la fonction pour cela.

    merci encore

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    Par défaut
    Lis quelques tutoriels de plus sur les pointeurs et les chaines de caractère en C si tu veux décomposer ta date qui est sous la forme d'une chaine de caractères et pas un timestamp .

    EDIT :

    bon allez un tip, tu fais une boucle qui remplit les éléments d'un tableau ARRAY[Y] de caractères jusqu'à ce qu'elle arrive au caractère ' ' ( un espace quoi ), là tu incrémentes Y et tu refais le tout jusqu'à ce que t'atteint le caractère 0 ( désignant la fin d'une chaine de caractères ) .

    Même chose pour les virgules ... ( tu ne pouvais vraiment pas faire cela en papier au moins ? car en tant qu'être humain, c'est comme ça qu'on pense )

    EDIT 2 : quelques modifications pour rendre ce que j'ai écrit plus "lisible"

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Par défaut
    Merci

    c'est que je pensais faire, mais je dois avoir une erreur car je n'affiche rien :


    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
    29
     
    while (1)
    	{
    			printf("a");  // balise
    			if (DataRdyUART())				
    			{
    			j = ReadUART();
    				if (j =='D')
    				{
    				while(1)
    					{
    					printf("b");   // balise
    					j = ReadUART();
    					DATE[i] = j;
    					if (j == ' ' || j == ':') i++;
    					if ( j == '\0' || i == 15) 
    						{					
    						f = 1;
    						break;
    						}
    					}
    				}
    			}
    		if (f == 1) break;
    	}
     
    		strcpy(HEURE,DATE);
    		printf("=> %s",HEURE);
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Par défaut
    bonjour tt le monde,

    je viens juste pour vous annoncer que j'ai réussi à faire qq chose de potable...

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    char date [30]= "mardi 14 avril 2006, 12:34:54";
    char jour [10];
    char mois [10];
    char annee [10];
    char heure [10];
    char minute [10];
    char seconde [10];
     
    char JOUR [10];
    char MOIS [10];
    char ANNEE [10];
    char HEURE [10];
    char MINUTE [10];
    char SECONDE [10];
     
    int i = 0;
     
    int main (int argc, char *argv[])
    {
        printf("bonjour programme lecture tableau !!!\r\n\r\n");
     
     
    jour[0] = date [0];
    jour[1] = date [1];
    jour[2] = date [2];
    jour[3] = date [3];
    jour[4] = date [4];
    jour[5] = date [5];
     
           strcpy(JOUR,jour);   
           printf("jour : %s",JOUR);
     
    mois[0] = date [9];
    mois[1] = date [10];
    mois[2] = date [11];
    mois[3] = date [12];
    mois[4] = date [13];
     
           strcpy(MOIS,mois);   
           printf("\r\nmois : %s",MOIS);    
     
    annee[0] = date [15];
    annee[1] = date [16];
    annee[2] = date [17];
    annee[3] = date [18];
     
           strcpy(ANNEE,annee);   
           printf("\r\nannee : %s",ANNEE);    
     
     
    heure [0] = date [21];       
    heure [1] = date [22];       
     
           strcpy(HEURE,heure);   
           printf("\r\nheure : %s",HEURE); 
     
    minute [0] = date [24];       
    minute [1] = date [25];      
     
           strcpy(MINUTE,minute);   
           printf("\r\nminute : %s",MINUTE);   
     
    seconde [0] = date [27];       
    seconde [1] = date [28];      
     
           strcpy(SECONDE,seconde);   
           printf("\r\nseconde : %s",SECONDE); 
     
     
    printf("\r\nafichage de l'heure");
     
     
    while(1)
    {
    printf("\r\n%s:%s:%s\r\n",HEURE,MINUTE,SECONDE);   
    system("pause");
    }
     
     
     
        printf("\r\n");
        system("pause");
        return(0);
    }


    mais bizarrement je suis obliger de remplir chaque case du tableau, car en automatique (boucle for) cela me remplie que les première cases (jour).
    pour le reste, bien je n'est rien....
    Mais bon le résultat, est pas trop mal.

    par contre qd je fais mes test sous DEVc++ pas de pb,
    qd j'intègre mon programme sur mon pic des caractère bizard apparaisse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    LA DATE EST :  Tue, 20 May 2008 15:33:53 GMT  // chaine de caractère ds buffer
     
    jour : Tueÿ   // décomposition du buffer
    mois : May
    annee : 2008¦
    heure : 15
    minute : 33F
    seconde : 53|W
     
    15:33F:53|W   // recomposition de la date
    d'ou viennent ces caractère? y a t'il un moyen de les supprimer facilement?

Discussions similaires

  1. [XL-2010] Vérfier la présence de deux chaînes de caractères dans un tableau
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/06/2013, 17h18
  2. [AC-2007] chaîne de caractère dans un tableau - Erreur 13
    Par skippy86 dans le forum VBA Access
    Réponses: 8
    Dernier message: 06/08/2010, 11h29
  3. [16F876] Ecrire des chaînes de caractères dans un tableau
    Par aminousse dans le forum Autres architectures
    Réponses: 0
    Dernier message: 01/03/2008, 01h08
  4. Remplir une chaîne de caractère dans un tableau
    Par Windsor123 dans le forum C
    Réponses: 4
    Dernier message: 03/11/2007, 01h29
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo