Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1374 connectés 

  FORUM HardWare.fr
  Programmation

  [c] question con mais bon.... chaine de caracteres.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c] question con mais bon.... chaine de caracteres.

n°30634
Paranoid_A​ndroid
Script error...
Posté le 11-05-2001 à 11:38:53  profilanswer
 

Comment je fais en ANSI C pour saisir puis afficher une chaine de caractere avec des espace ? une phrase quoi... paske apres la saisi, le printf me renvois toujours le mot situer avant le premier espace pis plus rien...  
 
g bo chercher entre les %s et les %c... ca marche po  :pt1cable:  
 
C quand meme bete de bloquer la dessus !  :jap:

mood
Publicité
Posté le 11-05-2001 à 11:38:53  profilanswer
 

n°30636
tgrx
My heart is pumping for love
Posté le 11-05-2001 à 11:42:57  profilanswer
 

char buffer[100];
int i=0;
do
{
  c= getc();
  buffer[i++]=c;
}
while (c != '\n');
buffer[i]=0;
printf("%s",buffer);
 
ou qq chose comme ca, je suis pas sur pour le getc()
A moins qu'il y ait un %l pour line avec scanf... :??:

n°30637
El_gringo
Posté le 11-05-2001 à 11:43:11  profilanswer
 

Tu bosse sur quoi !? Turbo C ?

n°30643
Paranoid_A​ndroid
Script error...
Posté le 11-05-2001 à 11:46:56  profilanswer
 

la chui sur dev-c++... ze debute en codant de a a z pour apprendre, voila...
 
tgrx, je comprend ta fonction, mais dois-je en deduire que le C tout con ne gere pas tout seul le probleme avec un parametre ? faut tout lui expliquer a la mano ? :D

n°30644
Aricoh
gentil mais fo po pousser
Posté le 11-05-2001 à 11:47:44  profilanswer
 

Bah non, c'est pas une question con !
 
Et y a qu'avec des questions, même si elles semblent anodines, qu'on peut progresser
 
J'apporte ma réponse "conne" (pour ceux qui le pensent, pff)
 
1) ajoute la libraire string.h au début de ton code
2) tu déclare un tableau de n caractères (la longueur dépend de la longueur de ta chaîne + 1)
3) tu fais un fgets (plus fiable que gets)
 
je te montre par l'exemple :
 
#include <stdio.h>
#include <string.h>
 
main()
{
    char phrase[51] /* 50 longueur maxi, prévoir pour \0 */
    int i;
 
    printf ("Phrase : " );
    fgets (phrase, 50, stdin);
    for (i = 0; i < strlen(phrase); ++i)
        printf ("%c", phrase[i]);
    printf ("\n" );
    return;
}

 

[edit]--Message édité par Aricoh--[/edit]


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°30650
Paranoid_A​ndroid
Script error...
Posté le 11-05-2001 à 11:55:50  profilanswer
 

Merci bcp msieur !!  
 
sinon t'as oublier un ; apres le char phrase[51]  :D (oui oui j'fais le malin )
 
merci encore Aricoh et les autres :jap:

n°30673
Aricoh
gentil mais fo po pousser
Posté le 11-05-2001 à 12:15:26  profilanswer
 

paranoid_android a écrit a écrit :

sinon t'as oublier un ; apres le char phrase[51]




 
c'était pour voir si tu suivais :lol:


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°30714
LogonSyste​m
Posté le 11-05-2001 à 13:50:57  profilanswer
 

Il y a une petite erreur  ;)  
 
fgets (phrase, 51, stdin);
et pas 50, qui lira seulement 49 caractères.
Il n'est pas nécessaire de toucher à la déclaration.
char Phrase[51]; est correct et on ne perd pas un octet.
 
Vala  :lol:

n°30755
Aricoh
gentil mais fo po pousser
Posté le 11-05-2001 à 14:33:08  profilanswer
 

Vi vi, c'était fait exprès :sarcastic:
 
et notre camarade, ben il l'a pas vu ...
 
Arf, moi non plus d'ailleurs ! :p
 
en fait, à chque fois je me pose tjs la question : dans le fgets, il est pris en compte ou pas, le '\0' ?
 
Bon ben là, apparemment voui mais j'suis sur que demain, j'aurais oublié
 
:lol:


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°30782
Paranoid_A​ndroid
Script error...
Posté le 11-05-2001 à 15:21:47  profilanswer
 

