Probleme lecture sur l'entré standard 0 C

Fermé
divx78 Messages postés 115 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 21 mars 2009 - 17 nov. 2008 à 12:18
divx78 Messages postés 115 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 21 mars 2009 - 17 nov. 2008 à 12:33
Bonjour a vous,

Ma config :
-- Language C
-- OS : Open SUSE


J'ai un problême a lire sur l'entré standard en C voila je m'explique je voudrai interagire avec l'utilisateur je suis en pleine création d'un minishell voici le code que je ne compren pas qu'il ne marche pas :) merci de votre aide

int main(int ac, char **av)
{
char *buff;

buff = malloc( 50 * sizeof(char));
while(1)
{
read(0, buff, 50); // Lecture sur l'entré standard
puts(buff); // Hum pas beau puts je ses :)
if(strcmp(buff, "dam") == 0)
puts("sa marche");
}
}

1 ere erreu : Quan je tape un plus petit mot que le précédent la memoir garde des traces sur mot precedent ex:
/>damien
/>dam
ien // Voila le reste

2 eme erreur : il ne rentre pas dans ma condition voila

Merci a vous :)

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
17 nov. 2008 à 12:31
Salut,

1 ere erreu : Quan je tape un plus petit mot que le précédent la memoir garde des traces sur mot precedent ex:
/>damien
/>dam
ien // Voila le reste

Normal, read n'ajoute pas de '\0' à la fin de la chaîne. Donc utilise plutôt fgets, ça sera mieux.

2 eme erreur : il ne rentre pas dans ma condition voila
Normal aussi. Tu as appuyé sur la touche entrée que ton OS te traduit par un joli '\n'. Du coup, il faudrait mieux comparer avec "dam\n", ou alors virer le \n de ta variable buff avec strchr.

// Hum pas beau puts je ses :)
L'orthographe n'est pas belle (ses au lieu de sais). Mais puts est très joli ;).

Cdlt
0
divx78 Messages postés 115 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 21 mars 2009 3
17 nov. 2008 à 12:33
--
merci pour tes reponsses précises désoler pour l'othographe
Bonne journée.

La sagesse est d'être fou lorsque les circonstances en valent la peine
0