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 :

problème d'affection d'une chaine dans une tableau


Sujet :

C

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut problème d'affection d'une chaine dans une tableau
    J'ai ce fichier :vhosts.conf dans le contenu est le suivant:

    NameVirtualHost *:80
    NameVirtualHost 127.0.0.1:80
    #Setenv VLOG

    <VirtualHost *:80>
    .
    .
    .
    je veux placer les valeurs se trouvant devant NameVirtualHost : *:80 et 127.0.0.1:80 dans un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    virtualhost[0]=*:80;
    virtualhost[1]=127.0.0.1:80
    Je parviens à afficher à l'écran après l'extraction *:80 de NameVirtualHost *:80 et 127.0.0.1:80 de NameVirtualHost 127.0.0.1:80.
    Cependant je n'arrive pas à sauvegarder ces valeurs dans le tabaleau virtualhost[] comme indiqué un peu plus haut.

    Programme d'extraction:
    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
     
    #include <stdio.h>
    #include <string.h>
    char ligne[256] = "";
    FILE *fp;
    char val[30]="";
    char virtualhost[];
    int d=0;
     
    int main()
    {
     
    if((fp=fopen("vhosts.conf","r+"))!=NULL)
    {
    while((fgets(ligne, 256, fp) != NULL))
    {
     
    	if(strstr(ligne,"NameVirtualHost"))
    	{
    		int i1=strrchr(ligne,' ')-ligne+1;
    		int i2=strlen(ligne);
     
            int j=0,i=0;
     
    		for(i=i1;i<i2;i++)
    		{
    		val[j]=ligne[i];
    		j++;
    		}
                   printf("%s",val);
     
    		virtualhost[]= val;
    		i=0;j=0;d++;
    	}	
     
    }
     
     
    }
    else
    printf("ouverture du fichier impossible");
    int i=0;
    for(i=0;i<d;i++)
    {
    printf("interface %s\n",virtualhost[d]);
    }	
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    printf("%s",val); // affichage sans problème
     
     virtualhost[]= val; // affection impossible erreur
    Merci de votre aide

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Salut,

    Je connais pas cette syntaxe
    et je sais meme pas si c'est possible de declarer un tel tableau (je sais que c'est possible dans les arguments d'une fonction, mais c'est pas le cas)
    Il te faut soit faire pointer un pointeur sur val, soit copier la chaine se trouvant dans val dans un autre tableau suffisament grand, à l'aide de strcpy()

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    lorsque je fais :

    char virtualhost[100];

    et pour l'affectation :

    je declare une variable int d=0;

    virtualhost[d]=val; // impossible et revoi le message
    d++;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str.c:30: warning: assignment makes integer from pointer without a cast
    avec strcpy(virtualhost[d],val) ;// erreur

  4. #4
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Normal que "virtualhost[d]=val" soit interdit puisque virtualhost[d] est de type "char" tandis que val est de type "tableau de char"
    Normal que "strcpy(virtualhost[d], val)" soit interdit puisque le type du premier paramètre de strcpy est "pointeur sur char". Ca veut pas dire qu'il faut avoir une variable de type "char *", si on a un tableau de caractère suffit de passer le tableau l'adresse du premier caracère, soit le tableau lui meme.

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 262
    Points : 133
    Points
    133
    Par défaut
    Que faire ?

  6. #6
    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 : 46
    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 vacknov Voir le message
    Que faire ?
    Bin si tu sais comment on utilise strcpy tu devrais savoir comment faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy (virtualhost, val);
    Tout simplement !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. recherche d'une chaine dans une chaine
    Par Katachana dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2008, 12h10
  2. recherche d'une chaine dans une chaine
    Par jpclutier dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/12/2007, 11h30
  3. Tester une chaine dans une chaine
    Par ulysse031 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 26/03/2007, 00h48
  4. chercher caractére d'une chaine dans une chaine
    Par ulysse031 dans le forum Langage
    Réponses: 25
    Dernier message: 21/03/2007, 18h09
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

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