Les Allergies
Alimentaires
Posez votre question Signaler

La fonction date en langage C [Résolu]

oupsman 325Messages postés 26 décembre 2007Date d'inscription - Dernière réponse le 7 déc. 2010 à 21:21
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 ;-)
Lire la suite 

La fonction date en langage C »

15 réponses
Réponse
+0
moins plus
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
oupsman- 29 janv. 2008 à 14:18
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.

;-)
oupsman- 29 janv. 2008 à 14:26
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 ?
nicegh- 29 mai 2010 à 11:36
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
Ajouter un commentaire
Réponse
+0
moins plus
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
oupsman- 29 janv. 2008 à 14:44
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 ;-)
Ajouter un commentaire
Réponse
+0
moins plus
recapitualtion :

programme :

#include<stdio.h>

int main(void)
{
system("date -u");
return 0;
}
Ajouter un commentaire
Réponse
+0
moins plus
salut j'ai un pb de prendre la date de systemme en une variable de se type :jj/mm/aa
Ajouter un commentaire
Réponse
+0
moins plus
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.
SebManfred- 28 mai 2008 à 11:24
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...
Ajouter un commentaire
Réponse
+0
moins plus
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!
fiddy- 2 juil. 2010 à 16:49
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,
chuiguivara - 7 déc. 2010 à 11:05
c pas sa il veut afficher l'heure minute et seconde du systéme à chaque instant donneé
Ajouter un commentaire
Réponse
+0
moins plus
#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);
}
fiddy- 7 déc. 2010 à 21:21
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,
Ajouter un commentaire
Ce document intitulé « la fonction date en langage C » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?