La fonction date en langage C

Résolu
oupsman Messages postés 316 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Tout d'abord, je vous prie de bien vouloir m'excuser de mon ignorance car je suis débutant en programmation.

Voilà mon problème, faute de pouvoir programmer en PHP, je décide de réaliser un programme en C.

J'ai vu dans le manuel qu'il existe la fonction date du système.

1) Est-ce que cette fonction est utilisable dans le MAIN ?

2) Si oui, quelle bibliothèque devrais-je inclure ?

A titre indicatif, j'ai essayé ce programme par exmple :

int main(void)
{
date -u;
return 0;
}

Merci d'avance pour votre aide ;-)

7 réponses

SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
 
Salut,

tu ne peux pas utiliser de commandes système "comme ça" dans ton programme.
il faut que tu passes par la commande system() (ex : system("date -u");)
ça t'exécute la commande système que tu lui passe en argument
0
oupsman Messages postés 316 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci pour ta réponse rapide SebManfred,

Donc je commence à comprendre, mais quelle est la bibliothèque que je dois inclure pour les fonctions system ?(par exemple est-ce que ça existe #include<system.h>?)

En gros je veux juste un MAIN qui pourra m'afficher ceci dans le terminal :

"On est le Mardi 29/01/08" par exemple.

;-)
0
oupsman Messages postés 316 Date d'inscription   Statut Membre Dernière intervention   10 > oupsman Messages postés 316 Date d'inscription   Statut Membre Dernière intervention  
 
voici mon programme et ça a marché :

int main(void)
{
system("date -u");
return 0;
}

Par contre, je voudrais savoir si je pourrais recuperer la valeur du jour, du mois et de l'année pour pouvoir l'afficher à ma façon.

Par exemple je veux afficher par :

printf("Nous sommes le %s -/ %d / %d", jour, mois, annee);


Comment pourrais-je affecter les valeurs de jour, mois et année ?
0
nicegh Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
bnj ,
je vx vous dire que dans ce cas l'utilisateur peut entrer une faute date ms le programe va l'accepte par exp : 43/23/2001
donc c est quoi la solution ?
j'attend vos reponse
0
SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
 
en C++, je suis sur que c'est possible
en c, je ne sais plus, ça fait un petit moment que je n'en ai pas fait.
mais si tu peux récupérer ta date sous forme JJ/MM/AAAA, en décomposant ta chaine de caractères retournée, tu dois pouvoir t'en sortir
0
oupsman Messages postés 316 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci à toi,

Je vais essayer de décomposer comme tu le dis.

Mais si ça te reviens, reviens quand même me faire un petit coucou si je suis vraiment bloqué et que je n'y arrive pas ;-)

à + et bonne journée ;-)
0
oupsman Messages postés 316 Date d'inscription   Statut Membre Dernière intervention   10
 
recapitualtion :

programme :

#include<stdio.h>

int main(void)
{
system("date -u");
return 0;
}
0
bori_info Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
salut j'ai un pb de prendre la date de systemme en une variable de se type :jj/mm/aa
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
khalmen22 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour a ts le monde j'ai exe un peu difficile ,aidez moi de le resoudre.

ecrire un progarmme qui affiche les termes de la suite suivante:
x0=8
Xn+1=(3*Xn+5)%17
1-tester votre progarmme.les 4 premoers termes sont 12.7.9.15.
2-modifier votre progarmme pour qu'il puisse sffiche les N premiers termes de la suite,N est un entier saisit au clavier.
3-déterminer la plus petite et la plus grand valeur de la suite ainsi que leurs indices.
4-détermine la moyenne des N premires de la suite.
j'attend vous réponces.
0
SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
 
je trouve pas ça si difficile... tu as déjà essayé de faire quelque chose? tu peux nous montrer?
ne serait-ce que le bout de code qui calcule le n-ième terme de ta suite...
0
labaille
 
Pour répondre à la question de la date, en regardant dans le manuel ($man date) on peut trouver des options interessantes.

Par exemple, si tu met
system("date +%d' '%m' '%y");

tu obtiendras sur la sortie standard la date du jour sous le format "jj mm aa". Tu peux choisir le format en inserant des espaces entre apostrophes (du coup tu peux mettre plein de truc differents)

Aprés il te suffit de faire

FILE *f;
int jour;
int mois;
int annee;

f=popen("date +%d' '%m' '%y","r") /*tu récuperer dans le flux f ce qui devrait sortir sur stdout (ta date en l'occurence)*/
fscanf(f,"%d %d %d",jour,mois,annee);

Et voilà! tu as toutes tes dates dans ton programme et tu peux en faire ce que tu veux!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
J'espère qu'elle a résolu son problème en plus de deux ans.
Par contre utiliser une fonction système pour la lire dans un fichier, c'est archi-sale en plus d'être non portable et non performant. D'autant plus qu'il existe une fonction portable.
struct tm *t=localtime(time(NULL));

Ensuite tu as toutes les infos utiles dans la structure t (t.tm_hour, t.tm_min, t.tm_sec, ...).

Cdlt,
0
chuiguivara
 
c pas sa il veut afficher l'heure minute et seconde du systéme à chaque instant donneé
0
chuiguivara
 
#include <stdio.h>
#include <time.h>

int main(void)
{
char buf[10];
time_t t = time(NULL);
strftime(buf, 10, "%y%m%d", localtime(&t));
return printf(buf);
}
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Certes, j'ai juste donné localtime et strftime convient bien mieux plutôt que le faire à la mano.
Par contre, return printf(buf) est faux. Il faut faire return 0; (ou EXIT_SUCCESS) pour signaler que le programme s'est bien exécuté (sinon c'est pas standard). De plus, printf(buf) est dangeureux.
Il vaut mieux utiliser printf("%s",buf); Et enfin, il ne faut pas oublier de faire un fflush(stdout) pour forcer l'affichage sur le buffer de sortie. Ou alors le faire simplement avec puts(buf);

Cdlt,
0