2 / 2 / 2
Регистрация: 01.10.2016
Сообщений: 70
1

Создать аналог strncpy

07.09.2019, 14:38. Показов 2271. Ответов 2
Метки нет (Все метки)

Добрый день.
Столкнулся с проблемой: при компиляции нижеприведенного кода выдает ошибку "Run-Time Check Failure #2 - Stack around the variable 'res' was corrupted".
Задание заключается в том, чтобы создать аналог функции strncpy, формата char* strncpy(char* dest, const char* src, size_t num), которая из строки src копирует первые num символов в строку dest.
При сравнении встроенной и написанной функции выводится один и тот же текст, но ни одна, ни другая функции не выводят требуемый результат. Результат показан на скриншоте ниже.

Вывод организован средствами cstdio, поскольку так поставлена задача.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <clocale>
 
 
char* mystrncpy(char* dest, const char* src, size_t num)
{
    size_t n = 0;
    while (n < num)
    {
        dest[n] = src[n];
        n++;
    }
    return dest;
}
 
 
int main()
{
    setlocale(LC_ALL, "russian");
 
    const char s[] = "Здесь хранится какой то текст. Как то так.";
 
    char res[] = {0};
 
    char* standart1 = mystrncpy(res, s, 7);
    std::printf("\n");
    printf("%s", standart1);
    
    char* standart2 = strncpy(res, s, 7);
    std::printf("\n");
    printf("%s", standart2);
    std::printf("\n");
 
    system("pause");
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Создать аналог strncpy  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2019, 14:38
Ответы с готовыми решениями:

Аналог strncpy и strncmp для типа string
Подскажите, как проводить операции сравнения и копировании с двумя строками типа string, при чём...

strncpy
Дана строка: djh,dfkh,sdj. Как последовательно по отдельности записать в strncpy текстовые части: ...

Strncpy
Напишите пожауйста на С аналог функции Strncpy

про strncpy ()
привет=))) вот чето с этой функцией не пойму пример есть #include &lt;iostream&gt; using namespacr...

2
Модератор
Эксперт CЭксперт С++
4533 / 4172 / 765
Регистрация: 07.10.2015
Сообщений: 8,621
07.09.2019, 15:03 2
Лучший ответ Сообщение было отмечено Pakowski398 как решение

Решение

Pakowski398, две ошибки:
1) char res[80] = { 0 }; //надо выделять достаточно места в стеке, потому и возникала порча стека
2) dest[n] = 0; //после копирования символов строки, кто будет завершать строку нулем?
1
2 / 2 / 2
Регистрация: 01.10.2016
Сообщений: 70
07.09.2019, 15:30  [ТС] 3
Премного благодарен!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2019, 15:30

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как работает strncpy()?
#include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; char*input(char*word,int&amp;size){...

Странности в поведении strncpy
Я написал программу на ноутбуке используя Code::Blocks и minigw как компилятор под 7кой и перенёс...

ошибка 4996 strncpy
#include&lt;iostream&gt; #include&lt;Windows.h&gt; #include&lt;fstream&gt; #include&lt;cstring&gt; #include&lt;cstdlib&gt;...

Ошибка в функции (strncpy)
Надо прочитать файл содержащий что-то подобное: 1. Nomer reisa: 1 ves bagazha: 1.50...


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

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

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