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 :

Erreurs dont "expected expression before ‘)’ token" dans mon fichier source


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut Erreurs dont "expected expression before ‘)’ token" dans mon fichier source
    Voila un petit programme en C (tiré d'un support de cour) que j'essai de l’exécuter sous ubuntu 12.04 LTS.
    Il m'affiche des erreurs et j'arrive pas a les comprendre.

    Aidez-moi svp.

    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
    #include <stdlib.h>	// pour exit()
    #include <unistd.h>	// pour getpid()
    #include <signal.h> 	// pour sleep()
    #include <sys/types.h>	// pour fork()
    #include <stdio.h>	// pour printf()
    int main()
    {
    	char buf[256];
    	int pid;
    	int status;
     
    printf("%%");	// imprimer un prompt %
    	while(fgets(buf,256,0)!= NULL)
    	{
    		buf[strlen(buf)-1]=0;
     
    		if((pid==fork())<0)                                        // erreur de fork
    			{	printf("Erreur de fork()");
    				exit(127);
     
    				break;
    			}else if (pid == 0)                                     // Processus Fils
    				{
                    execlp(buf,buf,(char *)0);
    				printf("%s n a pu etre executée\n",);
    				exit(127);
    			}
    							      // Processus Père
    				if ((pid==waitpid(pid,&status, 0))<0)
    				{   	printf("erreur dans wait\n");
    					Exit(127);
    				} printf("%%");
     
    	}
    exit(0);
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    recouvrementdepss.c: In function ‘main’:
    recouvrementdepss.c:15:7: attention : incompatible implicit declaration of built-in function ‘strlen’ [enabled by default]
    recouvrementdepss.c:25:41: erreur: expected expression before ‘)’ token
    Merci d'avance.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour, ne manquerait-il pas string.h ?

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Un code indenté te permettrait d'y voir plus clair. Voici quelques remarques (voir les commentaires "CORRECTION") :

    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
    #include <stdlib.h>
    #include <unistd.h>
    #include <signal.h>
    #include <sys/types.h>
    #include <stdio.h>
    #include <string.h> /* CORRECTION : include manquant comme l'a fait judicieusement remarqué Neckara */
     
    int main(void){ /* CORRECTION : une fonction sans paramètre doit, en toute rigueur, mettre void entre parenthèse pour indiquer au compilateur qu'elle ne prend pas de paramètres */
    	char buf[256];
    	int pid;
    	int status;
     
    	printf("%%");	/* imprimer un prompt % */
    	while(fgets(buf,256,0)!= NULL){
    		buf[strlen(buf)-1]=0;
     
    		/* erreur de fork */
    		if((pid==fork())<0) {	
    			printf("Erreur de fork()");
    			exit(127);
     
    			/* CORRECTION : break; => ne sert à rien */
    		}else if (pid == 0){ /* Processus Fils */
    			execlp(buf,buf,(char *)0);
    			printf("%s n a pu etre executée\n",); /* CORRECTION : Oh une virgule qui se balade toute seule, d'où l'erreur ;) */
    			exit(127);
    		}
     
    		/* CORRECTION : Dans la logique des choses, on met un else if ici */
    		if ((pid==waitpid(pid,&status, 0))<0){   /* Processus Père */ 
    			printf("erreur dans wait\n");
    			Exit(127); /* Avec une majuscule ??? */
    		} 
     
    		printf("%%");
    	}
    	/* CORRECTION exit(0); => pourquoi exit ici, quand on peux retourner une valeur correspondant à la signature de main() ??? */
    	return EXIT_SUCCESS;
    }
    Cordialement,
    Idriss

  4. #4
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    comment régler l'erreur de la ligne 25 svp !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s n a pu etre executée\n",);

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    comment régler l'erreur de la ligne 25 svp !
    Tu rigoles ou quoi ? T'as lu le commentaire ? Il manque un paramètre à printf ... faut faire davantage d'efforts que ça

  6. #6
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    voila le programme qu'en pensez vous !
    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
    #include <stdlib.h>
    #include <unistd.h>
    #include <signal.h>
    #include <sys/types.h>
    #include <stdio.h>
    #include <string.h>
     
    int main(void){
        char buf[256];
    	int pid;
    	int status;
     
    	printf("%%");	/* imprimer un prompt % */
    	while(fgets(buf,256,0)!= NULL){
    		buf[strlen(buf)-1]=0;
     
    		/* erreur de fork */
    		if((pid==fork())<0) {
    			printf("Erreur de fork()");
    			exit(127);
                break;
    		}else if (pid == 0){ /* Processus Fils */
    			execlp(buf,buf,(char *)0);
    			printf("%s n a pu etre executée\n",&buf[0]);
    			exit(127);
    		}
    	else if((pid==waitpid(pid,&status, 0))<0){   /* Processus Père */
    			printf("erreur dans wait\n");
    			exit(127);
    		}
     
    		printf("%%");
    	}
    	exit(0);
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/03/2011, 23h04
  2. Réponses: 2
    Dernier message: 08/02/2010, 10h00
  3. Réponses: 3
    Dernier message: 15/05/2009, 16h18
  4. Réponses: 11
    Dernier message: 04/03/2009, 13h41
  5. expected primary-expression before '=' token
    Par steph_p dans le forum Débuter
    Réponses: 4
    Dernier message: 02/02/2009, 16h03

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