Créer une fonction qui affiche un a un des caractère d'une chain

Fermé
elb - 25 mars 2015 à 14:50
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 26 mars 2015 à 00:29
Bonjour,
j'ai soucis j'ai du mal a crée une fonction qui affiche un à un les caractère d'une chaîne de caractère !est ce que je peux avoir des explications tout en sachant que pour afficher j'utilise une fonction créée en interne voici mon code
void my_putchar(char c)
{
write(1,&c,1);
}
void my_putstr(char *str)
{
int i;
char *str="salut";
for(i=0;i<9;++i)
{
my_putchar(i);
}
}

int main()
{
char str;
my_putstr(&str);
my_putchar(str);
return(0);
}

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
26 mars 2015 à 00:29
Bonsoir,

Plein de problèmes.
write(1,&c,1);
Pourquoi write() ? getchar(c); est beaucoup mieux.

char *str="salut";
Tu surcharges str passé en argument. Ne serait-ce pas plutôt le paramètre que tu souhaites afficher ? Donc à retirer.

for(i=0;i<9;++i)
Pourquoi 9 ?

my_putchar(i);
Pourquoi i ? ce n'est pas le nombre que tu veux afficher mais plutôt str[i].

char str;
Plutôt : char *str; c'est une chaîne que tu veux afficher, pas un caractère.

my_putstr(&str);
Sémantiquement ok. Mais str n'est pas initialisé. De plus, il ne se terminera pas par \0. Donc segfault possible.

my_putchar(str);
str n'est pas initialisé. Il n'y a donc rien de terrible à afficher.

Cdlt,
0