scanf( %s,tekst); //znaki podane z klawiatury (do pierwszego białego znaku ) //s kopiowane do zmiennej tekst i dostawiany jest znak \0

Podobne dokumenty
ŁAŃCUCHY W JĘZYKU C/C++

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Proces tworzenia programu:

Podstawy programowania w języku C++

Języki programowania obiektowego Nieobiektowe elementy języka C++

Tablice deklaracja, reprezentacja wewnętrzna

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Podstawy programowania

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 11. Elektrotechnika, semestr II rok akademicki 2008/2009

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Tablice wielowymiarowe. Przykład tablica 2-wymiarowa. Przykład. Przykład 3-wymiarowy. Tak naprawdę nie istnieją w C! Rozważmy tablicę o rozmiarze 3x2

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 7- sem.iii. M. Czyżak

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Tablice, funkcje - wprowadzenie

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

dr inż. Jarosław Forenc

Temat: Operacje na plikach. Pliki tekstowe i binarne. Faza otwarcia, zapisu/odczytu i zamknicia pliku.

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF22

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Funkcja (podprogram) void

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

Programowanie Proceduralne

Co nie powinno być umieszczane w plikach nagłówkowych:

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Podstawy programowania 1

Wykład 6. Operacje na łańcuchach znakowych

Programowanie w C Typ wskaźnikowy do typu znakowego i operacje na łańcuchach

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Podstawy programowania C. dr. Krystyna Łapin

Operacje na łańcuchach znaków

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

2 Przygotował: mgr inż. Maciej Lasota

Stałe i zmienne znakowe. Stała znakowa: znak

struct Student { char nazwisko[30]; int wiek; float ocena; }; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar];

tablica: dane_liczbowe

Podstawy Programowania

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Wskaźniki. Informatyka

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.

Podstawy programowania w języku C++

main() { float promien=p,wysokosc=h,objetosc; float objetosc_walca(float promien, float wysokosc);

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Struktury czyli rekordy w C/C++

Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki

Wprowadzenie do programowania w języku C

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Elementarne wiadomości o języku C

Wstęp do Programowania, laboratorium 02

Wstęp do wskaźników w języku ANSI C

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Języki i metodyka programowania. Wprowadzenie do języka C

JĘZYK C - TABLICE DWUWYMIAROWE,

Łańcuchy znaków. Agnieszka Nowak - Brzezińska

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

1 Przetwarzanie tablic znakowych

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Inicjacja tablicy jednowymiarowej

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Języki i metody programowania I

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Programowanie strukturalne i obiektowe

Podstawy programowania w języku C++

E S - uniwersum struktury stosu

Tablice. int rozmiar; cout << Jaki ma być rozmiar tabeli? ; cin >> rozmiar; { int tablica[rozmiar]; /* TU JEST ŹLE */... }

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE, ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Programowanie w językach wysokiego poziomu

Wskaźniki w C. Anna Gogolińska

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

INSTRUKCJE REPETYCYJNE PĘTLE

Podstawy programowania w języku C++

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy programowania komputerów

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Stałe, tablice dynamiczne i wielowymiarowe

Microsoft IT Academy kurs programowania

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

INSTRUKCJE REPETYCYJNE PĘTLE

Pliki. Informacje ogólne. Obsługa plików w języku C

Transkrypt:

Temat: Operacje na łacuchach tablicach znaków 1. Pojcie łacucha Łacuch to cig znaków zakoczony znakiem o kodzie zero ( \0 ). Łacuch moe by zapamitany w programie w stałej albo zmiennej łacuchowej. Przykład 1 char tekst[100]; // 100-elementowa tablica znakow scanf( %s,tekst); //znaki podane z klawiatury (do pierwszego białego znaku ) //s kopiowane do zmiennej tekst i dostawiany jest znak \0 gets(tekst); //znaki podane z klawiatury (do znaku koca linii ) s // kopiowane do zmiennej tekst i dostawiany jest znak \0 char *tekst1= To jest napis ; // przydział pamici dla łacucha tekst1 odbywa // si w trakcie przypisania. Na kocu łacucha dostawiany jest znak \0. char tekst='t ; // błd!!! tablica tekst ma ju przydział pamici 2. Funkcje operujce na łacuchach <string.h> - plik nagłówkowy zawierajcy operacje na łacuchach char strcpy( char *kopia, char *rodło ); kopiowanie wszystkich znaków łacucha rodło (do znaku \0 ) do łacucha kopia. Dodatkowo funkcja zwraca wskanik do pierwszego znaku łacucha kopia. Przykład 2 char str1[10]; char *str2 = abc ; strcpy(str1, str2); printf("%s\n", str1); printf("%s\n",strcpy(str1,"abcd")); Uwaga!!! Naley zadba o to, aby łacuch ródło miał znak \0 na kocu. 1

Naley zadba o to, aby łacuch kopia był odpowiednio długi, aby pomieci wszystkie znaki łacucha ródło int strcmp ( char tekst_1, char tekst_2 ) funkcja zwraca warto: < 0 gdy tekst_1 < tekst_2 = 0 gdy tekst_1 == tekst_2 > 0 gdy tekst_1 > tekst_2 Przykład 3 char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int wynik; wynik = strcmp(buf2, buf1); if (wynik > 0) printf("napis buf2 jest wiekszy niz buf1\n"); else printf("napis buf2 jest mniejszy niz buf1\n"); wynik = strcmp(buf2, buf3); if (wynik> 0) printf("napis buf2 jest wiekszy niz buf3\n"); else printf("napis buf2 jest mniejszy niz buf3\n"); unsigned strlen(char s ) Funkcja wyznacza i zwraca długo (ilo znaków) łacucha s (bez znaku \0 ) Przykład 4 char *tekst="jak dlugi jest to napis"; printf("dlugosc napisu %s : %d\n",tekst,strlen(tekst)); char strcat( char kopia, char ródło ) Funkcja dodaje łacuch ródło do łacucha kopia. Zwraca wskanik na połczony łacuch kopia. 2

Przykład 5 char cel[25]; char *spacja = " ", *c = "C++", *st = "Dev "; strcpy(cel, st); strcat(cel, spacja); printf("%s\n", strcat(cel, c)); char strchr(char s, int c ) Funkcja szuka pierwszego wystpienia znaku c w podanym łacuchu s Zwraca wskanik na znalezion pozycj wystpienia lub adres NULL. Przykład 6 char string[17]; char *ptr, c = ' ; strcpy(string, "To jest poczatek"); ptr = strchr(string, c); if (ptr) printf("znak %c wystepuje na pozycji: %d\n", c, ptr-string); else printf("znaku nie znaleziono\n"); char strrchr( char s, int c ) Funkcja szuka ostatniego wystpienia znaku c w podanym łacuchu s Zwraca wskanik na znalezion pozycj wystpienia lub adres NULL. Przykład 7 char string[15]; char *ptr, c = 'r'; strcpy(string, "To jest napis"); ptr = strrchr(string, c); if (ptr) printf("znak %c wystepuje na pozycji: %d\n", c, ptr-string); else printf("znak nie wystepuje\n"); char strstr( char s, char sub ) Funkcja szuka pierwszego wystpienia łacucha sub w podanym łacuchu s Zwraca wskanik na znalezion pozycj wystpienia lub adres NULL. 3

Przykład 8 char *str1 = "Dev C++", *str2 = "C++", *ptr; ptr = strstr(str1, str2); printf("podstring: %s wystepuje na pozycji %d\n", ptr,ptr-str1); char strupr( char s ) Funkcja zamienia zawarto łacucha s na due litery Przykład 9 char *string = "abcde89fgh***ijklmnopqrstuvwxyz", *ptr; //ptr = strupr(string); printf("%s\n", strupr(string)); char strlwr( char s ) Funkcja zamienia zawarto łacucha s na małe litery Przykład 10 char *string = "Dev C++"; strlwr(string); printf("%s\n", string); 4

3. Przykład programu przetwarzajcego łacuchy Przykład 11 #include <conio.h> #include <stdio.h> #include <string.h> char miesiace[12][14]; // miesiace - tablica dwunastu stałych napisów struct Pracownik char nazwisko[40]; float zarobki[12]; ; // funkcja do wczytywania danych typu Pracownik void wczytaj_dane(pracownik *P,int *ile) printf("nazwisko:"); scanf("%s",p[*ile].nazwisko); //strupr(p[*ile].nazwisko); for (int i=0;i<12;i++) printf("%s:",miesiace[i]); scanf("%f",&p[*ile].zarobki[i]); (*ile)++; // funkcja wypisujca nazwiska osób zaczynajcych si napisem pocz void wypisz_osoby(pracownik *P,int ile,char *pocz) char *pomoc,bufor[40],bufor1[40]; strcpy(bufor1,pocz); for (int i=0;i<ile;i++) strcpy(bufor,p[i].nazwisko); pomoc=strstr(strupr(bufor),strupr(bufor1)); if (pomoc!=null && pomoc==bufor1) printf("%s\n",p[i].nazwisko); 5

int main( ) #define n 100 Pracownik P[n]; int ile=0; for (int i=1;i<=3;i++) wczytaj_dane(p,&ile); char pocz[4]; printf("podaj trzy pierwsze litery nazwiska :"); scanf("%s",pocz); wypisz_osoby(p,ile,pocz); getch(); return 0; 6