llvm-project

Форк
0
/
strncpy.cpp 
29 строк · 895.0 Байт
1
//===-- Implementation of strncpy -----------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8

9
#include "src/string/strncpy.h"
10

11
#include "src/__support/common.h"
12
#include <stddef.h> // For size_t.
13

14
namespace LIBC_NAMESPACE {
15

16
LLVM_LIBC_FUNCTION(char *, strncpy,
17
                   (char *__restrict dest, const char *__restrict src,
18
                    size_t n)) {
19
  size_t i = 0;
20
  // Copy up until \0 is found.
21
  for (; i < n && src[i] != '\0'; ++i)
22
    dest[i] = src[i];
23
  // When n>strlen(src), n-strlen(src) \0 are appended.
24
  for (; i < n; ++i)
25
    dest[i] = '\0';
26
  return dest;
27
}
28

29
} // namespace LIBC_NAMESPACE
30

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.