226
1: #include <iostream.h>
2: #include <string.h>
3: int main()
4: {
5: char Lancuchl[] = "Nikt nie jest sam";
6: char Lancuch2[80];
7:
8: strcpy(Lancuch2,Lancuchl);
9:
10: cout « "Lancuchl: " « Lancuchl « endl;
11: cout « "Lancuch2: " « Lancuch2 « endl;
12: return 0;
13: }
Lancuchl: Nikt nie jest sam Lancuch2: Nikt nie jest sam
ANALIZA:
W linii 2 wstawiamy do programu plik nagłówkowy STRING.H. Ten plik zawiera prototyp funkcji strcpy(). strcpy(), jako parametry pobiera dwie tablice znakowe - źródłową i docelową. Jeśli tablica źródłowa będzie dłuższa niż docelowa, to funkcja s trepy () będzie wypełniać pamięć poza końcem tablicy docelowej.
Żeby uniknąć tego niebezpieczeństwa, standardowa biblioteka zawiera również funkcję strncpy(). Ten wariant pozwala dodatkowo na określenie maksymalnej liczby znaków do skopiowania. Kopiowanie trwa aż do napotkania znaku końca tekstu lub gdy zostanie przekroczona podana maksymalna liczba znaków.
Listing 15.9 demonstruje wykorzystanie funkcji strnepy ().
1: #include <iostream.h>
2: #include <string.h>
3: int main()
4: {
5: const int MaksDlugosc = 80;
6: char Lancuchl[] = "Nikt nie jest sam";
7: char Lancuch2[MaksDlugosc+1];
8:
9:
10: strnepy(Lancuch2,Lancuchl,MaksDlugosc);
11:
12: cout « "Lancuchl: " « Lancuchl « endl;
13: cout « "Lancuch2: " « Lancuch2 « endl;
14: return 0;
15: }
1:
2:
3:
4:
5:
6:
7:
8:
9:
10
11
12
13
jfinclude <iostream.h>
#include <string.h> int mainQ (
char Lancuchlt) = "Nikt nie jest sam"; char Lancuch2[80];
strepy(Lancuch2,Łańcuch1);
cout « "Lancuchl: " « Lancuchl « endl; cout « "Lancuch2: " « Lancuch2 « endl; return 0;
)
Lancuchl; Nikt nie jest sam Lancuch2: Nikt nie jest sam
W linii 2 wstawiamy do programu plik nagłówkowy STRING.H. Ten plik zawiera prototyp funkcji strcpy (). strcpy{), jako parametry pobiera dwie tablice znakowe - źródłową i docelową. Jeśli tablica źródłowa będzie dłuższa niż docelowa, to funkcja strcpy () będzie wypełniać pamięć poza końcem tablicy docelowej.
Żeby uniknąć tego niebezpieczeństwa, standardowa biblioteka zawiera również funkcję strncpy{). Ten wariant pozwala dodatkowo na określenie maksymalnej liczby znaków do skopiowania. Kopiowanie trwa aż do napotkania znaku końca tekstu lub gdy zostanie przekroczona podana maksymalna liczba znaków.
Listing 15.9 demonstruje wykorzystanie funkcji strnepy ().
1: #include <iostream.h>
2; #include <string.h>
3: int main ()
4: {
5: const int MaksDlugosc = 80;
6: char Lancuchl(] = "Nikt nie jest sam";
7: char Lancuch2[MaksDlugosc+1];
8:
9:
10: strnepy(Lancuch2,Lancuchl,MaksDlugosc);
11;
12: cout « "Lancuchl: ” « Lancuchl « endl;
13: cout « "Lancuch2: " « Lancuch2 « endl;
14: return 0;
15: )