Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tableau et chaines

2 réponses
Avatar
Bonjour

je ne comprend pas pourquoi ceci n'est pas correct,
l'idee etait d'avoir un gros tableau de char et d'acculler des chaines
dedans.

#include<stdio.h>
int main(){
char mot[1<<8];
mot="machaine1";

printf("-- %s --\n",mot);
return 0;
}

2 réponses

Avatar
Marc Boyer
@(none) wrote:
Bonjour

je ne comprend pas pourquoi ceci n'est pas correct,


Parce qu'on ne peut pas affecter un tableau dans
une instruction.

l'idee etait d'avoir un gros tableau de char et d'acculler des chaines
dedans.


Attention, une chaine acculée peut mordre ;-)

#include<stdio.h>
int main(){
char mot[1<<8];
mot="machaine1";


Tu peux essayer:
char mot[]= "machaine1";

ou

utiliser une fonction de recopie de chaine de caractères
(la norme offre les imparfaites strcpy(), strncpy() ;
des contributeurs ont postés leurs propres versions lors
des débats sur la sémantique de strncat et les discussions
autour des pages man de ces même fonctions).

printf("-- %s --n",mot);
return 0;
}


Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.

Avatar
Horst Kraemer
"@(none)" <""olivier"@(none)"> wrote:

Bonjour

je ne comprend pas pourquoi ceci n'est pas correct,
l'idee etait d'avoir un gros tableau de char et d'acculler des chaines
dedans.

#include<stdio.h>
int main(){
char mot[1<<8];
mot="machaine1";


char mot[1<<8] = "machaine1";

ou bien

char mot[1<<8];
strcpy(mot,"machaine1");


Les tableaux sont des types "morts". L'opération

tableau = ???

n'existe pas.

char mot[1<<8] = "machaine1"

n'est pas d'affectation mais une *initialisation* qui se sert aussi du
caractère '='.

--
Horst