kopiowanie tekstu z tablicy do innej tablicy
Ostatnio zmodyfikowano 2014-07-21 13:37
antonio12 Temat założony przez niniejszego użytkownika |
kopiowanie tekstu z tablicy do innej tablicy » 2014-07-21 09:24:07 Program: [ # include < iostream > using namespace std;
#include <cstring>
int main() { char tekst[] = { "Uwaga, tarcza zostala przepalona !" }; char komunikat[ 120 ]; strcpy( komunikat, tekst ); cout << komunikat << endl; strncpy( komunikat, "1234567890abcdef", 9 ); cout << komunikat; strcpy( komunikat, "--A ku-ku --!" ); cout << "\nNa koniec: " << komunikat << endl; }
Wykonanie tego proramu objawi się na ekranie jako: Uwaga, tarcz zostala przepalona ! 123456789rcza zostala przepalona ! Na koniec: -- A ku-ku --! Czemu w 2 wywołaniu funkcji jest strncpy a nie strcpy ? Czemu potem w 2 linijce wyskakuje takie coś 123456789rcza zostala przepalona ! ? Rozumiem najpierw te 9 liczb a potem jest 0 więc przerywa jakby ciąg dalszy tego stringu "1234567890abcdef", ale czemu potem po tych liczbach jest rcza zostala przepalona ! ? |
|
Mizzrym |
» 2014-07-21 10:00:30 Ponieważ w funkcji strncpy jeżeli liczba znaków do skopiowania jest mniejsza lub równa ilości znaków w kopiowanym ciągu nie zostaje dodany ko końcu znak zakończenia ciągu '\0'. Tak więc w Twoim przykładnie zmieniasz tylko pierwsze 9 znaków w buforze a reszta pozostaje bez zmian. Jeżeli chcesz aby ciąg kończył się po tych 9 znakach musisz sam w 10 znaku dodać znak: komunikat[9] = '\0';
|
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-07-21 13:09:27 a ta 9 to oznacza aby potem zaczął pisanie od 10 elementu tablicy pisać? |
|
Mizzrym |
» 2014-07-21 13:20:32 Która 9?? Bo nie bardzo rozumiem pytanie?? ;) |
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-07-21 13:22:43 tutaj: strncpy( komunikat, "1234567890abcdef", 9 );
tak 9 oznacza aby potem po ciągu 123456789 przekopiował się string od 10 elementu tablicy tekst[] ? |
|
Mizzrym |
» 2014-07-21 13:26:19 Nie. Ta funkcja zmienia jedynie pierwsze 9 elementów tablicy a pozostałe pozostawia bez zmian. Dalsza część tam jest bo skopiowałeś ją do tablicy 3 linijki wyżej: strcpy( komunikat, tekst ); |
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-07-21 13:37:18 ok dzięki |
|
« 1 » |