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 :

probleme c (des erreurs ?? oû ?? pourquoi? )


Sujet :

C

  1. #41
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    merci a vous tous pour votre aide , mais j'ai réussi faire et à comprendre ce programme avec mon pere .


    programme "retard !" :::

    #include <time.h>
    #include <stdio.h>

    int sleep (float sec)
    {
    clock_t start, end;

    end = start = clock ();

    if (start != -1)
    {
    while ((end - start) / (float)CLOCKS_PER_SEC < sec)
    {
    end = clock ();
    }
    }

    }
    void main (int a )
    {
    printf("a ton avis que va t'il se passer dans 30secondes ????? \n") ;
    for(a=1;a<=30;a++)
    {
    printf ("%d\n",a ) ;

    int j=sleep (1) ;

    }
    }
    "
    ok , c 'est super ce programme mais ca bloque tout , tout l'ordinateur pendant 30secondes .Pourquoi ? comment je peux faire pour ne pas le bloquer ?

  2. #42
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Tu es sur ?

    test.c:5: warning: no previous prototype for 'sleep'
    test.c: In function 'sleep':
    test.c:10: warning: comparison between signed and unsigned
    test.c: At top level:
    test.c:20: warning: return type of 'main' is not 'int'
    test.c:20: warning: 'main' takes only zero or two arguments
    test.c: In function 'main':
    test.c:26: warning: passing argument 1 of 'sleep' as floating rather than integer due to prototype
    test.c:26: warning: unused variable 'j'
    test.c: In function 'sleep':
    test.c:18: warning: control reaches end of non-void function
    Ce qui m'interresse, c'est surtout les problèmes relatifs à la fonction main.

    Consulte ceci :

    http://emmanuel-delahaye.developpez....s.htm#typemain

    Et n'oublie pas :


  3. #43
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    ok ben moi sur "borland c++" , le programme me dit aucune ereur !
    Sympa la page http://emmanuel-delahaye.developpez....s.htm#typemain
    En fait si j'ai bien compris , je ne dois plus utilisé void main (int a) ! mais je dois utilisé int main (int a) ;
    C 'est jolie ca , mais dans ce cas là , le main ne sert plus à rien , je peux le suprimer ? comment ?
    merci pour tes conseils !

    ps : pourquoi tu dis " pensez à la balise code/code" ?
    c 'est quoi la balise code/code ?

    as de trefle

  4. #44
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait si j'ai bien compris , je ne dois plus utilisé void main (int a) ! mais je dois utilisé int main (int a) ;
    Non, même pas.

    Il y a deux sortes de main (standard j'entend) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int main ( void )
    int main ( int argc, char ** argv );
    Et c'est tout ! D'autres main existent avec notament un troisième argument mais ça n'est pas standard.

    C 'est jolie ca , mais dans ce cas là , le main ne sert plus à rien , je peux le suprimer ? comment ?
    Reprend ton bouquin de C, le main est obligatoire, c'est le point d'entree de ton programme ...

    ps : pourquoi tu dis " pensez à la balise code/code" ?
    c 'est quoi la balise code/code ?
    C'est ce qui te permet de mettre ton code dans un cadre avec une police adaptée, consulte les règles du forum pour plus d'info.

  5. #45
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Reprend ton bouquin de C, le main est obligatoire, c'est le point d'entree de ton programme ...
    Ben moi , au debut j'ai pas eu de bouquin de C , j'ai eu un prof de mpi qui ma dit que le main representait la partie principale du programme mais il ne m'avait pas parlé de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     int main ( int argc, char ** argv );
    sympa la :
    balise code/code
    , c 'est donc la premiere fois que j'en met !!

    As tu d'autre conseil a me donner PRomu@ld ???

    l'as de trefle

  6. #46
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    As tu d'autre conseil a me donner PRomu@ld ???
    Je ne suis pas le seul à pouvoir donner des conseils, toutes les personnes présentes sur le forum peuvent t'aider.

    Mes seuls conseils, et je l'ai dis déjà quelque fois :

    - Connaître ses limites (savoir ce que l'on sait faire et ce que l'on ne sait pas faire)
    - Programmer que ce dont on est sûr (pas faire des choses bancales qui fonctionne mais que l'on ne comprend pas.)
    - Ne pas faire de bidouillage lorsque quelque chose ne fonctionne pas. (surtout en C)
    - Ne pas hésiter à poser des questions.
    - Ne pas croire aveuglement les profs qui nous donne des cours de prog (surtout lorsque ça n'est pas leur spécialité).

  7. #47
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    ok ok , mais revenons un peu sur notre main
    Je sais que le main est obligatoir et sygnale un bloc principale a l'entrée du programme .Mais a part ca a quoi sert le "main" ??? la fonction "int" sert a créer une variable , donc est ce que je peux mettre une valeur dans le "main" ????

    Si ce que je dis ou demande est confus pour toi ou pour les autres , c 'est parce que je suis un debutant et passioné et là je veux savoir tout ce que je peux faire avec ce "main" et ce programme .
    merci

    l'as de trefle

  8. #48
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    ok ok , mais revenons un peu sur notre main
    Je sais que le main est obligatoir et sygnale un bloc principale a l'entrée du programme .Mais a part ca a quoi sert le "main" ??? la fonction "int" sert a créer une variable , donc est ce que je peux mettre une valeur dans le "main" ????
    La fonction main est le point d'entrée de ton programme, cela veut dire que c'est là que ton programme commence. Si tu ne met pas de fonction main, le compilateur ne peut pas savoir ou commence ton programme et ne peut donc pas compiler ton programme.

    Le int n'est pas une fonction mais un type !

    Pour ce qui est de la fonction main, ça se présente comme ceci pour la première forme :

    Cette fonction main ne peut rien recevoir en argument ( car void ) et renvoie une valeur de type int. (c'est à dire un entier).

    Cet entier est utilisé pour informer que ton programme s'est déroulé correctement. Généralement la valeur 0 indique un bon déroulement tandis qu'une autre valeur indique une erreur. Mais ceci n'est pas très pratique ( on ne se rappelle pas toujours à quelle valeur correspond le bon déroulement ...), ainsi, il existe deux constantes (définies dans stdlib.h) qui sont EXIT_SUCCESS et EXIT_FAILURE, qui sont plus explicites.

    Pour en revenir au retour des fonctions voici un petit exemple :

    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
     
    #include <stdlib.h>
     
    int main ( void )
    {
         long * ptr = NULL;
     
         ptr = malloc( sizeof ( *ptr ) );
     
         if( ptr == NULL )
         {
              exit( EXIT_FAILURE);
         }
     
         free( ptr );
         return EXIT_SUCCESS;
    }
    Voila, c'est simple, ça n'a aucun interêt mais ça permet de saisir. Le programme tente une allocation mémoire et si elle ne peut être faite on quitte le programme.

    Le système d'exploitation pourra alors être tenu au courrant du bon déroulement du programme.

    Maintenant la deuxième forme du main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int main ( int argc, char ** argv )
    Ici, toujours une valeur de retour entière qui fonctionne de la même façon que la première forme.

    La différence se situe donc au niveau des arguments. Ceux ci sont au nombre de deux et permettent de gérer les arguments de la ligne de commande par exemple on peut analyser les lancements de programmes comme celui là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tar -cvf test.tar fichier
    Le programme s'appelle tar possède 3 arguments : -cvf, test.tar et fichier. On peut les analyser en utilisant les paramètres du main.

    L'argument argc (le nom est purement indicatif) contient le nombre d'argument passé dans la ligne de commande, sachant que pour le langage C, le nom du programme est un argument (ie pour notre exemple argc contient 4).

    Le deuxième argument contient un tableau de chaines de caractère. Ce tableau de chaînes est tout simplement un tableau contenant la liste des arguments. (sachant que le premier argument est le nom de ton programme)

    Voici par exemple comment afficher tous les arguments de la ligne de commande :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main ( int argc, char ** argv )
    {
         int n;
     
         for( n = 0 ; n < argc ; n++)
         {
              printf("argv[%d] = %s \n" , n , argv[n] );  
         } 
     
         return EXIT_SUCCESS;
    }
    Voilà, si tu as des questions n'hésite pas.

  9. #49
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci PRomu@ld pour ce big message , j'ai compris maintenant ce que je pouvais faire avec le " main " !
    Et je commence à comprendre ce que fait la commande "malloc" !
    merci bien
    l'as de trefle

Discussions similaires

  1. Probleme récupération des erreurs
    Par BILLANT dans le forum VBScript
    Réponses: 0
    Dernier message: 28/01/2009, 18h15
  2. Réponses: 3
    Dernier message: 19/09/2007, 17h11
  3. [cvBlobsLib]Probleme à l'execution avec des erreurs LNK2019
    Par Jim_Nastiq dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 01/03/2007, 14h40
  4. Réponses: 2
    Dernier message: 06/07/2006, 08h22
  5. [Struts Validator] probleme affichage des erreurs
    Par Morpheus2144 dans le forum Struts 1
    Réponses: 7
    Dernier message: 24/01/2006, 15h25

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