Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/04/2021, à 00:00

zephyre123

[RESOLU] Problème initialisation de variables avec strlen

Bonjour,

Voici le code ci dessous :

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

char mot_secret[] = "Bonjour";
int taille = strlen(mot_secret) // ERREUR ICI POURQUOI ?;

Le compilateur GCC me dit la chose suivante = initializer element is not constant
Je ne comprends pas cette erreur.
Étant donné que le tableau de char mot secret est écris en dure alors strlen devrai être constant ?
Je ne vois pas comment corrigé cette erreur ni d’où elle vient, pouvez vous m'expliquer svp ?
Je veux juste récupérer dans une variable la taille de me tableau de char en l'occurrence celle de mot_secret.

Dernière modification par zephyre123 (Le 27/04/2021, à 11:39)

Hors ligne

#2 Le 27/04/2021, à 08:42

DonutMan75

Re : [RESOLU] Problème initialisation de variables avec strlen

Bonjour,
il me semble que c'est parce qu'il manque le caractère de terminaison de chaîne à la fin de mot_secret.

Deux solutions pour cela :

1) le rajouter manuellement :

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

int main()
{
char mot_secret[] = "Bonjour\0";

int taille = strlen(mot_secret);
printf("Taille : %d\n", taille);
}

2) Passer par une déclaration de pointeur plutôt qu'un tableau (ce qui rajoutera automatiquement le '\0' à la fin)

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

int main()
{
char *mot_secret = "Bonjour";

int taille = strlen(mot_secret);
printf("Taille : %d\n", taille);
}

Donut

Hors ligne

#3 Le 27/04/2021, à 10:35

kamaris

Re : [RESOLU] Problème initialisation de variables avec strlen

@zephyre123 : tu dois être dans main() pour faire des appels de fonctions, tu ne peux initialiser les variables globales qu'avec des constantes.
@DonutMan75 : non, le caractère nul est bien ajouté à la fin des chaines déclarées de cette manière.

Hors ligne

#4 Le 27/04/2021, à 11:38

zephyre123

Re : [RESOLU] Problème initialisation de variables avec strlen

ok Kamaris merci.
J'ai testé effectivement c'était ça le problème.
Merci encore !

Hors ligne

#5 Le 28/04/2021, à 07:50

DonutMan75

Re : [RESOLU] Problème initialisation de variables avec strlen

Hello Kamaris,
bien vu, j'avais du résoudre le problème s'en m'en rendre compte en rajoutant le main... ^^

Bonne journée à tous smile

Hors ligne