IN101 - cours 11 - 27 novembre 2009
16 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

IN101 - cours 11 - 27 novembre 2009

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
16 pages
Français

Description

Chaînes de caractères et FichiersPierre-Alain FOUQUEChaîne de caractèresun tableau contenant des caractères et finissant •par le caractère ‘\0’: char chaine[10];chaine[0]=’h’; chaine[1]=’e’; chaine[2]=’l’; chaine[3]•=’l’; chaine[4]=’o’; chaine[5]=’\0’;char chaine[10]=”hello”; ‘\0’ automatiquement mis•char chaine[]; +/- équivalent char *chaine;•char chaine[]=”hello”; crée un tableau de 6 cases•char *chaine=”hello”; Attention: chaine[0]=’H’; ne •fonctionne pas. Pas de réservation de mémoireAllouer soi-même la mémoire•Arguments argv[]Le tableau argv[] est de type: char *•chaque case argv[i] contient un pointeur sur •un caractère, ce caractère est le premier de la chaîne i+1argv‘.’ ‘/’ ‘e’ ‘x’ \0’argv[0]argv[1] ‘1’ 3’ ‘\0’argv[2] ‘2’ ‘5’ ‘\0’argv[3] ‘4’ ‘2’ ‘\0’Chaîne de caractèresprintf(“%s”,chaine); pour afficher une chaîne •de caractèresint strlen() donne la longueur•int strcmp compare dans l’ordre alphabétique•strncpy recopie n caractères•atoi : transforme une chaîne en entier•cf. string.h•strcpy(char *dst, char *src)strcpy() ne contrôle pas la taille de la chaîne •qui commence à l’adresse src jusqu’au caractère ‘\0’ à traiter et va écrire dans la zone qui commence à l’adresse dstOn peut écraser les données si taille de la •chaîne src > taille de la zone dst allouéeEcriture de la chaîne “excessive” dans la zone AFonction strncpystrncpy prend comme argument des adresses•char *strncpy(char *dst, char *src, int taille);•char ...

Sujets

Informations

Publié par
Nombre de lectures 36
Langue Français

Exrait

Chaînes de caractères et Fichiers
Pierre-Alain FOUQUE
hc;hha cneai]=[0hciae ;]1=ni[ehain; c]=lne[2]3[eenia]01[eh=ollhacchr euemtnm sicah r; \0 automatiqtnelaviuc* rahc []neaichéq- +/; =ehen][ ;rclloe;chainchaihar hac*cr  c 6esasaelbed uu eéat nn: chainAttentioleol;  ahni=eh en ;H=]0[ellouAoi-mer sla même er
Chaîne de caractères un tableau contenant des caractères et finissant par le caractère ‘\0’: char chaine[10];
méio
=’l’; chaine[4]=’o’; chaine[5]=’\0’;
fonctionne pas. Pas de réservation de mémoire
uetniop nu tneitr sur uq ecah conv[i] argcase
Arguments argv[] Le tableau argv[] est de type: char *
un caractère, ce caractère est le premier de la chaîne i+1 argv
‘e’
‘/’
\0’
‘x’
‘\0’
‘2’
‘\0’ ‘\0’
‘\0’ ‘\0’
‘4’
‘2’ ‘4’
‘5’ ‘2’
3’ ‘5’
argv[1] argv[2] argv[3]
argv[0]
‘1’ ‘2’
‘ ’ .
mp cstrcint eurlrona serd moapueiqétabphale dreipocer ypcnrtsher une our afchcîaen tr sn(lentil alugnood ) enn
Chaîne de caractères
h
de caractères
n c racaèterstaoi : transforme  enuîahce enne nertif.ctr sg.inaine); p(%s,chrpnift
Ecriture de la chaîne “excessive” dans la zone A
chaîne src > taille de la zone dst allouée
qui commence à l’adresse src jusqu’au caractère ‘\0’ à traiter et va écrire dans la zone qui commence à l’adresse dst
strcpy(char *dst, char *src)
 sapt alrtno elô) y( cnescptren  la chaîaille de lae  is seénd elliat écraser les donO neptu
sdnermoc cnrtp ypahchc r01[2S;]oni eu vmet rettt iall)e;hcrac h1[10]=coucou;c(ypcnrttsd* rah *arch, nt ic,srgrmuema ed sne tssesadrer *scha
Fonction strncpy
caractères de ch1: strcpy(ch2, ch1+3, 3);
 sreinred3 s le2 chs an d
=  >hleolowtsstrncat(s,a,2)iahc:)encer crehtrrsha(ce,inussoremihe père 
occurrence de souschaine dans chaine
Autres fonctions
ah rs*rtc) => helloworldlrd;tscrtas(a, c;r ha]=a[wo rahc][s eh= olla, iar *g);nt lc(ahcnta ,hc rs*c);*ar tr*sr harahc(tacahc ,s* 
char{t)t inch,  *arahc(s* rts* tacrsizeloc(=mal *sthcra0=;ij=,i;j)(snelrts(*)rahc(fowhe(ili]s[=  !0\s{ )]i[ti[s=]; i++;}while((tsi[++=][t+j]+ ))\0 !=i]t[s ;r;0\=ts nrute
+strlen(t)+1); }
strcat
;
t in rs*{)itaioc(ah;for (int i,n=0 )0=>]i[s( ;0=i]s[ (&& +s(*0 nn1=turnre[
atoi
}
 n;
i]-’0’);
<=’9’); i++)
;=1neig s)+==]i[s( fi  ||=n\i[=]||s   =]<);9&  &[i(s=>]i)0;( r[s( e=-1;fo-) signs(i[=]=leesi  f rof0=i([s ;==]in=i, s0,neig;=1(ihcra* )s{ni tint atoignen (s
++) re }
*n);
atoi plus générale
s[i]==’\t’; i++) ;
n= i ( +*n100-]i[srut;)
 fclose(f);
 }
11
exit(EXIT FAILURE); _
 printf(« erreur dans fopen\n );
Freem rvace
Fichiers
de type FILE ( FILE * )  FILE *f = fopen(« toto.txt , «rw);
Penser à vérifier si l’opération s’est bien passée
 if(f==NULL) {
  elexOuv enu rus ruetniompco« e urctrusteltcru e nuihcutred erturi, re eerécn Fciihre= p