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 :

Ouverture de fichier pour recherche


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Ouverture de fichier pour recherche
    salut tous le monde
    Mon programme consiste a ouvrir un fichier et chercher tous les palindromes et les afficher avec leurs numéros de lignes et leurs récurrence
    Il est exécutable mais il se bloque dans l'ouverture du fichier
    Si vous pouvez m'aider a corriger tous les erreurs
    merci d'avance .
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #include <stdio.h> 
    #include <string.h>
    #include<conio.h>
    #include<stdlib.h>
     
     
    void Creer(FILE *fp) 
    { 
     
     
    char f[30];
    printf("fichier: /n");
    scanf("%s",f);
    fp=fopen(f,"r") ;
     
    if (fp==NULL )
    {printf("probleme ouverture!!!"); }
    }
     
    int Palindrome (char *ch)
    {
    int I,J; /* indices courants */ 
    int p; /* indicateur logique: vrai si CH est un palindrome */ 
     
     
    /* Contrôler si CH est un palindrome */ 
    p=1; 
    for (I=0,J=strlen(ch) ; p && I<J ; I++,J--) 
    if (ch[I] != ch[J]) 
    p=0; 
    return p; 
    } 
     
     
    int main() 
    { 
    FILE *fp;
    char *s;char *ch;
    int L,n,i,p;
    Creer(fp) ;
    n=1;
    while (fgets(s,100,fp))
    { 
    for(i=1;i<=strlen(s);i++) 
    {
    if (s[i]==' ')
    {
    ch=strncpy (s,ch,i-n);
    n=i;
    }
     
    p=Palindrome(ch);
    /* Affichage du résultat */ 
    if(p)
    { 
    printf("La chaîne %s est un palindrome. elle es dans la ligne %d",ch, L);
    }
     
    else 
    {
    printf("La chaîne %s n'est pas un palindrome.", ch); 
    }
    }
     
    }
    close(fp);
    return(0);}

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Un premier problème vient de la façon dont utilises la fonction Creer. Si tu ajoutes des traces pour observer la valeur de fp, tu vas avoir des surprises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Creer(FILE * fp)
    {
        char f[30];
        printf("fichier: \n");
        scanf("%s", f);
        fp = fopen(f, "r");
     
        if (fp == NULL) {
            printf("probleme ouverture!!!");
        }
        printf("fp dans Creer : %p\n", fp);
    }
    et plus loin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int main()
    {
        FILE *fp;
        char *s;
        char *ch;
        int L, n, i, p;
        Creer(fp);
        printf("fp dans main : %p\n", fp);
     
    ...
    Une solution pour pallier ce problème est de changer le prototype de Creer en et de modifier le corps en conséquence.

    Dans le reste du code :
    • Attention, un FILE* se ferme avec fclose, pas avec close.
    • s ne pointe sur rien.
    • La façon dont tu cherches si un mot est un palindrome louche : J = strlen(ch) : cet index n'est pas valide, il faudrait écrire J = strlen(ch) -1
    • Attention au caractère î qui n'est pas forcement valide.

Discussions similaires

  1. Indexation fichiers pour recherche à partir d'une base
    Par cedy-kassy dans le forum Général Java
    Réponses: 3
    Dernier message: 10/04/2012, 10h30
  2. Ouverture de fichier pour une classe
    Par psikharpax dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 02/05/2007, 23h48
  3. Composition d'un nom de fichier pour recherche
    Par tchalkost dans le forum C
    Réponses: 6
    Dernier message: 29/11/2006, 20h54
  4. Accès à des fichiers pour ouverture d'une image
    Par noutnout53 dans le forum C++
    Réponses: 4
    Dernier message: 02/06/2006, 15h44
  5. Réponses: 10
    Dernier message: 14/04/2006, 09h23

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