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

elb -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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