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 :

problème revstr


Sujet :

C

  1. #1
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut problème revstr
    salut à tous,
    je viens chercher des conseils pour régler un problème ( surement très simple à corriger ) qui fait planter mon revstr ..
    en effet celui ci m'affiche la phrase suivante lorsque je compile : my_revstr.c:40:12: warning: initialization makes integer from pointer without a cast [enabled by default]
    char i = "moo";
    cette phrase s'affiche également pour "char j = "foobar";
    je connais la sygnification de cette erreur mais dans le cas présent je ne vois absolument pas comment régler le problème .
    Ducoup quand j'execute le programme le caractère suivant s'affiche "" , a quoi correspond ce caractère ??

    j'espère que pour mon premier post, celui ci est compréhensible et je vous remercie d'avance pour l'aide.
    bonne soirée !

    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
     
    int     my_strlen(char *str)
    {
      int   b;
     
      b = 0;
      while (str[b] != '\0')
        b++;
      return (b);
    }
    char    *my_revstr(char *str)
    {
      char  x;
      char  i;
      char  j;
     
      i = 0;
      j = my_strlen(str) - 1;
      while (i < j)
        {
          x = str[i];
          str[i] = str[j];
          str[j] = x;
          i++;
          j--;
        }
      return (str);
    }
    int     main()
    {
      char  *str;
      char  i = "moo";
      char  j = "foobar";
     
       printf("%s", my_revstr(str));
    }

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    char i déclare 1 char, alors que "moo" est une chaine de caractères, ou dit autrement un tableau de plusieurs char
    il faut donc déclarer char i[] = "moo"; ou encore char *i = "moo"; dans ton code

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par awesomeman Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int     main()
    {
      char  *str;  // Que contient str ici ???
       printf("%s", my_revstr(str));
    }
    a quoi correspond ce caractère ??
    Bonjour

    Il correspond au contenu de la variable "str" quand la fonction a fini de la traiter. Essaye de répondre à la question que j'ai rajoutée en rouge dans ton code et tu auras alors la réponse à ta propre question...

    Citation Envoyé par awesomeman Voir le message
    Citation Envoyé par BufferBob Voir le message
    il faut donc déclarer char i[] = "moo"; ou encore char *i = "moo"; dans ton code
    Petite précision: la première déclaration de BufferBob crée un tableau qui est ensuite rempli avec les caractères 'm', 'o', 'o' et '\0' alors que la seconde crée un pointeur qui stocke l'adresse de la partie statique du code qui contient la chaine "moo". Donc dans le premier cas ce tableau étant à toi, tu pourras modifier son contenu (changer les lettres) mais dans le second, cette chaine étant située dans une zone non modifiable, tu ne pourras pas la changer.
    Mais dans les deux cas, tu pourras récupérer et traiter les éléments de "i" de la même façon...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut
    Bonjour,
    désolé en fait je n'avais pas compris ce que je voulais faire moi-même :tops:
    je dois inverser les caractères d'une chaine, sauf que dans ma tête , je pensais que le programme devait prendre en paramètre deux chaines de caractères ..
    bref merci pour vos réactions.
    J'ai juste une dernière question, j'aimerais avoir des explications concernant le buffer (comment l'utiliser , l'utilité ect ) puisque je sais ce que c'est (une zone mémoire) mais concrètement je n'en vois pas . si vous avez un site qui l'explique en détails ça serait top !
    encore merci, bonne journée !

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Le "buffer" est une mémoire tampon (dans la RAM ) et donc une zone ultra rapide (sinon elle perd son sens). Le but d'utiliser un Buffer est d'éviter les acces aux périphériques couteux genre disque dur, cd-rom.

    voici un petit document pour en savoir plus:

    https://wr.informatik.uni-hamburg.de...esentation.pdf

  6. #6
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut
    cool , merci beaucoup !
    bonne soirée.

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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