[C] programme se compile mais ne marche pas

Fermé
oeza - 8 mai 2012 à 16:01
 oeza - 8 mai 2012 à 16:47
Bonjour,
je voudrais faire un programme qui permettra de trouver la taille d'agrandissement d'une image.
Mon code se compile sans problème mais quand je lance la programme, un message d'erreur s'ouvre.
Voila mon code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char hauteurlargeur [50]={0};
char reduireagrandir [50]={0};
float tailleimage;
float facteurproportionnalite;
float resultat;

    printf("Voulez-vous reduire ou agrandir l'image ?\nEcrivez reduire ou agrandir\n");
    scanf("%s", reduireagrandir);
    printf("\n");

    printf("Voulez-vous entrer la largeur ou la hauteur de l'image ?\nEcrivez hauteur ou largeur\n");
    scanf("%s", hauteurlargeur);
    printf("\n");

    printf("Quelle est la %s de l'image a %s ?\n", hauteurlargeur, reduireagrandir);
    scanf("%f", &tailleimage);
    printf("\n");

    printf("%s par combien ?\n", reduireagrandir);
    scanf("%f", &facteurproportionnalite);
    printf("\n");

     // c'est a partir de la qu'il y a un problème
    if (strcmp( reduireagrandir, 'reduire\n') == 0)
    {
        resultat = tailleimage/facteurproportionnalite ;
        printf("%f", resultat);
    }
    else if (strcmp( reduireagrandir, 'agrandir\n')== 0)
    {
        resultat = tailleimage*facteurproportionnalite;
        printf("%f", resultat);
    }

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 mai 2012 à 16:06
Bonjour,

C'est surprenant que ton programme compile sans problème.
Dans strcmp, tu as mis 'reduire\n', ce sont des guillemets qu'il faut.

Et n'oublie pas de mettre un return 0; à la fin.
1
Merci beaucoup !
Ça marche très bien maintenant.

P.S: ça ne marche pas avec "reduire\n" mais avec "reduire"
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 mai 2012 à 16:11
Les chaînes de caractères se mettent entre guillemets pas entre apostrophes !
De plus je ne suis pas convaincu qu'il faille mettre le \n dans un test comme cela...
Enfin, il faudrait prévoir le cas où on ne rentre dans aucun des deux attendus :

if (strcmp(reduireagrandir, "reduire") == 0)
    resultat = tailleimage/facteurproportionnalite;
else if (strcmp(reduireagrandir,"agrandir")== 0)
    resultat = tailleimage*facteurproportionnalite;
else
    reultat = -1;

printf("%f\n", resultat);
1
oui en effet ça ne marche pas avec le \n
et le cas ou on le deux ne marchent pas, je m'en occupe !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 mai 2012 à 16:17
Oui, il ne faut pas mettre le \n puisqu'il n'est pas stocké lors d'une lecture avec scanf("%s",...). Il l'aurait fallu avec fgets par exemple.
0
Et est-ce nécessaire de mettre un \0 (moi je n'en n'ai pas mis et ça marche) ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 mai 2012 à 16:33
Le \0 est implicite.
0
Ok
0