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

kopiowanie tablicy do innej tablicy z ciągiem C-string

Ostatnio zmodyfikowano 2014-07-11 19:31
Autor Wiadomość
antonio12
Temat założony przez niniejszego użytkownika
kopiowanie tablicy do innej tablicy z ciągiem C-string
» 2014-07-11 16:55:51
Program:

C/C++
#include <iostream>
using namespace std;

void funkcja( char nowa[], int ile, char stara[] );

int main()
{
   
    char start[] = { "Wielblad" };
    char kopia[ 4 ];
   
    funkcja( kopia, 4, start );
   
    cout << kopia;
   
    system( "pause" );
}

void funkcja( char nowa[], int ile, char stara[] )
{
    for( int i = 0; i < ile; i++ )
    {
        nowa[ i ] = stara[ i ];
    }
   
}


Do tablicy kopia chcę przekopiwać cztery pierwsze litery z tablicy start, więc tablicę kopię zapełnię bo będą już 4 elementy.
Mam 2 pytania:

1. Czy w takiej sytuacji do tablicy kopia zostanie na końcu dodana wartość null = 0 i kopia[4] przyjmie wartość 0 przez co potem to może narobić bałaganu w jakimś innym pliku ? Czy w takiej sytuacji tego zera w ogóle się nie doda ?

2. Czemu jak chcę wyświetlić samą tablicę kopia to wyświetla mi się jeszcze tablica start ?
P-113629
unkn9wn
» 2014-07-11 17:33:03
1. po pętli for powinieneś dodać 0 do końca tablicy
2. brak zera powoduje, że wypisywane są wartości aż do napotkania 0
P-113632
malan
» 2014-07-11 18:00:26
Jakbyś nie był świadomy to taka funkcja już istnieje: » standard Cstrncpy ;)
P-113634
antonio12
Temat założony przez niniejszego użytkownika
» 2014-07-11 19:20:47
jakie zero dodać ? jak to zapisac
P-113639
Jacob99
» 2014-07-11 19:23:02
C/C++
#include <iostream>
#include <cstdlib>

using namespace std;

void funkcja( char * nowa, int ile, const char * stara )
{
    for( int i = 0; i < ile; i++ )
    {
        nowa[ i ] = stara[ i ];
    }
    nowa[ ile ] = 0;
}

int main()
{
    char start[] = { "Wielblad" };
    char kopia[ 4 ];
   
    funkcja( kopia, 3, start );
   
    cout << kopia << endl;
   
    system( "pause" );
}
P-113640
antonio12
Temat założony przez niniejszego użytkownika
» 2014-07-11 19:31:37
ok dzięki
P-113643
« 1 »
  Strona 1 z 1