Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.73
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
#1

Чем отличаются функции strcpy и strcpy_s - C++

05.09.2010, 02:32. Просмотров 7475. Ответов 8
Метки нет (Все метки)

Подскажите в чем отличаются функции:
strcpy от strcpy_s,
sprintf от sprintf_s,
strcat от strcat_s, и т.д.
И какой вариант лучше использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2010, 02:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чем отличаются функции strcpy и strcpy_s (C++):

strcpy/strcpy_s - C++
Добрый вечер! Есть класс (упрощенно): class const_string { public: const_string(char const* s) { strcpy(str, s); /...

Разница между strcpy_s и strcpy? - C++
Добрый день! Писал программу с использованием оператора strcpy. Компилятор выдал такое вот предупреждение: error C4996: 'strcpy':...

Ошибка error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead - C++
#include <iostream> #include <cstring> #include <fstream> #include<string> #include<iomanip> using namespace std; struct...

Выдает ошибку: error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead - C++
Уважаемые форумчане! У меня не работает программа. Все написано "вроде" правильно. Выдает ошибку: error C4996: 'strcpy': This function...

Чем отличаются эти функции? - C++
Аргумент в первой функции передается по значению. Это значит что создается копия переменной. А вот остальные не понимаю. void f1(int...

Чем отличаются функции cprintf и printf? - C++
подскажи чем отличаются функции cprintf и printf

8
ForEveR
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.09.2010, 02:39 #2
jonson, _s это все вижуал студивские придумки. Более безопасные типа. В какой-то степени действительно да, ибо позволяют каким-то по счету параметром вводить кол-во элементов. С другой стороны они только студивские, следовательно лучше имхо пользоваться стандартными.
0
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
05.09.2010, 02:54  [ТС] #3
Я работаю в VS2008 и если пишу без _s, компилятор выдает:

warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

В VS6.0 на сколько я помню, без предупреждений было.
0
ForEveR
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.09.2010, 02:56 #4
jonson, Дык. Да. Он выдает предупреждения. Но их можно отключить, можно не обращать внимания, а можно писать с _s. Подозреваю, что допустим в gcc такой код не скомпилируется.
2
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
05.09.2010, 03:00  [ТС] #5
Ясно. Спасибо.
0
odip
Эксперт С++
7160 / 3222 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
05.09.2010, 13:35 #6
Написано же - включи define _CRT_SECURE_NO_WARNINGS и оно не будет ругаться
Сам я предпочитаю юзать strlcpy(), strlcat()
0
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
05.09.2010, 13:45  [ТС] #7
Да я уже разобрался. Спасибо.
0
Evg
Эксперт CАвтор FAQ
18450 / 6500 / 454
Регистрация: 30.03.2009
Сообщений: 18,145
Записей в блоге: 29
05.09.2010, 13:56 #8
В этой теме была несколько более подробная дискуссия Использование strcpy_s
0
easybudda
Модератор
Эксперт CЭксперт С++
9722 / 5673 / 972
Регистрация: 25.07.2009
Сообщений: 10,916
05.09.2010, 14:00 #9
Цитата Сообщение от odip Посмотреть сообщение
Сам я предпочитаю юзать strlcpy(), strlcat()
Жаль, мелкомягкие компиляторы про эти функции ничего не знают...
0
05.09.2010, 14:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2010, 14:00
Привет! Вот еще темы с ответами:

Чем отличаются указатель в теле функции и в аргументе - C++
Здравствуйте. Не могу разобраться чем, в данном случае: bool LexAnalysis(const char* text) { const char *str = text; const char...

В чем разница между функциями strcat() и strcpy()? - C++
В чем разница между функциями strcat() и strcpy()?

Вылетает "strcpy_s", в чем может быть ошибка? - C++
Все перепробовал, по сути ошибки не должно быть, компилируется нормально, но только доходит до того места, сразу программа вылетает ...

чем отличаются static_cast от - C++
Привет всем! чем отличаются явное приведения типа long tmp = static_cast<long>(45.6); от long tmp = long(54.34); ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.