1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 133
1

Ошибка sprintf при компиляции в стандартном файле

11.07.2018, 23:28. Показов 2649. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь скомпилировать некие файлы, выводится ошибка:
"f:\programs\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\string(532): error C2664: "int sprintf(char *const ,const char *const ,...)": невозможно преобразовать аргумент 2 из "int" в "const char *const ""

Единственное место в одном файле, где есть sprintf в тексте:
C++
1
2
3
#ifndef sprintf_s
#define sprintf_s sprintf
#endif
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2018, 23:28
Ответы с готовыми решениями:

Ошибка при загрузке ОС Windows XP и стандартном выключении компьютера
Приветствую всех. Ребята помогите, я не сильна в администрировании операционной системы. У меня...

Ошибка при компиляции. Где ошибка? (Работа с классом)
Уважаемые форумчане! При компиляции проекта возникает ошибка " undefined reference to...

Ошибка памяти при выполнении, при компиляции не выводит ошибки
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой...

Ошибка при компиляции программы при попытке передать метод объекта в параметры процедуры
Есть вот такой модуль: Unit Corutine; Interface uses DOS; type Myproc = procedure;...

4
133 / 53 / 43
Регистрация: 09.05.2015
Сообщений: 565
12.07.2018, 00:28 2
во второй строке попробуй убрать sprintf
0
Вездепух
Эксперт CЭксперт С++
11689 / 6368 / 1723
Регистрация: 18.10.2014
Сообщений: 16,051
12.07.2018, 01:21 3
Цитата Сообщение от Tsegorah Посмотреть сообщение
Единственное место в одном файле, где есть sprintf в тексте:
Это грубо ошибочная замена. В общем случае невозможно просто взять и вызвать sprintf там, где вызывался sprintf_s.

Единственный случай, когда такая замена может сработать, это если в качестве первого аргумента sprintf_s указан массив. Однако в этой строчке <string>, очевидно, указан не массив. Поэтому и получается ошибка.

C++
1
    _CSTD sprintf_s(&_Str[0], _Len + 1, _Fmt, _Val);
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
12.07.2018, 08:57 4
Почему-то многие считают, что sprintf и sprintf_s это похожие функции.
На самом деле, они очень разные (список параметров различается).
Советую всегда смотреть синтаксис при замене первой на вторую.
Пример
C++
1
2
3
char arr1[5],arr2[6]="hello";
sprintf(arr1,"%s",arr2);   //ошибка, выход за границы массива arr1
sprintf_s(arr1,5,"%s",arr2);
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,862
12.07.2018, 09:36 5
...поэтому вместо sprintf(arr1,"%s",arr2); надо использовать sprintf(arr1,"%.4s",arr2);
А если уж делать совместимость с костылями от Microsoft (странная идея, вообще-то, делать совместимость именно с костылями) то можно написать так
C
1
#define sprintf_s(dst, n, fmt, ...) sprintf(dst, fmt, __VA_ARGS__)
0
12.07.2018, 09:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2018, 09:36
Помогаю со студенческими работами здесь

Ошибка при компиляции: сбой при преобразовании в COFF: файл недопустим или поврежден
Подскажите что за ошибка при компиляции LINK : fatal error LNK1123: сбой при преобразовании в COFF:...

Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы
В VS скомпилировал код #include &lt;iostream&gt; using namespace std; int main() { int a;...

Ошибка при компиляции при переходе с vs 2012 на 2015
#pragma once #include &lt;windows.h&gt; #include &lt;windowsx.h&gt; class CBall { public:

Использование шаблонов при наследовании, ошибка при компиляции
При изучении списков написал шаблон протестировал, все работает. После написал класс наследник от...

Ошибка с sprintf в C++ Opengl
sprintf(sz, &quot;You win. Time: %d F2 - Restart game Esc - Exit&quot;, sec); error C4996: 'sprintf':...

Ошибка при компиляции в Visual C++ 2010: Сбой при преобразовании в COFF: файл недопустим или поврежден
Здравствуйте. Это моё первое сообщение на этом форуме. Я бы хотел вас спросить, при компилирования...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru