kopiowanie tablicy do innej tablicy z ciągiem C-string
Ostatnio zmodyfikowano 2014-07-11 19:31
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: #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 ? |
|
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 |
|
malan |
» 2014-07-11 18:00:26 Jakbyś nie był świadomy to taka funkcja już istnieje: strncpy ;) |
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-07-11 19:20:47 jakie zero dodać ? jak to zapisac |
|
Jacob99 |
» 2014-07-11 19:23:02 #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" ); }
|
|
antonio12 Temat założony przez niniejszego użytkownika |
» 2014-07-11 19:31:37 ok dzięki |
|
« 1 » |