Fonction ft_print_reverse_alphabet

Bonsoir

J ai realise une fonction qui doit afficher l alphabet a partir de la lettre « z »

voici mon code :

#include <unistd.h>


void ft_print_reverse_alphabet (void);

void  ft_putchar  (char c)
{
write (1,&c,1);
}

int main ()

{
ft_print_reverse_alphabet ();

return 0;
}

void  ft_print_reverse_alphabet  (void)

{
char y;
y='z';
while (y>= 'a')
{
ft_putchar (y);
y--;
}
ft_putchar ('\n');
}

pendant l’exécution de mon programme j ai des point d’interrogation qui s affiche.
Quelqu’un peux me dire ce qui cloche ?

NB: excusez moi je comprends toujours pas comment afficher la coloration du code

Bonjour,

Inspire toi plutôt de ça en considérant que ta chaine de caractère est « abcdefghijklmnopqrstuvwxyz »:

#include <stdio.h>
 
int main()
{
    char str[100], rev[100];
    int t, i, j;
 
    printf(" Entrez une chaîne de caractère :  ");
    gets(str);
    
    j = 0;
    t = strlen(str);
 
    rev[t] = '\0'; //le dernier caractère doit toujours être égale à '\0'.
    for (i = t - 1; i >= 0; i--)
    {
      rev[j++] = str[i];
    }
    rev[i] = '\0';
 
    printf(" Chaîne de caractère après inversion = %s", rev);
    
    return 0;
}

Après si c’est juste d’utiliser le code ascii d’un caracter:
a=65
z=91
Donc soit tu fait une boucle qui par de 91 jusque 65 et ca affiche de z à a. Ou l’inverse.
pour afficher le caractère à partir de son code ascii:
printf("%c",codeAscii); ou putchar(codeAscii);

pense d’abord à bien écrire ce que tu veux faire. En texte simple. une ligne par action.

ensuite tu ecris ton code.

en simple, fait un algorithme d’abord.

Bonsoir @Pat66,
J’ai testé ta routine sur ma machine Debian; elle affiche correctement l’alphabet à l’envers sans points d’interrogation. Quel terminal utilises-tu ? Ne forcerait-il pas les chars en caractères UTF-16 ?

$ echo {z..a}

z y x w v u t s r q p o n m l k j i h g f e d c b a

Bonjour

ASCII En décimal :

de 90 à 65 inclus pour les lettres Z à A <=> Majuscules
de 122 à 97 inclus pour les lettres z à a <=> minuscules


ASCII en hexa-décimal :

de 5A à 41 inclus pour les lettres Z à A <=> Majuscules
de 7A à 61 inclus pour les lettres z à a <=> minuscules


La table des caractères ASCII est compatible UTF-8 et UNICODE

Donc, vous pouvez vérifier dans votre fenêtre de terminal
en entrant le point de code de la table Unicode correspondant :

Tapez le raccourci clavier Ctrl+u (un U en minuscule)
et vous verrez alors s’afficher la lettre u (soulignée) qui vous invite à entrer le point de code :

Par exemple, entrez 41 et vous verrez apparaître la lettre A

Vous remarquerez aussi que l’écart entre
les lettres majuscules et leur correspondance en lettres minuscules
est de 20 (en hexa-décimal)

A moins de vouloir réinventer le fil à couper le beurre, les lettres de l’alphabet grec sont directement interprétées en utf-8, sans besoin de connaître leur code ASCII.
La recherche initiale: " fonction qui doit afficher l’alphabet à partir de la lettre « z »"
On peut toujours faire une fonction bash avec une commande:

function minmaj() { echo {z..a} ; echo {Z..A} ; }

$ minmaj

z y x w v u t s r q p o n m l k j i h g f e d c b a
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

En général, quand tu suis une fomation, tu fais ce qu’on te demande,
même si ce qu’on te demande c’est d’essayer de ré-écrire toutes les fonctions du langage C ou des exercices qui ne servent apparemment à rien, comme dans certaines écoles :wink:

Possible « en général », mais non précisé dans ce cas précis, même en relisant, ce pourquoi j’ai citer la question initiale.
En général, il est aussi bon de se poser la question si l’outil ou méthode utilisés pour résoudre un problème est le bon.
Et en général en « formation », l’énoncé du sujet doit être sans ambiguïté.

Disons que là, c’est un peu spécial : c’est la méthode pédagogique qui est différente.

BOnsoir

Merci pos reponses mais juste pour info le probleme est resolu

Presque passionnant tout ce débat sur une hypothétique formation (pas compris d’où ça vient.).
Comme je n’avais saisi que Pat66 était « en formation » (??), je lui souhaite d’avoir réussi sa « formation », en espérant de retenir qu’un problème bien posé est déjà la moitié de la solution.

Bonsoir Verner

en effet je m 'initie a la programmation en autodidacte

c’est des exos de 42 ca nn ? perso j’avais utiliser la table ascii pcq si c’est pour la bas que tu t’entraine tu auras le droit que a la fonction write (meme si faire un write(1,« zyx…cba »,26) fonctionne)

#include <unistd.h>

void ft_print_reverse_alphabet(void)
{
	char i;

	i = 122;
	while (i > 96)
	{
		write(1, &i, 1);
		i--;
	}
}
/*
int	main()
{
	ft_print_reverse_alphabet();
}
*/
1 J'aime