Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

kopiowanie tekstu z tablicy do innej tablicy

Ostatnio zmodyfikowano 2014-07-21 13:37
Autor Wiadomość
antonio12
Temat założony przez niniejszego użytkownika
kopiowanie tekstu z tablicy do innej tablicy
» 2014-07-21 09:24:07
Program:
C/C++
[ # 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 ! ?
P-114154
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';
P-114155
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ć?
P-114160
Mizzrym
» 2014-07-21 13:20:32
Która 9??
Bo nie bardzo rozumiem pytanie?? ;)
P-114161
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[] ?
P-114162
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 );
P-114163
antonio12
Temat założony przez niniejszego użytkownika
» 2014-07-21 13:37:18
ok dzięki
P-114164
« 1 »
  Strona 1 z 1