Witam! Chcę zapytać o poprawność kilku przypadków.
Tworzę pięcioelementową tablicę char. Za pomocą funkcji strcpy przypisuję do niej ciąg 11 znaków. Program wypisuje mi cały ciąg, a nie tylko pierwsze 4 znaki.
int main() {
char tab[5];
strcpy(tab, "dlugiciag");
printf("%s\n", tab);
}
Druga sytuacja podobna ale z użyciem wskaźnika i funkcji malloc.
int main() {
char *dwa;
dwa = malloc(4*sizeof(char));
strcpy(dwa, "jeszczedluzszyciagznakow");
printf("%s\n", dwa);
}
W obu przypadkach zostaje wypisany cały ciąg, a nie tylko ograniczony rozmiarem tablicy. Kompilator nie zwraca żadnych uwag podczas kompilacji. Czy można to stosować do "poszerzania" tablic, czy jest to niepoprawne i powinno się tego unikać?