The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Проект Curl избавился от использования функции strcpy в коде"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от opennews (?), 31-Дек-25, 10:12 
Дэниел Cтенберг (Daniel Stenberg), автор утилиты для получения и отправки данных по сети curl, объявил о прекращении использования функции strcpy() в кодовой базе проекта и запрете применения данной функции в дальнейшем. Решение является продолжением инициированного в прошлом году отказа от использования функции strncpy(), копирующей заданное число байт из входящей строки. Применение strncpy() создавало опасность возникновения ошибок из-за  пропуска нулевого символа в конце строки или добавочного заполнения нулями...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64532

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Ilnarildarovuchemail (?), 31-Дек-25, 10:12   +3 +/
Молодцы, хорошее и safe изменение!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20, #56

3. Сообщение от Bottle (?), 31-Дек-25, 10:19   +6 +/
А могли бы использовать C++ и не пилить велосипед со строками...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #11, #13

4. Сообщение от Аноним (4), 31-Дек-25, 10:26   +2 +/
Где бенчмарки?
Ответить | Правка | Наверх | Cообщить модератору

5. Сообщение от Tron is Whistling (?), 31-Дек-25, 10:27   +/
Ну вот да, если нет managed строк - явная передача размеров буферов - лучшее решение.
Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от kravich (ok), 31-Дек-25, 10:31   +1 +/
>Кроме того, прекращение использования strcpy позволит избавиться от потока ложных сообщений об уязвимостях из-за некорректных срабатываний AI-инструментов, считающих наличие strcpy() уязвимостью без учёта имеющихся в коде проверок.

Это какой-то.... позор?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #7, #22

7. Сообщение от Tron is Whistling (?), 31-Дек-25, 10:39   +5 +/
Что да, то да. Когда термометр на мороженой рыбе показывает +50 - стоит выкинуть термометр.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

9. Сообщение от Аноним (9), 31-Дек-25, 10:45   –2 +/
а могли бы использовать питон и не заморачиваться вообще, а могли бы заплатить денег индусам и им бы все накодили, а могли бы найти гадалку чтобы она им искала ошибки через спиритические сеансы, ....сколько возможностей упущенно, ай яй яй
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #66

10. Сообщение от онанист (?), 31-Дек-25, 10:53   +1 +/
из-за некорректных срабатываний AI-инструментов, считающих наличие strcpy() уязвимостью


очередная победа "безопасности" над здравым смыслом.
осталось ещё отключить интернет.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24

11. Сообщение от Аноним (-), 31-Дек-25, 10:53   –6 +/
Поясню, программирование на чистом Си похоже на поэзию. Когда вы пишите стихи, люди жившие до вас много раз писали о том, о чём пишите Вы. Но данный факт не является причиной того что не надо писать стихи.

Что касается технической стороны, C++ не нужен. В учебниках и Интернете много всяких идиом и готовых функций на Си, которые программист может тупо пере-использовать. А если программсит напишет свою функцию, тоже неплохо. Во всяком случае это называется свободный выбор, а не велосипед.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #57, #59

12. Сообщение от Фонтимос (?), 31-Дек-25, 11:00   +/
>автор утилиты ..., объявил о

Очевидно, что если Данила еще немного подумает, то придет к единственно верному решению - переписать вообще на другом актуальном языке.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14, #23, #33

13. Сообщение от xPhoenix (ok), 31-Дек-25, 11:05   –1 +/
Рано или поздно и curl на Rust перепишут.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #15, #17, #21, #48

14. Сообщение от An (??), 31-Дек-25, 11:09   +/
Зря вы так. C тут то, что доктор прописал. На python слишком медленно будет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #40

15. Сообщение от Ilnarildarovuchemail (?), 31-Дек-25, 11:12   +1 +/
И это будет отвратительно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

17. Сообщение от Аноним (17), 31-Дек-25, 11:21   +4 +/
Уточнение:

Начнут переписывать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #30

19. Сообщение от Аноним (-), 31-Дек-25, 11:31   –1 +/
> Применение strncpy() создавало опасность возникновения ошибок из-за
> пропуска нулевого символа в конце строки или добавочного заполнения
> нулями.

Шикарный йазычог с офигенно продуманной стандартной либой :)
Прям все сделано для людей.

> Замена strcpy() на curlx_strcopy() произведена, так как существует
> вероятность человеческой ошибки, приводящей к разделению кода с
> проверкой/выделением памяти и вызовом strcpy(), например, при
> необдуманном переносе лишь части кода или вставки кода между проверкой
> и вызовом strcpy()

Хехе, classic.
Что забавно, даже новая curlx_strcopy не возвращает ошибку, если размеры не подходящие, а молча копирует нулевой символ.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #26, #27, #28

20. Сообщение от Аноним (20), 31-Дек-25, 11:35   +2 +/
Очень affordable
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

21. Сообщение от aname (ok), 31-Дек-25, 11:36   +/
Ох уж эти тысячи глаз
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

22. Сообщение от aname (ok), 31-Дек-25, 11:37   +/
С другой стороны, заявляется, что качество кода улучшено.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

23. Сообщение от aname (ok), 31-Дек-25, 11:39   –1 +/
Не совсем понятно, зачем ему что- то переписывать на C#
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #41

24. Сообщение от Аноним (24), 31-Дек-25, 11:41   +1 +/
"False positives" существовали всегда, если "эксперты по безопасности", проверяющие код AI-инструментами, об этом не в курсе, то это вопрос квалификации таких "экспертов". (Это, конечно же, не отменяет того факта, что AI в его нынешнем состоянии - срущий под себя младенец, пригодный только для выкачивания денег из инвесторов)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

25. Сообщение от Аноним (24), 31-Дек-25, 11:47   +1 +/
Для исключения уязвимостей в коде на Си достаточно средств, предоставляемых самим Си? Ай, беда-трагедия, как же тогда прогресс двигать, если можно без модных язычков обходиться?
Ответить | Правка | Наверх | Cообщить модератору

26. Сообщение от Аноним (26), 31-Дек-25, 11:49   +1 +/
> Хехе, classic.

в топку любые функции в стд, которые используют внутри себя другие функции. Эти функции фактически обертки над memset, пусть эти обертки пишет сам программист под свои задачи, по факту если это функция в стандартной библиотеке, то по существу там все входные параметры должны быть проверены на корректность, и указатели и длины, а тут что? - одни предположения. Мракобесие!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

27. Сообщение от Аноним (26), 31-Дек-25, 11:50   +1 +/
правка: memcpy, неважно, суть в общем ясна.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

28. Сообщение от Аноним (28), 31-Дек-25, 11:51   +/
> Шикарный йазычог с офигенно продуманной стандартной либой :)

Никто не мешает использовать более безопасные инструкции, вместо устаревших. Microsoft ещё в ранних Visual Studio сделала, чтобы компилятор ругался. Ты что ли не стареешь, офигенный продуман.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #72

29. Сообщение от Аноним (29), 31-Дек-25, 11:53   +/
А поцаны, писавшие всю жизнь на паскале и использовавшие для этого string, даже и не знали об этой проблеме. А кто то все еще думает, что паскаль с его строгой типизацией - плохой язык.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #32, #35

30. Сообщение от Аноним (30), 31-Дек-25, 11:58   +/
Уточнение:

второй раз

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #44

31. Сообщение от Аноним (31), 31-Дек-25, 11:58   +/
memccpy ему не понравилась? Занулять строку звучит как лютый костыль всё равно, лучше уж abort кидать чтобы баги быстрее пофиксить связанные с неправильным размером буфера.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #39

32. Сообщение от warlockemail (??), 31-Дек-25, 12:13   +/
string — это который не может быть длиннее 255 символов?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #36, #58, #63

33. Сообщение от Аноним (-), 31-Дек-25, 12:20   +/
Он уже пытался, но неосилил выносить нытье любителей некроплатформ.
Так что пусть хлебает щии(т) полной ложкой и выдумывает костыли для подпорки проекта.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #43

34. Сообщение от Tron is Whistling (?), 31-Дек-25, 12:22   +/
Вот что криво в этой реализации - нет отработки варианта slen == dsize и src[slen - 1] == 0. Это вполне себе корректный вариант, который тупо пропущен.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #37

35. Сообщение от Tty4 (?), 31-Дек-25, 12:23   +/
Паскаль всегда был слишком понятным и эффективным. Если что-то написано - сразу понятно, бред или нет (академический, те физиков и ко, код очень часто бред, просто иногда работает, его в расчет не берём). Очень сложно пускать пыль в глаза, когда Вас легко вывести на чистую воду.
Поэтому Питон, Си, Раст нужны - мозг свой вынесешь, пока разберёшься, что не так работает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

