Probleme lecture sur l'entré standard 0 C

divx78 Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   -  
divx78 Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   -
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 :)
A voir également:

2 réponses

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