Char en C++
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Char en C++



  1. #1
    andreuxyoupi

    Char en C++


    ------

    Bonjour,

    Je suis tombé souvent, en revoyant mes cours, sur des scripts du genre

    Code:
    int main(int argc, char *argv[])
    {
        char lettre = 'A';
    
        scanf("%c", &lettre);
        printf("%c\n", lettre);
    
        return 0;
    }
    Et ce que je ne comprends pas, c'est
    - Qu'est-ce que ce "argc", ainsi que ce "*argv" en argument (je sais juste que ce dernier est un pointeur) ?
    - Je ne sais jamais exactement ce que je dois mettre dans un printf et un scanf, des fois il y a un \, des fois non.

    Merci d'avance

    -----

  2. #2
    fred1599

    Re : Char en C++

    Bonsoir,

    Déjà dans ton programme, argc et argv ne servent strictement à rien (ils ne sont pas utilisés) on peut donc mettre int main(void) à la place.

    argc représente le nombre d'arguments présentés à l'exécution de ton programme, exemple: monprogramme arg1 arg2
    On a donc 3 arguments, (le nom du programme, arg1 et arg2) argc vaudra 3.

    argv représente un tableau de chaîne de caractères représentant la valeur des arguments.

  3. #3
    Chanur

    Re : Char en C++

    Bonjour,
    Citation Envoyé par andreuxyoupi Voir le message
    - Je ne sais jamais exactement ce que je dois mettre dans un printf et un scanf, des fois il y a un \, des fois non.
    Le '\' signifie que le caractère qui suit doit être interprété de façon spéciale.
    Dans ton exemple, c'est \n qui signifie 'fin de ligne'.
    Il y en a d'autres, par exemple \t qui représente une tabulation.

    Ça n'a pas de rapport a priori avec printf ou scanf, sauf que c'est souvent dans ce cas qu'on en a besoin.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  4. #4
    mp3dux

    Re : Char en C++

    bonjour @andreuxyoupi,

    -Ton programme c'est du pure C, il n a rien de spécifique à C++ là dedans, cela n'empêche il sera compilé sans problème par un compilateur C++ usuel. Par contre ça marche pas dans l'autre sens.

    -Ton code n'est pas un script ! Tu es obligé de le compiler pour pouvoir l'exécuter, un script de nom peut s'exécuter directement sans compilation.

    - Les printf et les scanf sont des fonctions de la bibliothèque stdio, elles ont des syntaxes bien déterminées, en gros tu n'as pas le choix, tu respectes la syntaxe et tout va bien.

    - n et \n n'ont rien en commun, \n est un caractère dit spécial qui signifie Newline, il met fin à la ligne courante et débute une nouvelle ligne. Il existe une liste de caractères dit spéciaux qui commencent par des \ comme expliqué dans le message précédent.
    \a par exemple veut dire Alert, quand tu le mets dans un printf il te fait un bip... \t pour Tabulation etc.

    Quand tu mets \n dans un printf, ben il t'imprime une newline. Ça permet de formater l’affichage avec le code
    Code:
    printf("1\n2\n3\n4\n...");

    1
    2
    3
    4
    .
    ..

    alors que le code suivant :
    Code:
    printf("1234...");
    aurait donné
    1234...

    Si dans un printf tu mets
    Code:
    printf("n\nn\a");
    Ben il verra 4 caractères : le n puis le newline ensuite le n et l'alerte...
    C'est pas plus compliqué que ça...
    Si nous faisions tout ce que nous sommes capables de faire, nous en serions abasourdis. T.E

  5. A voir en vidéo sur Futura
  6. #5
    andreuxyoupi

    Re : Char en C++

    Merci pour vos rapidité de réponse à tous. Vos réponses sont toutes très claires !

    Déjà dans ton programme, argc et argv ne servent strictement à rien (ils ne sont pas utilisés) on peut donc mettre int main(void) à la place.
    Ah bon ? Pourtant ce programme a été directement copié/collé d'un site, et j'ai exactement le même dans mon cours.
    Une chose que j'ai aussi du mal à comprendre depuis le début, c'est pourquoi est-ce qu'on écrit parfois "int main()" et parfois "int main(void)" ?
    Argc est le nombre d'arguments, et donc c'est pour cette raison qu'il y a un "%c" dans le printf et le scanf si j'ai bien compris.
    Mais à quoi bon préciser le nombre d'arguments ? Quand je fais un double f(double x, double y), la machine repère bien qu'il y en a deux. Ici, non ?

    -Ton code n'est pas un script ! Tu es obligé de le compiler pour pouvoir l'exécuter, un script de nom peut s'exécuter directement sans compilation.
    Ah je ne pensais pas que le mot script était précis, pour moi c'était juste un texte inscrit dans le fichier source.

  7. #6
    fred1599

    Re : Char en C++

    Ah bon ? Pourtant ce programme a été directement copié/collé d'un site
    Sais-tu si ce site est parole d'évangile ? En fait on te met argc et argv comme paramètres de la fonction main par habitude, mais quand on ne les utilises pas, pourquoi les mettre ? Sans argument en C, on aime mettre void, pour le C++, on voit souvent du vide entre les parenthèses.

    Argc est le nombre d'arguments, et donc c'est pour cette raison qu'il y a un "%c" dans le printf et le scanf si j'ai bien compris.
    Euh...Non ! Comme je l'ai dis dans mon précédent message, argc et argv dans ton code ne servent à rien ! Donc il n'y a aucun rapport entre printf, scanf et argc, argv.
    "%c" est un formatage, indiquant que scanf attend un caractère et printf affichera un caractère. c comme caractère.

    Mais à quoi bon préciser le nombre d'arguments ?
    Pour contrôler le nombre d'arguments par dit ! Si tu ne veux que trois arguments dans l'exécution de ton code, et que l'utilisateur en met cinq à la place, faudra bien dire à l'utilisateur qu'il comprend rien à la doc du programme, trois c'est trois, pas cinq !

  8. #7
    mp3dux

    Re : Char en C++

    Si tu veux épater tes camarades de classe et te taper la note maxi en prog je te conseille ce site pour le C++
    et celui là pour le C

    Toutes les réponses aux questions que tu viens de poser se trouvent dessus...
    Si nous faisions tout ce que nous sommes capables de faire, nous en serions abasourdis. T.E

  9. #8
    andreuxyoupi

    Re : Char en C++

    Citation Envoyé par mp3dux Voir le message
    Si tu veux épater tes camarades de classe et te taper la note maxi en prog je te conseille ce site pour le C++
    et celui là pour le C

    Toutes les réponses aux questions que tu viens de poser se trouvent dessus...
    Ha ha oui tout le monde m'en parle d'openclassroom, je vais y jeter un oeil !
    (Mais au passage, le programme que j'ai copié/collé vient de ce site !!)

    Une petite question qui me turlupine encore : que veux dire exactement "const char" dans un programme ?

  10. #9
    paul2121

    Re : Char en C++

    Il me semble que const char veut dire qu'on initialise une chaîne de caractères (c'est-à-dire qu'on stocke des lettres, ce qu'on demande à faire avec des nombres) et, avec le const, qu'elle ne pourra jamais être modifiée au cours de l'exécution du programme. Dans le cas où on la changerait, le compilateur renverrait une erreur. Par exemple, je stocke "Bonjour" dans la mémoire, et, tout au long du programme, "Bonjour" reste en mémoire.
    (Quelqu'un pour m'aider avec ma méthode d'Euler ? )

Discussions similaires

  1. Char musical
    Par GS4G dans le forum Électronique
    Réponses: 13
    Dernier message: 20/06/2014, 16h39
  2. String et Char
    Par DADYCOKE dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 26/02/2013, 17h16
  3. Un char sur plus de 8 bits en C ??
    Par fiatlux dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 10/09/2012, 00h01
  4. char rc
    Par invite316acf12 dans le forum Électronique
    Réponses: 10
    Dernier message: 29/07/2010, 22h56
  5. [C]-Conversion Int -> Char, Float -> Char, ...
    Par jorg1n dans le forum Électronique
    Réponses: 2
    Dernier message: 25/06/2008, 11h05