NULL en progm C

Résolu/Fermé
malikatdalam - 8 janv. 2011 à 11:22
 malikatdalam - 8 janv. 2011 à 12:32
Bonjour,
j'essaie de faire un cryptage simple c'est de remplacer a par b b par c et ... voici mon progrmamm que j'essaie de executer ms en vain il m'affiche NULL :



#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(int argc, char *argv[])
{
int i=0;
char phrase[20];
printf("Entrez une phrase :\n");
gets(phrase);
for(i=0;i<strlen(phrase);i++)
{
if( ( phrase[i]>='a') && ( phrase[i]<='z') )
phrase[i]=phrase[i]+1;
}
printf("Votre nouvelle phrase est %s:\n",phrase[i]);

system("PAUSE");
return 0;
Cdlt,

2 réponses

tu t'est trompé dans le printf
printf("Votre nouvelle phrase est %s:\n",phrase[i]);
printf("Votre nouvelle phrase est [ %s ]:\n",phrase);

autre soucis je te deconseille d'utiliser gets; c'est la meilleur façon de creer des trous de securité dans ton code. consulte man gets pour plus d'info

voici un code corrigé de ce que ta fait;

#include <stdio.h>
#include <stdlib.h> 
#include<string.h>

#define TAILLE_BUFFER 1024

int main(int argc, char *argv[])
{
  // tu peux recuperer directement ta chaine directement avec argv
/*   if(argc < 2){ */
/*     fprintf(stderr,"usage : %s \"votre phrase entre griffe\"\n", argv[0]);  */
/*     exit(EXIT_FAILURE); */
/*   } */
/*   char *phrase = argv[1]; */
  int i=0;
  char phrase[TAILLE_BUFFER];
  printf("Entrez une phrase : ");
  //gets(phrase); tres dangereux
  fgets(phrase, TAILLE_BUFFER, stdin); // lit TAILLE_BUFFER - 1 caractere au plus s'il n'y a pas eu de retour a la ligne(chariot) ou EOF (sous linux Ctrl-D)
  for(i=0;i<strlen(phrase);i++)
    {

      if( ( phrase[i]>='a') && ( phrase[i]<='z') )
        phrase[i]=phrase[i]+1;
      // si phrase[i] = z tu fais koi tu le remplace par a ou pas ? dans ce cas adapte ton code en consequence
    }
  printf("Votre nouvelle phrase est [ %s ]\n",phrase);

  return EXIT_SUCCESS;
}
0
merci bcp ca march
0
merci bcp ca marche
0