CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Pb d'utilisation de fichier :/

Jackcloud
Jackcloud
Niveau 9
28 février 2011 à 18:26:59

Bonjour à tous,

je viens aujourd'hui sur ce forum à la recherche de quelqu'un qui pourrait m'aider sur un problème en C.

Pour exposer mon problème, j'ai un fichier test.txt disponible où sont répertoriées des infos sur des œuvres (nom de l'œuvre, artiste, valeur et 0 ou 1 suivant qu'elle soit prêtée ou non) présenté comme ceci:

tableau1 peintre1 valeur1 0
tableau2 peintre2 valeur2 0
tableau3 peintre3 valeur3 0
tableau4 peintre4 valeur4 0

A partir de ce fichier, j'ai écrit une fonction qui doit permettre (normalement :-d ) d'afficher la valeur du tableau que l'on veut. Voici la fonction:

void Valeur_oeuvre()
{
char nom[20]={""};
char art[20]={""};
int val=0;
int pret=0;
char nom_rech[20]={""};

FILE* fichier = NULL;
fichier = fopen("test.txt", "r");

if (fichier != NULL)
{
printf("Entrer le nom de l'oeuvre dont vous recherchez le prix : ");
scanf("%s", &nom_rech);

while (!EOF)
{
fscanf(fichier, "%s %s %d %d", &nom, &art, &val, &pret);

if (nom == nom_rech)
{
printf("%d", val);
}
}
fclose(fichier);
}
else
{
printf("Problème d'ouverture du fichier !");
}
}

Mais avec cette fonction, après avoir entré le nom de l'œuvre le programme se termine et rien ne s'affiche.

Voila mon problème. Si quelqu'un pouvait m'indiquer ce qui ne va pas. Je vous remercie d'avance.

godrik
godrik
Niveau 30
28 février 2011 à 22:02:19

On ne compare pas des chaine de caractere avec == mais avec strncmp. regarde la manuel de la fonction pour plus de details.

chris_27
chris_27
Niveau 10
28 février 2011 à 23:50:41

Je rajouterai que :
« if (nom == nom_rech) » :d) ce test sera toujours faux, quoi que tu fasses.

Je te laisse le soin de trouver pourquoi. :-)

Jackcloud
Jackcloud
Niveau 9
01 mars 2011 à 11:13:40

Ah oui, effectivement ca marche avec strcmp :-d . La je compare des pointeurs en fait, si j'ai bien compris.

En tout cas, merci à vous deux, je vais pouvoir avancer :ok: .

chris_27
chris_27
Niveau 10
01 mars 2011 à 13:03:49

On t'a dis str***n***cmp.

Ne viens pas pleurer dans 2 jours parce que ton code rame et/ou segfaulte… :honte:

Jackcloud
Jackcloud
Niveau 9
01 mars 2011 à 16:24:09

C'est bon j'ai fait une erreur de frappe, pas besoin d'être agressif comme ça :sarcastic: :honte:

tbop2
tbop2
Niveau 10
02 mars 2011 à 11:53:12

Chris_27 est peut-etre un tantinet agressif mais tu t'es toi-meme apercu que des fois il fallait etre un peu plus agressif que le compilateur pour avoir un programme qui fonctionne :ok:

DreamsIayers
DreamsIayers
Niveau 8
02 mars 2011 à 13:21:43

Strcmp marcherait tres bien dans ce cas la, puisque comparerait les deux chaines en entier, non ?

Vous lui consseillez de faire strNcmp pour quelle raison ?

godrik
godrik
Niveau 30
02 mars 2011 à 17:36:07

Quand tu fais des comparaisons de chaine de caracteres et que tu ne sais pas trop ce que tu fais (comme OP). Tu utilises toujours strncmp: "Better safe than sorry".

En l'occurence la chaine qu'il recoit de scanf n'est deja pas borne puisque scanf n'est pas une fonction safe de lecture de chaine de caractere.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment