Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy...
Transcript of Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy...
![Page 1: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/1.jpg)
Podstawy programowaniaPodstawy programowaniaw jw języku C++ęzyku C++
Przetwarzanie tablic znaków
Część siódma
Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa.Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne.
Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.
Roman Simiński
[email protected]/~siminski
Autor
Kontakt
![Page 2: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/2.jpg)
Łańcuchy znakowe jako tablice znaków ze znacznikiem końcaŁańcuchy znakowe jako tablice znaków ze znacznikiem końcaPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 2Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Do reprezentacji łańcuchów znakowych w języku C wykorzystuje się zwykłe tablice znakowe.
Tablice takie nie różnią się od innych tablic w języku C, wprowadzono jedynie kilka udogodnień, czyniących łatwiejszym manipulowanie takimi tablicami.
W języku C przyjęto koncepcję łańcuchów ze znacznikiem końca (ang. null terminated strings).
”To jest napis” a to jego reprezentacja wewnętrzna:
Fizyczna długość napisu = liczba znaków + 1 Znacznik końca napisu to znak o kodzie \0 0
T o j e s t n a p i s \0
![Page 3: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/3.jpg)
Deklarowanie i inicjowanie zmiennych łańcuchowychDeklarowanie i inicjowanie zmiennych łańcuchowychPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 3Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Tablice znakowe można inicjować w zwykły sposób, przewidziany dla tablic:
char imie[ N ] = { ’A’, ’g’, ’a’ }; // \0 ???
Można wykorzystywać wygodniejszą formę:
char imie[ N ] = "Aga";
0 1 2 3
A g a \0Literał łańcuchowy :
Zmienna imie :0 1 2 3 4 5 78
A g a \0 . . .79
Uwaga — powyższe przypisanie wystąpić może jedynie przy definicji zmiennej!
imie = "Aga"; // Bł d, niedozwolone przypisanieą
char imie[ N ] = { ’A’, ’g’, ’a’, ’\0’ }; // \0 !!!
const int N = 80;
![Page 4: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/4.jpg)
Łańcuch pustyŁańcuch pustyPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 4Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Deklaracja łańcucha zainicjowanego napisem pustym:
char imie[ N ] = { ’\0’ };
Reprezentacja wewnętrzna łańcucha pustego:
imie[ 0 ] = ’\0’;
imie = ""; // Bł d, niedozwolone przypisanieą
char imie[ N ] = "";
Zmienna imie:0 1 2 3 4 5 78
\0 . . .79
Ustawianie łańcucha pustego po deklaracji:
Uwaga, jednak nigdy tak:
![Page 5: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/5.jpg)
Ogólny schemat przetwarzania tablic znakowychOgólny schemat przetwarzania tablic znakowychPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 5Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Przetwarzanie tablic polega zwykle na „przemaszerowaniu” zmienna indeksową po tablicy, dopóki nie ma końca napisu, oznaczanego znakiem '\0':
const int N = 80;int i;char s[ N ];. . .for( i = 0; s[ i ] != ’\0’; i++ ) < tu jakie operacje na ka dym znaku ś ż s[ i ] >
Wyprowadzanie zawartości napisu s do strumienia wyjściowego znak po znaku:
for( i = 0; s[ i ] != ’\0’; i++ ) cout << s[ i ];
Lub krócej:
for( i = 0; s[ i ] != ’\0’; cout << s[ i++ ] ) ;
Każdy znak napisu w osobnej linii:
for( i = 0; s[ i ] != ’\0’; cout << endl << s[ i++ ] ) ;
![Page 6: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/6.jpg)
Przetwarzanie z wykorzystaniem funkcji bibliotecznych — string.hPrzetwarzanie z wykorzystaniem funkcji bibliotecznych — string.hPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 6Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Do manipulowania tablicami znakowymi opracowano szereg funkcji bibliotecznych (plik nagłówkowy string.h),... większość z nich można łatwo napisać samemu!
![Page 7: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/7.jpg)
Wyznaczanie długości napisu — funkcja strlenWyznaczanie długości napisu — funkcja strlenPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 7Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Długość napisu to liczba znaków zapisanych w tablicy znakowej, a więc liczba znaków zapisanych przed wystąpieniem znacznika konca napisu.
Długość napisu to nie rozmiar tablicy a liczba znaków w niej zapisanych.
Rezultatem funkcji strlen jest liczba znaków napisu, przekazanego tej funkcji parametrem.
const int N = 80;char napis[ N ] = "J zyk C";ę. . .cout << "Liczba znaków w ła cuchu: " << napis << " to: " << ń strlen( napis );
Liczba znaków w łańcuchu: Język C to: 7
![Page 8: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/8.jpg)
Wyznaczanie długości napisu — funkcja strlen, zastosowanieWyznaczanie długości napisu — funkcja strlen, zastosowaniePodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 8Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Alternatywny algorytm przetwarzania tablic znaków:
int i, dlugosc;char napis[ N ];. . .dlugosc = strlen( napis );for( i = 0; i < dlugosc; cout << napis[ i++ ] ) ;
Lub:
for( i = 0, dlugosc = strlen( napis ); i < dlugosc; cout << napis[ i++ ] ) ;
Ale nie tak:
for( i = 0; i < strlen( napis ); cout << napis[ i++ ] ) ;
Dlaczego nie tak?
![Page 9: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/9.jpg)
Wyznaczanie długości napisu — funkcja strlen, realizacjaWyznaczanie długości napisu — funkcja strlen, realizacjaPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 9Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Realizacja w wykorzystaniem iteracji while:
int strlen( char s[] ){ int len = 0;
while( s[ len ] != '\0' ) len++;
return len;}
Realizacja w wykorzystaniem iteracji for:
int strlen( char s[] ){ int len; for( len = 0; s[ len ] != '\0'; len++ ) ; return len;}
![Page 10: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/10.jpg)
Zamiana wielkości liter — funkcje strupr i strlwrZamiana wielkości liter — funkcje strupr i strlwrPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 10Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Konwersja - małe litery na duże: strupr, duże litery na małe: strlwr.
char a[ N ] = "ALA";char b[ N ] = "ala";
strlwr( a ); // Po wywołaniu strlwr zmienna a zawiera napis "ala" strupr( b ); // Po wywołaniu strupr zmienna a zawiera napis "ALA"
Realizacja funkcji strupr:
void strupr( char s[] ){ int i; for( i = 0; s[ i ] != '\0'; i++ ) s[ i ] = toupper( s[ i ] );}
Realizacja funkcji strlwr:
void strlwr( char s[] ){ int i; for( i = 0; s[ i ] != '\0'; i++ ) s[ i ] = tolower( s[ i ] );}
Konwersja elementu tablicy, toupper zamienia znak będący parametrem na literę dużą, o ile był literą małą.
Konwersja elementu tablicy, tolower zamienia znak będący parametrem na literę małą, o ile był literą dużą.
![Page 11: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/11.jpg)
Kopiowanie napisów — funkcja strcpy, zastosowanieKopiowanie napisów — funkcja strcpy, zastosowaniePodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 11Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Pamiętamy, że w językach C/C++ nie można kopiować zawartości tablic wykorzystując operator przypisania.
char s1[ 80 ] = "J zyk C";ęchar s2[ 20 ];. . .s2 = s1; // Tak nie wolno !!!
Do kopiowania zawartości tablic znakowych używamy funkcji strcpy
strcpy( s2, s1 );
Funkcja strcpy kopiuje zawartość tablicy znakowej s1 do tablicy s2. Kopiowaniu podlegają wszystkie znaki łańcucha s1 (aż do \0), zakłada się, że tablica s2 ma rozmiar wystarczający na pomieszczenie kopiowanych znaków.
Funkcja strcpy służy również do kopiowania zawartości literałów łańcuchowych:
strcpy( s1, "Programowanie " );strcpy( s2, "w j zyku C" );ę
![Page 12: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/12.jpg)
Kopiowanie napisów — funkcja strcpy, przykładowa realizacjaKopiowanie napisów — funkcja strcpy, przykładowa realizacjaPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 12Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
char s1[ 80 ] = "Język C";char s2[ 20 ];. . .strcpy( s2, s1 );
0 1 2 3 4 5
J ę z y k . . .79
C \06
0 1 2 3 4 5
J ę z y k . . .19
C \06
i++. . .
s1
s2
s
d
void strcpy( char d[], char s[] ){ int i; for( i = 0; s[ i ] != '\0'; i++ ) d[ i ] = s[ i ]; d[ i ] = '\0';}
![Page 13: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/13.jpg)
Kopiowanie napisów — funkcja strcpy, wersja uproszczonaKopiowanie napisów — funkcja strcpy, wersja uproszczonaPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 13Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
W językach C/C++ operator przypisania jest lewostronnie łączny. Pozwala to na pisanie następujących konstrukcji:
d[ 0 ] = d[ 1 ] = d[ 2 ] = 0;
Alternatywna, uproszczona realizacja kopiowania napisów:
void strcpy( char d[], char s[] ){ int i = 0; while( ( d[ i ] = s[ i ] ) != '\0' ) i++;}
Konstrukcja:
( d[ i ] = s[ i ] ) != '\0'
Przypisuje i-ty element tablicy s do i-tego elementu tablicy d. Przypisana wartość jest następnie porównywana (operator !=) ze znacznikiem końca napisu '\0'.
Ta wersja funkcji strcpy przepisuje znacznik końca napisu z tablicy s do d w iteracji while.
![Page 14: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/14.jpg)
Łączenie napisów — funkcja strcatŁączenie napisów — funkcja strcatPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 14Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
Funkcja strcat dołącza zawartość tablicy znakowej s1 do tablicy s2. Kopiowaniu podlegają wszystkie znaki łańcucha s1 (aż do \0), zakłada się, że tablica s2 ma rozmiar wystarczający na pomieszczenie dołączanych znaków.
strcpy( s1, "Programowanie " );strcpy( s2, "w j zyku C" );ę
strcat( s1, s2 );cout << s1;
Jak to działa?
void strcat( char d[], char s[] ){ int i = 0, j = 0;
}
Programowanie w języku C
while( d[ i ] != ’\0’ ) i++;
while( ( d[ i++ ] = s[ j++ ] ) != ’\0’ ) ;
Znajdź znacznik końca napisu docelowego, zapamiętaj jego pozycje w zmiennej i.
Przepisz elementy tablicy s do tablicy d. Maszeruj zmienną j od początku tablicy s, zmienną i od pozycji znalezionego wcześniej znacznika końca napisu.
![Page 15: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/15.jpg)
Co się stanie, gdy tablica docelowa jest za krótka?Co się stanie, gdy tablica docelowa jest za krótka?Podstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 15Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void main(){ char s1[ 5 ] = "AAAA"; char c1 = 'A'; char c2 = 'B'; char s2[ 5 ] = "BBBB"; strcpy( s2, "XXXXXXXXXXXXXXXXXXXX" );
}
Gdzie oryginalna zawartość tablicy s1?
Co się stało ze zmienną c2?
Dlaczego zmienna c1 jest OK?
printf( "\ns1 : %s\nc1 : %c\nc2 : %c\ns2 : %s", s1, c1, c2, s2 );
Nigdy nie należy zakładać, że „się uda”, czyli że tablica docelowa jest wystarczająco długa. Należy szacować, przewidywać, jeszcze raz przewidywać — programować defensywnie.
![Page 16: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/16.jpg)
Jak nie dopuszczać do „przepełnienia bufora”?Jak nie dopuszczać do „przepełnienia bufora”?Podstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 16Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
const int N = 10;const int M = 80;char s1[ N ];char s2[ M ] = "J zyk C jest wietny lecz pełen pułapek";ę ś
Biblioteka funkcji operujących na tablicach znaków zawiera funkcje wykonujące operacje analogiczne do przedstawionych uprzednio, pozwalające na kontrolę liczby znaków biorących udział np. w kopiowaniu. Są to np. funkcje: strncpy, strncat, itp.
strncpy( s1, s2, N - 1 );
cout << s1;
strncpy( s1, s2, sizeof( s1 ) - 1 );
cout << s1;
s1[ N - 1 ] = '\0'; s1[ sizeof( s1 ) - 1 ] = '\0';
Funkcja strncpy nie zawsze przekopiuje ’\0’!
![Page 17: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/17.jpg)
Funkcja strncpy — przykładowa, bezpieczniejsza realizacjaFunkcja strncpy — przykładowa, bezpieczniejsza realizacjaPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 17Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strncpy_while( char d[], char s[], int n ){ int i = 0; while( ( d[ i ] = s[ i ] ) != '\0' && i < n ) i++; while( i <= n ) d[ i++ ] = '\0'; }
void strncpy_for( char d[], char s[], int n ){ int i = 0; for( ; ( d[ i ] = s[ i ] ) != '\0' && i < n ; i++ ) ; for( ; i <= n ; d[ i++ ] = '\0' ) ; }
![Page 18: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/18.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 18Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
const int MAKS_DL = 80;char napis[ MAKS_DL ] = "C/C++";
cout << endl << napis;strrev( napis );cout << endl << napis;
C / C + + . . .napis \0
0 1 2 3 4 5 7978. . .
C/C++++C/C
![Page 19: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/19.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 19Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
const int MAKS_DL = 80;char napis[ MAKS_DL ] = "C/C++";
cout << endl << napis;strrev( napis );cout << endl << napis;
+ / C + C . . .napis \0
0 1 2 3 4 5 7978. . .
C/C++++C/C
![Page 20: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/20.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 20Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
const int MAKS_DL = 80;char napis[ MAKS_DL ] = "C/C++";
cout << endl << napis;strrev( napis );cout << endl << napis;
+ + C / C . . .napis \0
0 1 2 3 4 5 7978. . .
C/C++++C/C
?
![Page 21: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/21.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 21Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
const int MAKS_DL = 80;char napis[ MAKS_DL ] = "C/C++";
cout << endl << napis;strrev( napis );cout << endl << napis;
+ + C / C . . .napis \0
0 1 2 3 4 5 7978. . .
C/C++++C/C
![Page 22: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/22.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 22Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
0 endbegin
![Page 23: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/23.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 23Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
0 endbegins[ end ] == 'C'
![Page 24: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/24.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 24Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
1 endbegin
![Page 25: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/25.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 25Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
1 endbegins[ end ] == '/'
![Page 26: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/26.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 26Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
2 endbegin
![Page 27: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/27.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 27Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
2 endbegins[ end ] == 'C'
![Page 28: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/28.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 28Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
3 endbegin
![Page 29: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/29.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 29Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
3 endbegins[ end ] == '+'
![Page 30: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/30.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 30Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
4 endbegin
![Page 31: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/31.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 31Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
4 endbegins[ end ] == '+'
![Page 32: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/32.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 32Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
5 endbegin
![Page 33: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/33.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 33Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ;
// . . .}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
5 endbegins[ end ] == '\0'
![Page 34: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/34.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 34Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
5 end0begin
![Page 35: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/35.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 35Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
4 end0begin
![Page 36: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/36.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 36Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
4 end0begin <
![Page 37: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/37.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 37Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
C / C + + . . .s \0
0 1 2 3 4 5 7978. . .
4 end0begin
Cc
![Page 38: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/38.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 38Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ / C + + . . .s \0
0 1 2 3 4 5 7978. . .
4 end0begin
Cc
![Page 39: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/39.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 39Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ / C + C . . .s \0
0 1 2 3 4 5 7978. . .
4 end0begin
Cc
![Page 40: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/40.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 40Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ / C + C . . .s \0
0 1 2 3 4 5 7978. . .
3 end1begin
![Page 41: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/41.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 41Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ / C + C . . .s \0
0 1 2 3 4 5 7978. . .
3 end1begin <
![Page 42: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/42.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 42Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ / C + C . . .s \0
0 1 2 3 4 5 7978. . .
3 end1begin
/c
![Page 43: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/43.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 43Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ + C + C . . .s \0
0 1 2 3 4 5 7978. . .
3 end1begin
/c
![Page 44: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/44.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 44Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ + C / C . . .s \0
0 1 2 3 4 5 7978. . .
3 end1begin
/c
![Page 45: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/45.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 45Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ + C / C . . .s \0
0 1 2 3 4 5 7978. . .
2 end2begin
![Page 46: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/46.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 46Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end; . . . // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ + C / C . . .s \0
0 1 2 3 4 5 7978. . .
2 end2begin <
![Page 47: Podstawy programowania w języku C++uranos.cto.us.edu.pl/~siminski/c_cxx/c_cxx_w07.pdfPodstawy programowania w języku C++ Przetwarzanie tablic znaków Część siódma Niniejsze opracowanie](https://reader035.fdocuments.net/reader035/viewer/2022062605/5fc803d33ee04d22185dc15b/html5/thumbnails/47.jpg)
Odwracanie kolejności znaków w napisie — strrevOdwracanie kolejności znaków w napisie — strrevPodstawy programowania w C++Podstawy programowania w C++
Copyright © Roman Simiński 47Strona :
Prze tw arz an i e t ab l i c z nakówPrze tw arz an i e t ab l i c z naków
void strrev( char s[] ){ int begin, end;
// Szukanie konca napisu for( end = 0; s[ end ] != '\0'; end++ ) ; // Zamiana znakow miejscami for( begin = 0, end--; begin < end; begin++, end-- ) { char c = s[ begin ]; s[ begin ] = s[ end ]; s[ end ] = c; }}
+ + C / C . . .s \0
0 1 2 3 4 5 7978. . .
2 end2begin