Definirea sirurilor de caractere
Limbajul C nu defineste tipul de data sir ( string in Pascal ), dar exista doua posibilitati de definire a sirurilor:
0. Mai jos sunt prezentate variante de implementare
a unor functii de biblioteca de mai sus:
| int strcmp( char *s1, char *s2){
int i; for(i=0;s1[i]||s2[i];i++) if(s1[i]<s2[i]) return -1; else if(s1[i]>s2[i]) return 1; return 0; } |
| char *strcpy( char *d, char *s){
int i=0; while(s[i]){ //0 d[i]=s[i];i++; } d[i]='\0'; //1 return d; } //secventa ce cuprinde liniil dintre //0 si //1 inclusiv este echivalenta //cu: while(d[i]=s[i])i++; |
| char *strcat(char *d, char *s){
int i=0,j=0; while(d[i]) i++;/*la iesirea din while, i este indicele caracterului terminator */ while(d[i++]=s[j++]); return d; } |
1. Sa se scrie un program care:
- citeste cuvintele tastate fiecare pe cate un
rand nou, pana la CTRL/Z
( varianta: pana la introducerea un cuvant
vid )
- afiseaza cuvantul cel mai lung
- construieste si afiseaza cuvantul format din
ultima litera din cuvintele introduse, transformata in minuscula ( nu vor
fi prelucrate cuvintele ce nu se termina cu o litera )
- afiseaza cuvintele ce incep cu o vocala.
| #include <stdio.h>
#include <string.h> #include <conio.h> #include <ctype.h> #define LUNG 80
char tab_cuv[NR][LUNG];
void citire_cuv(void){
/* Varianta: tab_cuv se declara ca tablou de pointeri, se modifica declaratia lui tab_cuv si functia citire_cuv, restul functiilor raman nemodificate; #include <alloc.h>
void constr_cuv(void){
void cuv_max(void){
void cuv_vocale(void){
void main(void){ citire_cuv();
getch();
|
| #include <stdio.h>
#include <string.h> #define LUNGS 80 void main(void){
puts("*** sirul s1:");
gets(s1);
while(s2pos=strstr(s1ptr,s2)){
getch();
|