C vrai que c un peu relou leur histoire de \O ...
y'a strlen() qui l'enleve dans le total a ce que g vue... bref on fait ce qu'on veut mais 'tin pour faire une pauvre phrase y'a 3000 methodes, 12000 fonctions, et ca comptes jamais pareil !  :D  
 
Sinon voila je continue... par contre dev-c++ le compilo il est fou il me place des erreurs qui sont en fait 12 lignes au dessus !  :D c'k'on s'marre !

mood
Publicité
Posté le 11-05-2001 à 15:21:47  profilanswer
 

n°30790
kill9
Il a été tué vivant.
Posté le 11-05-2001 à 15:30:09  profilanswer
 

Y a d'autres solution.Parceque si ta phrase est plus longue que 50 caracteres ton char buffers[51], ben, il va se planter.
Si tu veux utiliser un tableau pour ranger ta phrase tu peux faire un:
char buffers[];
puis tu remplace ton scanf() par un gets() car un gets() lit tout ce qui est tapé jusqu'a un appuie sur la touche Entree(donc il prends les espaces.

n°30811
kill9
Il a été tué vivant.
Posté le 11-05-2001 à 16:01:51  profilanswer
 

Arf...decidement c'est pas mon jour(qui a dit que c'etait jamais mon jour ?) j'avais mal lu.

n°30814
Aricoh
gentil mais fo po pousser
Posté le 11-05-2001 à 16:02:55  profilanswer
 

kill9 a écrit a écrit :

Arf...decidement c'est pas mon jour(qui a dit que c'etait jamais mon jour ?) j'avais mal lu.




 
Il commençait à me faire douter en + :lol:


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°30832
kill9
Il a été tué vivant.
Posté le 11-05-2001 à 16:11:43  profilanswer
 

n'empeche, c'est quand meme mieux avec char buffers[]; :lol:

n°30957
Aricoh
gentil mais fo po pousser
Posté le 11-05-2001 à 18:41:59  profilanswer
 

argglglll, mais je vais te le me le !!!
 
:lol:

n°31034
gilou
Modérateur
Modzilla
Posté le 12-05-2001 à 08:27:40  profilanswer
 

kill9 a écrit a écrit :

n'empeche, c'est quand meme mieux avec char buffers[]; :lol:




 
Non: puisque tu n'a pas alloue la taille du buffer, ca va pas aller loin ton code.
De plus gets s est une fonction qui merde des que tu essayes d'ecrire plus que la taille de la zone dans laquelle tu veux ecrire. fgets est nettement plus blindee.
Un truc dans le style:
#define BUFSIZE 1024
int i=1;
char *p, *buffer;
buffer = malloc((BUFSIZE+1)*sizeof(char));
p=buffer;
while (fgets(buffer, BUFSIZE+1, stdin) && !feof(stdin))
{
   p=realloc(p, ((i+1)*BUFSIZE)+1);  
   buffer = p+i*BUFSIZE;
   i++;
}
 
 
J'ai tape ca a vue de nez et je garantis pas le test d'arret du while (lire la doc (man fgets) pour verifier).
L'idee: tu lis par tranche de BUFSIZE caracteres, et tu realloues une tranche tant que c'est necessaire.
A+,

 

[edit]--Message édité par gilou--[/edit]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°31401
LogonSyste​m
Posté le 14-05-2001 à 11:17:53  profilanswer
 

Euh... :D  
Je vais me faire conspuer...
p=realloc (p,((i+1)*(BUFSIZE+1)); serait plus juste...
du coup: buffer=p+(i*(BUFSIZE+1));
histoire de ne pas perdre le dernier 0 d'un cinglé qui a tapé les 1024 caractères...
 
Enfin, j'ai toujours trouvé étrange de mettre sizeof(char) pour les caractères, si tant est qu'on se sert tous des instructions memcpy ou memcmp pour copier des octets, et implicitement, des caractères.A partir de là, la notion de caractère ne peut être réellement un type dont la taille pourra varier sans que tous les programmes actuels soient à jeter...
 :p


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [c] question con mais bon.... chaine de caracteres.

 

Sujets relatifs
question toute bête sur les MFC (C++)Question technique MySQL
question simple HTML ![FORTRAN] Question toute conne !
Une Ch'tite question sur le html élementaire...Question de syntaxe de SQL avec mysql
[C/C++]Question a deux balles: c'est quoi une fonction far ou near ?[Genre de sondage]Question pour ceux qui posent des questions ici
chaine de caractere qui se transforme en istruction : javascript[VC++] une DERNIERE question sur mainFrame/Dialog box :) ! HELP !
Plus de sujets relatifs à : [c] question con mais bon.... chaine de caracteres.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR