• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Poprawne obsłużenie funkcji strncpy()

0 głosów
277 wizyt
pytanie zadane 15 grudnia 2016 w C i C++ przez programmero Bywalec (2,420 p.)
zamknięte 16 grudnia 2016 przez programmero

Szybkie pytanie, szybka odpowiedź. Koledzy i koleżanki programiści, która wersja jest poprawna? Pogubiłem się z tablicami znaków i nie wiem czy muszę kopiować "długość napisu + 1" znaków do nowej tablicy czy samą "długość napisu".

Zależy mi na poprawnej tablicy znaków z znakiem NULL.

void copyCharArray1(char * array)
{
    size_t length = strlen(array);
    char * newArray = new char[length + 1];
    strncpy(newArray, array, length + 1);
}

// OR

void copyCharArray2(char * array)
{
    size_t length = strlen(array);
    char * newArray = new char[length + 1];
    strncpy(newArray, array, length);
}

 

komentarz zamknięcia: Wyjaśniło się
komentarz 15 grudnia 2016 przez draghan VIP (106,230 p.)
http://en.cppreference.com/w/cpp/string/byte/strncpy

Polecam, dokumentacja ważniejsza niż Biblia, Koran i Tora!

1 odpowiedź

–2 głosów
odpowiedź 15 grudnia 2016 przez MyWash Bywalec (2,640 p.)

Poprawna będzie druga, analogicznie do przykladu z dokumentacji:

 

#include <iostream>
#include <cstring>
 
int main()
{
    const char* src = "hi";
    char dest[6] = {'a', 'b', 'c', 'd', 'e', 'f'};
    std::strncpy(dest, src, 5);
 
    std::cout << "The contents of dest are: ";
    for (char c : dest) {
        if (c) {
            std::cout << c << ' ';
        } else {
            std::cout << "\\0" << ' ';
        }
    }
    std::cout << '\n';
}

 

Podobne pytania

0 głosów
0 odpowiedzi 354 wizyt
pytanie zadane 16 grudnia 2016 w C i C++ przez programmero Bywalec (2,420 p.)
0 głosów
2 odpowiedzi 4,398 wizyt
pytanie zadane 7 maja 2017 w C i C++ przez Suiko Początkujący (350 p.)
0 głosów
2 odpowiedzi 269 wizyt

93,600 zapytań

142,525 odpowiedzi

322,993 komentarzy

63,085 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...