zajęcia nr 11 - Politechnika Białostocka

Transkrypt

zajęcia nr 11 - Politechnika Białostocka
Informatyka 1
zajęcia nr 11
Elektrotechnika, semestr II
rok akademicki 2008/2009
mgr inż. Paweł Myszkowski
Plan dzisiejszych zajęć
1. Łańcuchy znaków
2. Wprowadzanie i wyprowadzanie
znaków i łańcuchów znaków
3. Funkcje z modułu <string.h>
4. Zadania do zrobienia
1
1. Znaki i łańcuchy znaków
Łańcuchy znakó
znaków:
-
tablice znakó
znaków zakoń
zakończone pewnym znakiem
sterują
sterującym (\
(\0),
-
typem bazowym jest typ char,
char,
-
wprowadzają
wprowadzając łańcuchy znakó
znaków w kodzie
programu uż
używamy cudzysł
cudzysłowó
owów.
79
116
‘O’
‘t’
0
1
111
32
‘o’ ‘ ‘
2
3
116
101
107
115
116
‘t’
‘e’
‘k’
‘s’
‘t’ ‘\0’
4
5
6
7
8
0
9
1. Znaki i łańcuchy znaków
Deklaracja łańcucha znakó
znaków:
a) jako tablica znakó
znaków:
char tekst[20]; //20//20-elementowa tablica znakó
znaków
//tu od razu przydzielana jest pamięć
pamięć
b) jako wskaź
wskaźnik:
char *tekst;
//tu nie ma przydział
przydziału pamię
pamięci
[o wskaź
wskaźnikach wię
więcej na osobnych zaję
zajęciach]
2
1. Znaki i łańcuchy znaków
Przypisywanie wartoś
wartości do łańcucha znakó
znaków:
a) jeś
jeśli deklarujemy jako tablica:
1) char tekst[20]=„
tekst[20]=„Oto tekst”
tekst”; //tak moż
można
2) char tekst[20]={‘
tekst[20]={‘O’,’t’,’o’,’ ‘,’t’,’e’,’k’,’s’,’t’,’\0’};
//tak moż
można, ale to niezbyt praktyczne
3) char tekst[20];
tekst=„
tekst=„Oto tekst”
tekst”;
//tak nie moż
można!!! Tu należ
należy uż
użyć funkcji strcpy()
strcpy()
lub memcpy()
memcpy()
1. Znaki i łańcuchy znaków
b) jeś
jeśli deklarujemy jako wskaź
wskaźnik:
char *tekst;
tekst=„
tekst=„Oto tekst”
tekst”;
//tak moż
można, ale tylko pierwszy raz, bo wtedy
przydzielana jest pamięć
pamięć
Znak a łańcuch:
cuch:
‘a’ – dokł
dokładnie jeden znak
„a” – łańcuch znakó
znaków, czyli dwa znaki: ‘a’ i ‘\0’
3
2. Wprowadzanie i wyprowadzanie…
Wprowadzanie znakó
znaków i łańcuchó
cuchów znakó
znaków:
1) scanf – omawiane wcześ
wcześniej
2) getch,
getch, getchar – do wprowadzania znakó
znaków
char znak;
printf("Podaj jeden znak");
znak=getchar();
znak=getchar();
3) gets – do wprowadzania łańcuchó
cuchów znakó
znaków
char *napis;
printf("Podaj łańcuch znakó
znaków");
gets(napis);
gets(napis);
2. Wprowadzanie i wyprowadzanie…
Wyprowadzanie znakó
znaków i łańcuchó
cuchów znakó
znaków:
1) printf – omawiane wcześ
wcześniej
2) putc,
putc, putchar – do wyprowadzania znakó
znaków
char znak='A';
znak='A';
printf("Oto znak: ");
putchar(znak);
putchar(znak);
3) puts – do wyprowadzania łańcuchó
cuchów znakó
znaków
char *nazwa="Politechnika
*nazwa="Politechnika Biał
Białostocka";
printf("Nazwa naszej uczelni to: ");
puts(nazwa);
puts(nazwa);
4
3. Funkcje z modułu <string.h>
char* strcpy(char
strcpy(char *dest,
dest, const char *src
*src))
kopiuje łańcuch znakó
znaków z src do dest
char *napis1="kopia", *napis2;
Funkcjonalnie tak, jak
strcpy(napis2,napis1);
dest = src
char* strdup(const
strdup(const char *src
*src))
tworzy kopię
kopię łańcucha src i zwraca ją
ją
char *napis="tekst
", *kopia;
*napis="tekst",
kopia=strdup(napis);
kopia=strdup(napis);
char* strcat(char
strcat(char *dest,
dest, const char *src
*src))
dołą
łącza
cza
ł
a
ń
cuch
src
na
koniec
ł
a
ń
cucha
dest
do
char *napis1="sklejony ", *napis2="napis";
strcat(napis1,napis2);
//tu w napis1 mamy łańcuch "sklejony napis"
3. Funkcje z modułu <string.h>
int strlen(const
strlen(const char *str
*str))
wyznacza i zwraca dł
długość
ugość (ilość
(ilość znakó
znaków) łańcucha
str (bez znaku '\
'\0')
char *napis="d
*napis="dłługi napis do zbadania";
int dl=strlen(napis);
dl=strlen(napis);
int strcmp(const
strcmp(const char *str1
*str1,, const char *str2
*str2))
poró
porównuje łańcuchy znakó
znaków; gdy są
są równe –
zwraca zero, jeż
ż
eli
str1<str2
zwraca
liczbę
je
liczbę ujemną
ujemną,
a jeś
jeśli str1>str2 – zwraca liczbę
liczbę dodatnią
dodatnią
char *napis1="tekst", *napis2="inny";
if (strcmp(napis1,napis2)==0) puts("Identyczne");
puts("Identyczne");
5
3. Funkcje z modułu <string.h>
char* strlwr(char
strlwr(char *str)
str)
zamienia w łańcuchu str wielkie litery na mał
małe, nie
zmieniają
zmieniając innych znakó
znaków
char *napis="D
napis="Dł
ł
UgI
nApIs Do ZmIaNy";
*
ZmIaNy";
strlwr(napis);
strlwr(napis);
char* strupr(char
strupr(char *str)
str)
zamienia w łańcuchu str mał
małe litery na wielkie, nie
zmieniają
zmieniając innych znakó
znaków
char *napis="D
*napis="DłłUgI nApIs Do ZmIaNy";
ZmIaNy";
strupr(napis);
strupr(napis);
char* strrev(char
strrev(char *str)
str)
odwraca kolejność
kolejność znakó
znaków w łańcuchu str
char *napis="Napis
*napis="Napis do odwró
odwrócenia";
strrev(napis);
strrev(napis);
3. Funkcje z modułu <string.h>
char* strtok(char
strtok(char *napis,
napis, char* separatory)
separatory)
dzieli łańcuch napis na częś
ci wedł
części
według dzielą
dzielących je
separatoró
separatorów
char* element, *sep = " ,!?";
char* zdanie = "To jest nasze pię
piękne, dł
długie
zdanie! Podoba się
się?"
element = strtok(zdanie,
strtok(zdanie, sep);
do
{
printf("%s\
printf("%s\n", element);
}
while((element=strtok(NULL,
while((element=strtok(NULL, sep)) != NULL);
6
3. Funkcje z modułu <string.h>
Funkcje do konwersji danych (zmiany typu):
float atof(char
atof(char *napis)
napis)
konwertuje łańcuch napis na liczbę
liczbę typu
float
char* tekst = "3.14159";
float liczba=atof(tekst);
liczba=atof(tekst);
float atoi(char
atoi(char *napis)
napis)
konwertuje łańcuch napis na liczbę
liczbę typu int
char* tekst = "12345";
int liczba=atoi(tekst);
liczba=atoi(tekst);
3. Funkcje z modułu <string.h>
Funkcje do konwersji danych (zmiany typu):
float itoa(int
itoa(int liczba,
liczba, char *napis,
*napis, int syst)
syst)
konwertuje liczbę
liczbę typu int na łańcuch
znakó
znaków
int liczba=123;
char* tekst[20];
itoa (liczba,tekst,10);
//10 oznacza system dziesię
dziesiętny
7
3. Funkcje z modułu <string.h>
Funkcje do sprawdzania rodzaju znaku:
isalnum() – sprawdza czy to znak alfanumeryczny
isalpha() – sprawdza czy to znak alfabetyczny
isascii() - sprawdza czy to znak ascii
isdigit() - sprawdza czy to cyfra
isgraph() - sprawdza czy jest graficzny
islower() – sprawdza czy to mała litera
ispunct() – sprawdza czy to znak interpunkcyjny
isspace() - sprawdza czy to spacja
isupper() – sprawdza czy to wielka litera
toascii() –konwertuje znak na kod ascii
tolower() – konwertuje literę na małą
toupper() – konwertuje literę na dużą
Dziękuję za uwagę
8

Podobne dokumenty