Problème scanf

Bonjour,

j'ai un petit soucis avec un scanf et je ne comprend pas pourquoi ! voici le code :

void save (int sig) {

	//on ferme le fichier ouvert
	fclose(fichier);
		
	printf("Conserver le fichier? [Y/n] \n");
	char reponse = 'c';
	scanf("%c",&reponse);
	
	if(reponse=='n'){
		printf("Effacement du fichier\n");
		int r = remove("toto.txt");
		if ( r!= 0){
			printf(" La destruction a échouée !\n"); 
		}
	}else{
		printf("Fichier sauvegardé \n");
	}
	//on quitte le programme
	exit(0);
	
}


impossible d'effacer mon fichier tout passe dans le ELSE même le "n".
Est ce que quelqu'un comprend pourquoi
Configuration: Windows XP
Firefox 3.0.11

5 réponses

  1. Salut je mis connais un peu en C maintenant je passe au C++ (POO; galère) essaye d'initialiser ta cariable char de cette façon:
    "char reponse = 0 ;"
    tout simplement dis-moi normalement sa marche...
    1. Bonjour,

      j'ai un petit soucis avec un scanf et je ne comprend pas pourquoi ! voici le code :

      void save (int sig) {

      //on ferme le fichier ouvert
      fclose(fichier);

      printf("Conserver le fichier? [Y/n] \n");
      char reponse ;
      scanf("%c",&reponse);

      if(reponse=='n'){
      printf("Effacement du fichier\n");
      int r = remove("toto.txt");
      if ( r!= 0){
      printf(" La destruction a échouée !\n");
      }
      }else{
      printf("Fichier sauvegardé \n");
      }
      //on quitte le programme
      exit(0);

      }

      impossible d'effacer mon fichier tout passe dans le ELSE même le "n".
      Est ce que quelqu'un comprend pourquoi
      1. deux choses vérifie que la bibliothèque stdio.h est inclus dans ton code de plus je comprend pas pourquoi
        tu code ceci
        printf("Conserver le fichier? [Y/n] \n");
        char reponse = 'c';
        scanf("%c",&reponse);

        déjà tu attribut après la saisie, 'c' à réponse donc forcément après le scanf ce sera toujours reponse='c'

        déjà avec

        #include <stdio.h>
        char c;
        printf("Conserver le fichier?[y/n] \n");
        scanf("%c",&reponse);

        ce sera déjà mieux même si ça n'arrange pas les choses au niveau de la présentation

        ensuite soit tu mets un point d'arrêt sur ton if et ton else soit tu met des printf mais je te conseil les points d'arrêts