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 :

Petit bug.


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut Petit bug.
    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
    #include <stdio.h>
    #include <string.h>
    FILE *fp, *fp2[200] ;
    char (*path)[]= "*"  ;
    char (*path2)[200][100], car_actuel, tab[200][1000], a, ha[208], ha2[208], z, b=97 ;
    int comp, com2, i, com, car, x, y, d=0 , w;
    unsigned hehe[200][100] ;
    int main(void)
    {
    	if((fp=fopen(path, "r")) == NULL)
    		printf("Erreur2\n") ;
    	for(comp= 0; comp != 200; comp++)
    	{
    		for(com2= 0; com2 != 1000; com2++)
    		{
    			car_actuel= fgetc(fp) ;
    			tab[comp][com2]= car_actuel ;
    		}
    	}
    	close(fp) ;
    	for(i= 0; i != 4; i++)
    	{
    		for(a= 97; a !=122; a++)
    		{
    			ha2[d]= b ; 
    			ha[d]= a ;
    			d++ ;
    		}
    		b++ ;
    		for( ; a != 97; a--)
    		{
    			ha2[d]= b ;
    			ha[d]= a ;
    			d++ ;
    		}
    	}
    	for(com= 0; com != 200; com++)
    	{
    		hehe[com][0]= "*" ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= a ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= b ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= ".txt" ;
    /*ligne 46*/path[com] = hehe[com] ;
    	}
    	for(x= 0; x != 200; x++)
    	{
    		if((fp2[x]= fopen(path2[x], "w")) == NULL)
    			printf("Erreur2\n") ;
    		for(y= 0; y!= 1000; y++)
    			z= putc(tab[x][y], fp) ;
    		close(fp2[x]) ;
    	}
    return(0) ;
    }
    Les deux erreurs :

    46 * invalid use of array with unspecified bounds
    46 * invalid use of array with unspecified bounds

    Deux petites erreurs que je ne comprends pas.


    Et tant qu'on y est, même si ca n'a rien à voir, je voulais savoir si il était possible de créer un fichier éxéctable avec un script.

    Si oui, tutos, fonctions ....

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Petit bug.
    Citation Envoyé par CCin
    Es-tu sûr que tu veuilles un pointeur sur un tableau de 2 char ? (Son utilisation est extrêmement rare)

    Ce serait pas plutôt
    Attention au débordement. On peut modifier cette chaine, mais on a pas le droit de l'agrandir '(comportement indéfini).

    Si une ouverture de fichier echoue, il ne faut pas se contenter de signaler 'erreur'. Le pointeur étant NULL, il est invalide et son usage est interdit (comportement indéfini).

    Bref, je serais toi je travaillerais déjà sur la gestion des fichiers, ensuite, je verrais comment organiser les données clairement...

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Oui mais bien sur, je me suis trompé, je ne voulais pas travailler sur "char path[]" mais sur char "char path2[200][100] " càd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for(com= 0; com != 200; com++)
    	{
    		hehe[com][0]= "*" ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= a ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= b ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= ".txt" ;
    /* ligne 46 */      path2[com] = hehe[com] ;
    	}
    Mais j'ai quand même une erreur à la compilation :

    46 * incompatible types in assignment

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par CCin
    Oui mais bien sur, je me suis trompé, je ne voulais pas travailler sur "char path[]" mais sur char "char path2[200][100] " càd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for(com= 0; com != 200; com++)
    	{
    		hehe[com][0]= "*" ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= a ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= b ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= ".txt" ;
          path2[com] = hehe[com] ;
    	}
    Mais j'ai quand même une erreur à la compilation :

    46 * incompatible types in assignment
    Ben oui. Les affectations de chaines se font par copie explicite en C :

    strcpy()
    strncpy()
    strcat()
    strncat()
    sprintf()
    etc.

    et si il s'agit d'un caractère, on utilise l'opérateur =, mais un caractère a des simple quotes ('*' et non "*")...

    Peut être est-ce le bon moment de relire ton livre de C...

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par CCin
    Oui mais bien sur, je me suis trompé, je ne voulais pas travailler sur "char path[]" mais sur char "char path2[200][100] " càd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for(com= 0; com != 200; com++)
    	{
    		hehe[com][0]= "*" ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= a ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= b ;
    		car= strlen(hehe[com]) ;
    		hehe[com][car]= ".txt" ;
          path2[com] = hehe[com] ;
    	}
    Mais j'ai quand même une erreur à la compilation :

    46 * incompatible types in assignment
    Ben oui. Les affectations de chaines se font par copie explicite en C :

    strcpy()
    strncpy()
    strcat()
    strncat()
    sprintf()
    etc.

    et si il s'agit d'un caractère, on utilise l'opérateur =, mais un caractère a des simple quotes ('*' et non "*")...

    Peut être est-ce le bon moment de relire ton livre de C...

    Peut-être oui !
    Merci !

    Et pour ma question:

    peut-on créer un éxécutable à partir d'un script ??

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par CCin
    peut-on créer un éxécutable à partir d'un script ??
    C'est quoi un script ?

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    En fait, est ce que je peux écrire un programme qui, quand on l'éxécute crée un fichier éxécutable ?

  8. #8
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Citation Envoyé par CCin
    En fait, est ce que je peux écrire un programme qui, quand on l'éxécute crée un fichier éxécutable ?
    C'est un peu vague ou trop floue ta question.

    T'entends-tu par 'fichier éxecutable'?

    Pour ma part, un script (*.bat, *.sh ou autres), un exe (sous Windows) sont des fichiers éexcutables.

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par CCin
    En fait, est ce que je peux écrire un programme qui, quand on l'éxécute crée un fichier éxécutable ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       <...> system ("gcc main.c"); <...>
    mais je ne suis pas sûr que tu cherches ça...

    Que veux-tu faire exactement ?

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Oui, je connaissais la fonction "system()".

    Sauf que je ne pense pas qu'elle pourrait me servir.

    En fait, je voudrais écrire un script qui me crée des fichiers éxécutables.

    En fait, je voudrais distribuer un programme qui est composé de plusieurs éxécutables. Et comme les programmes sont assez gros, j'ai pensé que je pourrais créer un programme qui crée un répertoire et qui crée à l'intérieur de ce répertoire tous les éxécutables, bibliothèques, etc.. nécessaires au bon fonctionnement du programme.

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par CCin
    En fait, je voudrais écrire un script qui me crée des fichiers éxécutables.
    Un Makefile ? Ca n'a rien à voir avec le langage C...
    En fait, je voudrais distribuer un programme qui est composé de plusieurs éxécutables. Et comme les programmes sont assez gros, j'ai pensé que je pourrais créer un programme qui crée un répertoire et qui crée à l'intérieur de ce répertoire tous les éxécutables, bibliothèques, etc.. nécessaires au bon fonctionnement du programme.
    Pourquoi ne pas tout simplement zipper l'application avec son arborescence, et la dezipper où on veut ? Encore une fois, tou ceci n'a rien à voir avec le langage C...

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par CCin
    En fait, je voudrais écrire un script qui me crée des fichiers éxécutables.
    Un Makefile ? Ca n'a rien à voir avec le langage C...
    En fait, je voudrais distribuer un programme qui est composé de plusieurs éxécutables. Et comme les programmes sont assez gros, j'ai pensé que je pourrais créer un programme qui crée un répertoire et qui crée à l'intérieur de ce répertoire tous les éxécutables, bibliothèques, etc.. nécessaires au bon fonctionnement du programme.
    Pourquoi ne pas tout simplement zipper l'application avec son arborescence, et la dezipper où on veut ? Encore une fois, tou ceci n'a rien à voir avec le langage C...
    Oui c'est bien ce que je pensais !

    Mais alors, avec quelle langage ?

    Et petite dernière question :

    Peut-on éxécuter un fichier ".exe" à partir d'un programme C ?

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par CCin
    Peut-on éxécuter un fichier ".exe" à partir d'un programme C ?
    En standard bah la fonction system ()

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Ah ba oui !

    Merci !

    Et pour le "makefile", quelle langage plz ?

  15. #15
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462

  16. #16
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Ben je crois que c'est tout !

    Merci à vous deux !

Discussions similaires

  1. [Pour info] petit bug sous Word
    Par loufab dans le forum Word
    Réponses: 1
    Dernier message: 16/03/2006, 23h24
  2. Petit bug de compilation
    Par Chess0 dans le forum C++
    Réponses: 12
    Dernier message: 04/12/2005, 20h12
  3. Réponses: 1
    Dernier message: 29/11/2005, 18h32
  4. [RegEx] Petit Bug sur Expression Régulière
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 21h48

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