Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    Somme du résultat multiple d'une conversion
    Bonjour,

    Sur un petit programme de conversion d'une chaîne, je ne parviens pas à récupérer les données affichées à l'écran.
    Et je souhaiterais pourtant en faire la somme totale.

    J'ai un souci de méthodologie :

    PREMIERE OPTION :
    Dois-je placer ces données dans un fichier .txt, pour les lire ensuite une à une.
    Le but final étant d'en obtenir bien-sûr la somme totale.
    Si oui, comment ?

    DEUXIEME OPTION :
    Est-ce que "fgets" me permettrait de récupérer DIRECTEMENT la série d'entiers (résultat de la conversion de chaque caractère) à l'écran ?

    TROISIEME OPTION :
    Dans la logique, je devrais pouvoir tenter de récupérer chaque caractère converti comme une variable (c1, c2, c3, c4, c5, ...) et en faire ensuite une banale somme.

    D'AUTRES OPTIONS ? :
    Je continue à chercher sur différents sites (Developpez, Openclassroms, ...), diverses FAQs, divers tutos textes ou vidéos.

    J'en appelle à votre indulgence car j'apprends en autodidacte et je fais de mon mieux.

    Voici mon code :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # include <stdio.h>
    # include <string.h>
     
    int main(int argc, char argv)
    {
    	char nom[100];
    	int longueurChaine = 0;
     
    	printf("Veuillez entrer votre nom :\n");
    	scanf("%s", &nom);
     
    	for (int i = 0; i <= strlen(nom); i++)
    	{
    		printf("%d\n", nom[i]);
    	}
     
    	return 0;
    }


    Cordialement.

  2. #2
    Expert éminent sénior
    Tu peux déjà oublier la second option.
    La troisième me paraît la meilleure, mais peut elle-même être superflue: Tu peux calculer la somme sans mémoriser les valeurs:
    Code C :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    # include <stdio.h>
    # include <string.h>
     
    int main(int argc, char argv)
    {
    	char nom[100];
    	char *pLF;
    	int somme = 0;
     
     
    	printf("Veuillez entrer votre nom :\n");
    	fgets(nom, 100, stdin);
    	//Retire le \n si l'on a tapé moins de 99 caractères, droppe le reste de la ligne si on en a tapé plus
    	if((pLF=strchr(nom, '\n'))!=NULL)
    		*pLF = '\0';
    	else
    	{
    		int c;
    		while((c=fgetc(stdin))!='\n' && c!=EOF) {}
    	}
     
    	for (int i = 0; nom[i]!='\0'; i++)
    	{
    		int valeurCarac = (unsigned char)nom[i];
    		somme += valeurCarac;
    		printf("%d\n", valeurCarac);
    	}
    	printf("Somme: %d\n", somme);
     
    	return 0;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre régulier
    Médinoc, je te remercie très sincèrement.
    Cela correspond exactement à ce que je cherchais à obtenir depuis ... plusieurs jours par des chemins différents et malheureusement qui s'avérèrent sans issue.

    Je suis en train d'étudier ton code avec beaucoup d'attention.

    Pour bien comprendre à quoi servait le "stdin", j'ai fait des recherches et ai trouvé ce tuto très explicite : https://emmanuel-delahaye.developpez.com/tutoriels/c/notes-langage-c/

    Grâce à toi, j'ai appris beaucoup en décomposant ton code pour le commenter.
    Du coup, je lis les ... 96 pages du tuto.


###raw>template_hook.ano_emploi###