Τι θα τυπώσει ο παρακάτω κώδικας;
char fruit[10];
strcpy(fruit, "banana");
strcat(fruit, fruit);
strcat(fruit, fruit);
printf("%s", fruit);
Το 34% επέλεξε bananabananabananabanana και το 24% bananabanana, κοιτάζοντας μόνο τη λογική της συνένωσης: ο πίνακας έχει 10 bytes, οπότε ήδη η πρώτη strcat γράφει εκτός ορίων, και η επικάλυψη πηγής και προορισμού είναι από μόνη της απροσδιόριστη συμπεριφορά.
Μετρήστε πόσα bytes χρειάζεται το αποτέλεσμα, μαζί με το '\0', και συγκρίνετε με το μέγεθος του fruit. Σκεφτείτε επίσης τι σημαίνει για την strcat να διαβάζει από τον ίδιο πίνακα στον οποίο γράφει.
Αριθμός στον οδηγό: Κ14.7
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: kahoot-strcat-self-overflow ·
Σύνδεσμος: https://progintro.github.io/study/questions/kahoot/kahoot-strcat-self-overflow.html ·
Markdown (GitHub)