Ecriture de plusieurs mots à la suite....

neo927 Messages postés 9 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 16 août 2007 - 11 juin 2005 à 14:14
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 - 14 juin 2005 à 14:59
Bonjour à tous,

voilà mon ptit problème, je suis débutant en language C et j ai pas très bien compris la différence en les char, les strings, ...

J ai créer un ptit programme très simple qui envoie des net send, il demande à qui l envoyé et le texte (voila le problème). Quand j'écris un texte, il n y a que le premier mot qui s'affiche. Comment faire pour avoir le reste du message?

Voila mon code:
#include <stdio.h>
#include <stdlib.h>
main()
{
char* txt[100],
commande[100],
ip[10];
printf("Entrer le message:\t");
scanf("%s",&txt);
printf("Entrer le nom\n du destinataire:\t");
fflush(stdin);
scanf("%s",&ip);
sprintf(commande,"net send %s %s", ip, txt);
system(commande);
system("pause");
return 0;
}

Merci d'avance pour l intéret apporté à mon code et désolé pour mon ignorance....

10 réponses

NeoUmbrella Messages postés 117 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 15 janvier 2013
11 juin 2005 à 14:29
Moi a ta place j'utiliserais cin.getline(commande, 100, '\n');
Ainsis tu récupère tout jusq'au saut de ligne, tu dois inclure le fichier .
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
11 juin 2005 à 16:14
Bonjour,



NeoUmbrella > Il veut faire du C.



#include <stdio.h>

#include <stdlib.h>



main()

{

char txt[100], commande[100], ip[10];

printf("Entrer le message : ");

scanf("%s",txt);

printf("Entrer le nom du destinataire : ");

scanf("%s",ip);



sprintf(commande,"net send %s %s", ip, txt);

system(commande);

system("pause");



return 0;

}



Matt...
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
11 juin 2005 à 18:15
Pas de scanf() si le message a recuperer contient des espaces, fgets() si je me souviens bien devrait faire l'affaire.

+2(p - n)
0
neo927 Messages postés 9 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 16 août 2007
12 juin 2005 à 11:48
Hello Matt67,

oui, moi code est bien en C.

Salut, AlexMAN,

j'ai essayé de remplacer scanf() par fgets() mais mon compilateur me
marque une erreur. - warning: passing arg 2 of 'fgets' makes
integer from pointer wihout a cast

- too few arguments to function 'fgets'



fgets("%s",&txt);



est ce moi qui tappe faut la commande?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
14 juin 2005 à 09:54
Oui et non , tu as été abusé...

Il faut utiliser gets() et non pas fgets()...

Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
14 juin 2005 à 13:35
Bonjour,



Surtout pas gets mais bien fgets...

Matt...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
14 juin 2005 à 14:00
[auteurdetail.aspx?ID=160708 Matt67]: pourquoi donc?



voici un petit test:



char _Name1[256], _Name2[256];

printf("Enter your name:\n");

gets(_Name); // je tape: "a b c d"

printf("\nhello %s\n", _Name); // _Name contient "a b c d"

fgets(_Name2, 256, stdin); // je tape la même chaine

printf("\nhello %s\n", _Name2); // _Name2 contient aussi "a b c d"

system("pause");


Les deux écritures me donnent le même résultat, la 1ère est plus intuitive que la seconde à mon avis..


Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2005 à 14:39
D'accord avec buno, je crois que gets et fgets(.., stdin) sont tout simplement identiques
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
14 juin 2005 à 14:59
Bonjour,



Je reprend le programme de buno mais je change la taille de _Name1 et _Name2



char _Name1[5], _Name2[5];

printf("Enter your name:\n");

// je tape: "abcdefgh", gets accepte la chaine sans broncher (j'ai de la chance pas de plantage)

gets(_Name);

printf("\nhello %s\n", _Name);

// je tape: "abcdefgh", fgets ne recupere que "abcd", donc OK !

fgets(_Name2, 5, stdin);

printf("\nhello %s\n", _Name2);

system("pause");



Si les deux fonctions ont la même "vocation", autant utiliser fgets pour limiter les erreurs.


Matt...
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
14 juin 2005 à 14:59
Bonjour,



Je reprend le programme de buno mais je change la taille de _Name1 et _Name2



char _Name1[5], _Name2[5];

printf("Enter your name:\n");

// je tape: "abcdefgh", gets accepte la chaine sans broncher (j'ai de la chance pas de plantage)

gets(_Name);

printf("\nhello %s\n", _Name);

// je tape: "abcdefgh", fgets ne recupere que "abcd", donc OK !

fgets(_Name2, 5, stdin);

printf("\nhello %s\n", _Name2);

system("pause");



Si les deux fonctions ont la même "vocation", autant utiliser fgets pour limiter les erreurs.


Matt...
0
Rejoignez-nous