36. Сообщение от Аноним (-), 31-Дек-25, 12:27   +/
Ты что паскаль последний раз видел когда Ельцин был президентом)?
String is an alias for ShortString, AnsiString or Unicodestring (UTF16) depending on a compiler setting.

Т.е оно не просто поддерживает длинные строки, но еще и Unicode.
Чего дырявым ЯП даже не снилось.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #38, #54

37. Сообщение от Аноним (-), 31-Дек-25, 12:35   –1 +/
Не трогай! Это на новый год! (следущий)))

А вообще это норм, как для сишки.
По хорошему функция должна возвращать ошибку при неверных входных параметрах, но обработку ошибок еще не завезли, так что "и так сойдет"

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

38. Сообщение от Аноним (26), 31-Дек-25, 12:39   +1 +/
> Ты что

Надо начинать сначала с понятий bounded и unbounded string, потом уже ShortString, AnsiString or Unicodestring (UTF16) :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36

39. Сообщение от Tron is Whistling (?), 31-Дек-25, 12:41   –1 +/
Шпасибо за идею, ребята, но таки не лучше. Пусть у меня лучше один запрос завалится с непонятным багом, чем всё приложение.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #51

40. Сообщение от Фонтимос (?), 31-Дек-25, 12:41   –1 +/
Ну, питон как-бы популярный, но думаю, сейчас уже не актуальный.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #68

41. Сообщение от Фонтимос (?), 31-Дек-25, 12:42   +/
Да, не, это не слишком актуально сейчас
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

42. Сообщение от Аноним (-), 31-Дек-25, 12:43   –1 +/
Охохо, опять strncpy.

Вот что она делает, судя по названию? Наверное копирует строку 🤔
Ан нет!
Она копирует не более n ненулевых байтов из источника и добивает буфер до n нулями (но зачем?), ломая инвариант - в буфере после копирования не строка.

Отличная функция для строковой библиотеки, чувствуется могучий дедовский дизайн - собрать столько бесполезной функциональности в одной функции.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50

43. Сообщение от Фонтимос (?), 31-Дек-25, 12:43   +/
Бог любит троицу, так-что еще не все потеряно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

44. Сообщение от Аноним (44), 31-Дек-25, 12:44   +1 +/
Его и первый раз не начали, там растеры сделали какой-то минимальный бекенд и забросили, думая что Даниэль будет сам поддерживать его. А он не стал и просто выбросили его - https://daniel.haxx.se/blog/2024/12/21/dropping-hyper/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #75

45. Сообщение от Аноним (45), 31-Дек-25, 12:44   +/
>Теперь все вызовы strcpy() заменены на новую функцию curlx_strcopy

Какое же гнилое говно эта сишка, что в ней совсем-совсем в стандартной библиотеке вообще ничего юзабельного нет. Менталитет сишников такой же. Сейчас я задействовал одну либу, парсящую один формат, на сишке (от безысходности, на плюсах варианта нет) ... вроде бы превосходно документированную, но ... оказалось, что таки недостаточно документированную, там внутри malloc на mallocе, хотя это совсем не требуется, можно было просто указатель в буфер, которым владеет пользователь API, передать, без каких-либо аллокаций вообще, и то, что функция делает маллоки и что возвращаемые ей значения надо освобождать - это вообще никак недокументировано! А в другой функции есть баг прямо в API, из-за которого использование её функций сразу даёт повреждение кучи из-за путаницы в типах указателей (функция из одной строчки, но там непрозрачный указатель приводится не к тому типу, потому что разраб идиот, решил сэкономить, и внутри либы одну и ту же функцию задействовать для двух разных типов, при этом весь код касаемый другого типа не протестирован вообще, так как второй тип - это плюсовые биндинги, которые автор просто добавил без каких-либо тестов).

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #53, #67

47. Сообщение от zionist (ok), 31-Дек-25, 12:59   +1 +/
> Решение является продолжением инициированного в прошлом году отказа от использования функции strncpy(), копирующей заданное число байт из входящей строки. Применение strncpy() создавало опасность возникновения ошибок из-за пропуска нулевого символа в конце строки или добавочного заполнения нулями.

Каким образом можно пропустить нулевой символ в конце строки и причём тут вообще добавочное заполнение нулями? Если оперировать Си строками без грязных хаков и собственных велосипедов, то нулевой символ никогда не исчезнит. Функция strcpy никогда не теряет нулевой символ. Если после нулевого символа есть дополнительные нулевые символы, это вообще не должно создавать никаких проблем. Если я не прав, приведите пример кода.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #64, #76

