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

  FORUM HardWare.fr
  Programmation
  C

  fonction manipulant les chaines de caractères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction manipulant les chaines de caractères

n°2214888
chakirlbr
Posté le 03-01-2014 à 15:26:00  profilanswer
 

bonjour !:)
 
j'ai des probleme sur les fonction de chainne de caractére j'ai fait l'exercice de TP suivant mais ne compile pas :  
 
1.Déclarer une chaine de caractère PHRASE sans déterminer sa taille et faire le suivant :
 
a)Demander à l’utilisateur de saisir une chaine et l’affecte à PHRASE.
 
b)Affiche la taille de la chaine que l’utilisateur a saisit.
 
c)Déclarer une autre chaine constante CHAINE qui contient le mot suivant < Bonjour ! >, puis copier le contenu de cette chaine dans la première chaine PHRASE, et afficher les deux.
 
d)Modifier  (c) en copiant juste les 3 premiers caractères dans PHRASE, et afficher 2 chaines.
 
e)Demander à l’utilisateur de saisir un nom, puis affecter le à PHRASE, et afficher la concaténation de CHAINE et PHRASE.
 
f)Comparer CHAINE et PHRASE  à l’aide de la fonction de comparaison.  

Code :
  1. #include "stdafx.h"
  2. #include "string.h"
  3. #include "stdlib.h"
  4. int _tmain()
  5.    char nom[20];
  6.    char phrase[]="";
  7.    char CHAINE[]="Bonjour!";
  8.    printf("saisie vote chaine:\n" );
  9.    scanf("%s",&chaine);
  10.    phrase="chaine";
  11.    printf("La longueur de %s est : %d",phrase,strlen(phrase));
  12.    strcpy(t1,chaine2);
  13.    strncpy(t1,chaine2,3);
  14.    strncat(t1,chaine2,3);
  15.    printf("saisir un mon :" );
  16.    scanf("%s",&nom);
  17.    strcmp(phrase,chaine2);
  18. getchar();
  19. }


merci de m'indiquer  l'erreur .:(

mood
Publicité
Posté le 03-01-2014 à 15:26:00  profilanswer
 

n°2214889
norman_xx
Espoir
Posté le 03-01-2014 à 15:44:08  profilanswer
 

Citation :

char CHAINE[]="Bonjour!";
   printf("saisie vote chaine:\n" );


Ne serait-ce pas printf("Saisissez votRe chaine" ); ?
 
D'accord je sors  [:leo892]

n°2214892
billgatesa​nonym
Posté le 03-01-2014 à 16:56:08  profilanswer
 


char CHAINE[]="Bonjour!";
...
scanf("%s",&chaine);


chaine est déclaré nul part. Attention, le C est sensible aux majuscules et aux minuscules, et chaine est donc différent de CHAINE.
Ensuite, si chaine était déclarée par char chaine[] = "Bonjour !"; (en français, on a l'habitude de mettre un espace avant un point d'interrogation et de part et d'autre du signe égal),
alors chaine est un pointeur sur la zone "Bonjour !", et c'est donc déjà une adresse. Il est superflu de mettre l'esperluette (& ) dans le scanf() pour ce cas.
 

char phrase[]="";
...
phrase="chaine";


La première ligne est utilisée par le compilateur, pour créer un pointeur nommé phrase qui pointe en mémoire sur une zone qui contient "", autrement dit qui contient seulement un octet qui est le zéro binaire de fin de chaine.
La deuxième ligne essaye de faire pointer phrase sur une autre zone mémoire contenant le libellé "chaine".
Ce n'est pas logique. Soit on utilise ceci , sans réservé d'espace:

char *phrase;
...
phrase="chaine";


Soit (et c'est mieux) on utilise cela, en réservant de l'espace :  

char phrase[20];
...
strcpy(phrase, "chaine" );


De toutes manières, c'est bizarre.
J'ai l'impression qu'il est plutôt demandé de faire ça :

char phrase[20];
scanf("%s, phrase);


n°2214898
chakirlbr
Posté le 03-01-2014 à 17:36:41  profilanswer
 

billgatesanonym a écrit :


char CHAINE[]="Bonjour!";
...
scanf("%s",&chaine);


chaine est déclaré nul part. Attention, le C est sensible aux majuscules et aux minuscules, et chaine est donc différent de CHAINE.
Ensuite, si chaine était déclarée par char chaine[] = "Bonjour !"; (en français, on a l'habitude de mettre un espace avant un point d'interrogation et de part et d'autre du signe égal),
alors chaine est un pointeur sur la zone "Bonjour !", et c'est donc déjà une adresse. Il est superflu de mettre l'esperluette (& ) dans le scanf() pour ce cas.
 

char phrase[]="";
...
phrase="chaine";


La première ligne est utilisée par le compilateur, pour créer un pointeur nommé phrase qui pointe en mémoire sur une zone qui contient "", autrement dit qui contient seulement un octet qui est le zéro binaire de fin de chaine.
La deuxième ligne essaye de faire pointer phrase sur une autre zone mémoire contenant le libellé "chaine".
Ce n'est pas logique. Soit on utilise ceci , sans réservé d'espace:

char *phrase;
...
phrase="chaine";


Soit (et c'est mieux) on utilise cela, en réservant de l'espace :  

char phrase[20];
...
strcpy(phrase, "chaine" );


De toutes manières, c'est bizarre.
J'ai l'impression qu'il est plutôt demandé de faire ça :

char phrase[20];
scanf("%s, phrase);




merci .
mais dans l'exercice il dit Déclarer une chaine de caractère PHRASE sans déterminer sa taille et faire le suivant  
 
a)Demander à l’utilisateur de saisir une chaine et l’affecte à PHRASE.
comment je fait ça ?
merci

n°2214905
gilou
Modérateur
Modzilla
Posté le 03-01-2014 à 19:01:19  profilanswer
 

Citation :

Déclarer une chaine de caractère PHRASE sans déterminer sa taille

Donc il faut faire
char *PHRASE;
et pour le reste, man getline.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2214909
chakirlbr
Posté le 03-01-2014 à 19:09:09  profilanswer
 

gilou a écrit :

Citation :

Déclarer une chaine de caractère PHRASE sans déterminer sa taille

Donc il faut faire
char *PHRASE;
et pour le reste, man getline.
 
A+,


merci ^^ .
mais nous avons fait ce TP avant d'etudier les pointeur .
pour cela j'ai fait pas les pointeur.
il n ya pas d'autre methode ?

n°2214917
gilou
Modérateur
Modzilla
Posté le 03-01-2014 à 23:38:11  profilanswer
 

Non.  
En C, un tableau a besoin de connaître sa taille à sa déclaration.
Si on en connait pas la taille, on déclare un pointeur, qui prendra comme valeur, l'adresse de la chaîne quand celle-ci aura été allouée.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  fonction manipulant les chaines de caractères

 

Sujets relatifs
Afficher la variable local d'une fonction dans une classe filleFonction Else
Problème avec fonction powfonction gere_expose avec la LibX
[JAVASCRIPT + HTML] Problème fonction ReturnCrée une fonction de photo 'slider'
aide requête sql updateen fonction champ autre tableComment sélectionner une option d'un select en fonction d'un autre?
comment fonctionne la fonction crypt() ?appel d'une fonction hors procédure principale dans visual basic
Plus de sujets relatifs à : fonction manipulant les chaines de caractères


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