Caractère " (double quote) en C

Résolu
mano9 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je suis en train de faire un travail dans lequel j'ai besoin d'affecter la double côte( " ) à une variable de type chaine(C'est le seul chemin pour faire ce que je veux).Mais depuis 2 jours, j'ai tout tenté en vain.En fait voilà:

char machaine[5];
machaine = "SC CREATE " ";

Toujours des erreurs je ne sais donc pas comment utiliser " comme caractère.
Aidez moi SVP mon projet ç'est pour demain et il ne me reste que ça à débloquer pour le terminer.

Très cordialement
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Trois erreurs dans ton code.
1/ La taille de ta chaîne est trop petite pour contenir "SC CREATE". (10 caractères minimum, tu peux en mettre plus pour être tranquille).
2/ machaine = "SC CREATE " "; Interdit de faire ça. Tu dois utiliser la fonction strncpy pour réaliser la copie de la chaîne. Par exemple :
strncpy(machaine,"SC CREATE",sizeof machaine);
machaine[sizeof machaine - 1]='\0'; //pour placer le \0 final.

3/Pas de guillemets dans la chaîne. Ou alors il faut l'échapper avec un backslash. Par exemple : "SC CREATE\" "

Cdlt
1
KéKeCest ??
 
Slt fiddy,

Je me permet cette petite correction sur la fonction strncpy() :

char *strncpy(char *cible, const char *source, size_t longueur)


> Copie au maximum longueur caractères de source dans cible en complétant par des caractères de code nul si taille cible > taille source.

Sinon dans son cas il peut simplement utiliser vieille fonction strcpy().

Bonne journée.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > KéKeCest ??
 
Je ne comprends pas pourquoi tu me reprends ? Qu'est-ce qu'il ne t'a pas plu dans mon code ?

Sinon dans son cas il peut simplement utiliser vieille fonction strcpy().
Oui, mais attention au buffer overflow.
0
loupius > KéKeCest ??
 
Slt KéKeCest ?? .

Je me permets cette petite correction sur la fonction strncpy() :

char *strncpy(char *cible, const char *source, size_t longueur)
> Copie au maximum longueur caractères de source dans cible en complétant par des caractères de code nul si taille cible > taille source.


Non, la bonne réponse est:
Copie au maximum longueur caractères de source dans cible en complétant par des caractères de code nul si longueur > taille source.

Bonne journée.
0
KéKeCest ?? > loupius
 
Re,

Je dirais oui "à priori" - faudrait que l'on compare nos sources comme justifications.

Crdlt.
0
KéKeCest ?? > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
Re,

strncpy(machaine,"SC CREATE",sizeof (machaine));

Non non comme ça, ça semble OK (:>).

Crldt.
0
mano9 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Merci déjà pour la réponse.

1 Pour la taille ç'est bon je n'ai pas fait cette erreur

2 Dans mon "sc create " ", j'ai justement besoin de mettre la double cote( L'avant dernière) comme caractère
dans la chaine.

3je ne veux pas mettre " ", mais plutôt "

SVP j'attends votre réponse
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
1 Pour la taille ç'est bon je n'ai pas fait cette erreur
Pourtant l'exemple que tu as donné contient cette erreur.

2 Dans mon "sc create " ", j'ai justement besoin de mettre la double cote( L'avant dernière) comme caractère dans la chaine.
Oui, ça j'ai bien compris, et c'est pour ça que je te dis qu'il faut l'échapper avec un backslash sinon cela ne marchera pas. Relis mon exemple du post 1 pour savoir comment faire.

3je ne veux pas mettre " ", mais plutôt "
En C, la chaîne est délimitée par deux apostrophes. Mais ces apostrophes ne font pas parties en eux-même de la chaîne. C'est juste pour aider le compilateur à comprendre de quoi il traite.
0
mano9 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Merci grandement. Je rentre l'essayer tout de suite
0
tartALAfraise
 
salut

je tenais juste à préciser que ton double côte est en fait "double quote"
quote est "guillemets" dans la langue de shakespeare (d'où la citation = quotation)
le double est apparu dans les salles d'enseignement (anglophones) de l'informatique où il a bien fallu faire comprendre la différence (en programmation) entre apostrophe et guillemets en mettant l'accent sur le nombre d'apostrophes à dessiner (single ou double).
Je rappelle que le public de ces cours (toutes langues confondues) n'est généralement pas versé dans la connaissance de la langue ni de sa formalisation (d'où l'utilisation de vocabulaire simplifié voire rudimentaire pour leur expliquer quelque chose ainsi que leur difficulté à formuler par écrit une description d'un fonctionnement ou d'un problème dans un langage compréhensible par leurs pairs)
0