48. Сообщение от zionist (ok), 31-Дек-25, 13:05   –1 +/
Если уже и переписывать, то на Go. Потому что использование системного языка для простой утилиты выглядит как из пушки по воробьям.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #52

50. Сообщение от Аноним (71), 31-Дек-25, 13:14   +1 +/
Ну и что теперь из-за каждого чтения привет мира нужно городить библиотеку на 10 мегабайт? Раньше операционные системы были меньше 10 мегабайт.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

51. Сообщение от Аноним (-), 31-Дек-25, 13:20   +1 +/
> Пусть у меня лучше один запрос завалится с непонятным багом, чем всё приложение.

А если запрос НЕ завалится?
И просто будет удалённое выполнение кода как в Net-SNMP?

Будет лучше)?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

52. Сообщение от Аноним (44), 31-Дек-25, 13:22   +1 +/
Curl это библиотека - libcurl, а не утилита. С ней линкуется софт, если нужен http/ftp/smtp/pop3/ldap/ssh протоколы. Так что не катит тут твой гоу с его GC, рантаймом и непонятным API.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

53. Сообщение от Аноним (26), 31-Дек-25, 13:22   +/
> от безысходности
> хотя это совсем не требуется, можно было просто указатель в буфер, которым владеет пользователь API, передать, ....

это что за такой синдром выученной беспомощности? Ну пишите сами тот самый парсер, в чем проблема?

> А в другой функции есть баг прямо в API

А у кактуса есть КОЛЮЧКИ! Подумаешь, главное ведь желудок забить, чтобы не урчало.

пс: короче, причем тут Си если описанное выше мракобесие не зависит от языка, а от "потому что разраб идиот", сами ведь утверждаете.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

54. Сообщение от Аноним (44), 31-Дек-25, 13:26   +/
> Чего дырявым ЯП даже не снилось.

Ты что Сишку видел когда еще Горбачёв был президентом СССР? В Си строки вообще никогда не были ограничены по длинне, и так же 100 лет умеют в юникод.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #69

56. Сообщение от Аноним (56), 31-Дек-25, 13:33   +/
А всего-то нужно было Кернигана-Ритчи прочитать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #71

57. Сообщение от Аноним (57), 31-Дек-25, 13:34   –1 +/
Программирование на чистом Си похоже на письмо по слогам.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #60

58. Сообщение от Аноним (29), 31-Дек-25, 13:36   +/
Неа. Строки были динамические еще со времен TP. Причем за временем жизни следить компилятор. А всякие вот эти strблаблабла из Си - это что то из времен, когда выделять память динамически было слишком дорого, а потому или она выделялась на стеке (привет записывание за пределы буффера, бугага), или использовался некий статический буффер (привет thread-unsafe). Как давно это было?

А паскаль - эт ваще чудо. Открою большой и жирный секрет. Если заменить объекты на интерфейсы, а TObject на TInterfacedObject - можно вообще обойтись без деструкторов, ибо все время жизни будет отслеживаться компилятором. В Си/С++, насколько я знаю, так нельзя. Там надо все равно _AddRef и _Release ручками вызывать. И привет безопасная работа с памятью для криворуких программистов, которые не знают принципа матрешки - что создал, то надо удалить.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

59. Сообщение от Аноним (56), 31-Дек-25, 13:37   +2 +/
> Поясню, программирование на чистом Си похоже на поэзию.

Абсолютно согласен. Мне напоминает Маяковского и Блока. Причем эстетика, внешний вид текста - основа всего остального.
Но есть отдельные личности, которые из совершенного инструмента делают непотребство (с примером можно ознакомиться в соседней теме), а в случае неизбежной неудачи обвиняют инструмент.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #73

60. Сообщение от Zulu (?), 31-Дек-25, 13:39   +/
Самурай без меча подобен самураю с мечом, но без меча.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

62. Сообщение от Аноним (62), 31-Дек-25, 13:39   –1 +/
Недавно смотрел код этой библиотеки. Код страшноват даже по меркам си. С модульностью как-то тоже не очень, один здоровый монолит. Даже не ясно, кто в здравом уме будет это поддерживать, если автор отойдёт от дел.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #70

63. Сообщение от Аноним (29), 31-Дек-25, 13:40   +/
Да, на паскале можно писать почти как на скриптовом языке. Можно создать что то типа TList<TMyInterface>, добавлять туда что то без необходимости очищать это добро унылым кодом типа for I := 0 to FList.Count - 1 do FList[I].Free. И даже можно создавать, едрен батон, анонимные объекты, т.е. что то типа MyFunc(TMyObject.Create).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

