У чому проблема strcpy в C?
Переповнення буфера: Найпоширенішою проблемою з функцією strcpy є її здатність маніпулювати для переповнення буфера. 11 травня 2023 р.
Всупереч маркетинговій кампанії Microsoft щодо їхніх нестандартних функцій, strcpy є безпечним при правильному використанні. Вищезазначене є зайвим, але переважно безпечним. Єдина потенційна проблема полягає в тому, що ви не перевіряєте значення, що повертається malloc, тому ви можете розіменувати null (як зазначив Котлінський).
strcpy_s працює подібним чином, беручи розмір і зупиняючись при зустрічі з нульовим термінатором. Якщо ви знаєте, що рядок C фактично завершується нульовим значенням і є правильним, тоді немає шкоди у виклику strcpy – це абсолютно безпечно і, ймовірно, досить ефективно.
strcpy — це функція стандартної бібліотеки C, яка копіює рядок з одного місця в інше. Він визначений у рядку. h файл заголовка. Функція приймає два аргументи: буфер призначення, де буде зберігатися скопійований рядок, і вихідний рядок, який буде скопійовано.
Strcpy() — це бібліотечна функція, доступна в бібліотеці рядків у C, і використовується щоб скопіювати вміст одного рядка в інший. Функція strcpy() не створює рядок (масив символів), вона лише копіює рядок (масив символів).
рішення:
- char s1[100], s2[100],i;
- printf("Введіть рядок s1:\n");
- fgets(s1, 100, stdin);
- for(i = 0; s1[i] != '\0'; ++i)
- s2[i] = s1[i];
- s2[i] = '\0';
- printf("Рядок s2: %s", s2);