Comment faire pour affecter des valeurs à des const char* tableau et d'impression d'écran
Bien que je suis en C++, comme une exigence-je besoin pour utiliser const char* des tableaux au lieu de string ou des tableaux de char. Depuis que je suis nouveau, je suis dans l'obligation de se renseigner sur la façon d'utiliser const char*. Je l'ai déclaré à mon const char* tableau comme const char* str[5]
. À un moment plus tard dans le programme, j'ai besoin de renseigner chacun sur l'un des 5 éléments avec des valeurs.
Cependant, si j'essaie d'attribuer une valeur comme ceci:
const char* str[5];
char value[5];
value[0] = "hello";
str[0] = value[0];
Il ne compile pas. Quelle est la bonne façon d'ajouter un tableau de char en char à un const char* tableau et ensuite imprimer le tableau? Toute aide serait appréciée. Merci.
- Juste de la curiosité, quelle est la signification de
const char* str[5];
plutôt que de simplementchar* str[5];
? - Vous semblez confondre.
char value[5]
est un tableau de 5 caractères.value[0]
est un caractère unique de ces 5. Comment voulez-vous que d'un seul caractère à la valeur"hello"
? - Importance ici, dans cette question, ou en général ?
- surtout ici, dans cette question. quelle est l'importance de l'utilisation de
const char* str[5];
ici? et pour usage général, jusqu'à présent, je sais, l'importance deconst char* str[5];
est qu'il s'agit d'une variable pointeur qui pointe vers uneconst
variable. A-t-elle toutes les autres significations? >>> @ameyCU - C'est pas mal pour apprendre nu pointeur de la logique, mais c'est une bonne chose pour définir vos concepts:
typedef const char* MyString; MyString strings[5];
Cette volonté pour vous aider à éviter les erreurs. - En C, une chaîne n'est pas un type, ni un
char *
, ni un pointeur. Une chaîne de caractères est un tableau de caractères jusqu'à et y compris un caractère de fin null'\0'
.
Vous devez vous connecter pour publier un commentaire.
La chaîne
"hello"
est composé de 6 caractères, et non pas 5.Si vous affectez la chaîne lorsque vous déclarez
value
, votre code peut ressembler à ce que votre actuellement:Si vous voulez le faire en deux lignes distinctes, vous devez utiliser
strncpy()
.Pour placer un pointeur à
value
dans la liste de chaînes de caractères nomméstr
:Noter que cela laisse
str[1]
parstr[4]
avec de quelconques valeurs.char value[] = "hello";
?str[0] = value;
semble très dangereux. Il attribue 4 octets adresse de pointeur la valeur 1 octet valeur char place.str
dans cet exemple est une liste de chaînes de caractères.Diverses méthodes pour remplir
const char* str[5]
plus tard dans le programme..
Comment cela peut-il tenir "bonjour". Il peut contenir qu'un seul caractère.
Aussi
value[5]
est pas assez pour cela . Il n'y aura pas de place pour'\0'
et programme, exposition de UB.Soit utiliser les
value[6]
-Ou de les déclarer comme ceci -
Et après que juste faire le pointeur pointe sur ce tableau. Quelque chose comme cela-