64. Сообщение от Аноним (56), 31-Дек-25, 13:41   +1 +/
Надо же было гражданину отличиться. Отличился.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

66. Сообщение от Аноним (56), 31-Дек-25, 13:46   +/
>  а могли бы заплатить денег индусам и им бы все накодили

Ради того, чтобы строку скопировать в другую строку? Им (плательщикам) уже ничто не поможет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

67. Сообщение от Аноним (44), 31-Дек-25, 13:48   +/
>[оверквотинг удален]
> пользователь API, передать, без каких-либо аллокаций вообще, и то, что функция
> делает маллоки и что возвращаемые ей значения надо освобождать - это
> вообще никак недокументировано! А в другой функции есть баг прямо в
> API, из-за которого использование её функций сразу даёт повреждение кучи из-за
> путаницы в типах указателей (функция из одной строчки, но там непрозрачный
> указатель приводится не к тому типу, потому что разраб идиот, решил
> сэкономить, и внутри либы одну и ту же функцию задействовать для
> двух разных типов, при этом весь код касаемый другого типа не
> протестирован вообще, так как второй тип - это плюсовые биндинги, которые
> автор просто добавил без каких-либо тестов).

Начал поносить сишку, а закончил тем что "(от безысходности, на плюсах варианта нет)" - ну т.е. сам криворукий ничего не умеющий дятел, который ждёт что за него всё напишут.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

68. Сообщение от Аноним (56), 31-Дек-25, 13:50   +/
> Ну, питон как-бы популярный

и самое главное - в количестве пробелов не ошибиться.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40

69. Сообщение от Аноним (-), 31-Дек-25, 13:52   +/
> В Си строки

А в СИ есть строки? Вот это новость!!!
Специально открыл стандарт, но там никакого string data type нету.
В string.h какие-то недофункции для работы с чарами.

> вообще никогда не были ограничены по длинне,

Конечно не ограничены.
Ни по длинне, ни по буферу. Главное не забывать про нуль-терминатор, иначе будет бо-бо.

> и так же 100 лет умеют в юникод.

Настолько, что росчитать длину строки в символах для UTF-8 уже проблема.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54 Ответы: #74

70. Сообщение от Аноним (71), 31-Дек-25, 13:53   +/
ИИ будет поддерживать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62

71. Сообщение от Аноним (71), 31-Дек-25, 13:55   +/
И иконку перед монитором чтобы она защищала написанный код.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56

72. Сообщение от Аноним (56), 31-Дек-25, 13:57   +1 +/
> Microsoft ещё в ранних Visual Studio сделала, чтобы компилятор ругался.

Он бы ругался, когда во все проекты телеметрию добавляет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

73. Сообщение от cnjzxir (?), 31-Дек-25, 13:57   +/
Можно примеры?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59

74. Сообщение от Аноним (44), 31-Дек-25, 14:05   +/
> А в СИ есть строки? Вот это новость!!!

Ну это же вы начали первый. Я вам подыграл немного. Да, в Си нет никаких строк, как и в ассемблере. В асме "строки" это просто массив байт, ровно как и в Си.

> Настолько, что росчитать длину строки в символах для UTF-8 уже проблема.

И какая тут проблема у вас?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69

75. Сообщение от morphe (?), 31-Дек-25, 14:05   +/
Он же прямо говорит что вместе с теми кто этот бекенд и добавил решили что оно не нужно, функциональность слишком сильно дублирует то что в curl уже есть, не давая особых преимуществ, но при этом усложняя сборку

Всем желающим заменить curl на Rust - hyper имеет своё сишное апи, без лишней прослойки в форме api curl: https://docs.rs/hyper/latest/hyper/ffi/index.html

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

76. Сообщение от Аноним (-), 31-Дек-25, 14:06   +/
> Каким образом можно пропустить нулевой символ в конце строки

Элементарно. godbolt.org/z/znGerE5h6

int main() {
    char source[] = "Hello, World!";
    char destination[10];
    int copy_length = 10;
    strncpy(destination, source, copy_length);
    printf("Result %s", destination);
    return 0;
}

Program stdout: Hello, WorHello, World!
Итого - запоротый вывод из-за потерянного \n.
Потому что в сишечке строк нет, а есть убогие char*.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру