Problême avec code block

gnouf1 -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je suis un débutant en programmation C et j'utilise code block.
J'entre différent codes:

#include <stdio.h>
int main(void){
char nom [5]="gnouf";
printf ("%s"),nom;
}

#include <stdio.h>
int main(void){
char lettre='a';
printf ("%c"),lettre;
}

#include <stdio.h>
int main(void){
int chiffre='1';
printf ("%d"),chiffre;
}

Mais jamais il m'affiche ce qu'il faut après re-compilation !

pour le premier cas il m'affiche "@"
pour le second "é"
pour le troisième "4200592
c'est très agacçant
en ésperant une réponse rapide,

2 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut gnouf1,

    Comme le dit Kingzak34, ton usage de printf n'est pas bon : les arguments de printf doivent être à l'intérieur des parenthèses de la fonction printf. C'est le cas d'ailleurs, en général, de toutes les fonctions en C.

    http://www.cplusplus.com/reference/cstdio/printf/

    D'autres remarques :

    char nom [5]="gnouf";

    La taille de "nom" est insuffisante pour stocker les caractères qui composent la chaîne et le '\0' terminal. Il faut un
    char nom[6]
    au moins.

    cf : https://www.commentcamarche.net/contents/118-langage-c-les-chaines-de-caracteres

    Pour ton dernier printf
    int chiffre='1';
    n'est probablement pas ce que tu veux faire, mais plutôt
    int chiffre=1;
    (sans apostrophes), pour que le nombre 1 soit affecté à la variable entière. Autrement '1' (avec des apostrophes) va désigner le caractère '1', et ce que tu vas mettre dans la variable entière, cela sera la valeur du caractère '1' en ASCII, c'est à dire la valeur décimale 49.

    Dal
    1
  2. Kingzak34 Messages postés 3371 Statut Membre 544
     
    C'est

    printf ("%s",nom);

    et non pas

    printf ("%s"),nom;
    0