Форум программистов, компьютерный форум CyberForum.ru

Описать функцию, что добавляет N символов строки S2 в конец строки S1 - C++

Восстановить пароль Регистрация
 
Kanibalus
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 11
13.04.2010, 16:36     Описать функцию, что добавляет N символов строки S2 в конец строки S1 #1
Помогите пожалуйста с выполнением лабораторной работы.
Задание:
1. Разработать и реализовать функцию на языке С.
2. Провести ее тестирование с использованием драйвера.

Обозначение функции: STRNCAT(S1,S2,N);
Содержание функции: Добавляет N символов строки S2 в конец строки S1. Возвращает ссылку на результат.

Заранее большое спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2010, 16:36     Описать функцию, что добавляет N символов строки S2 в конец строки S1
Посмотрите здесь:

C++ Описать функцию, которая удаляет из строки все лишние пробелы
нужно описать что делают строки готовой программы C++
C++ Прокомментировать код
C++ Как определить конец введенной строки и взять последние 5 символов?
Передать в функцию указатель на начало и конец строки квадратной матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
13.04.2010, 18:23     Описать функцию, что добавляет N символов строки S2 в конец строки S1 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include "stdafx.h"
#include <stdio.h>
#include<string.h>
#include <conio.h>
#include <iostream>
using namespace std;
void STRNCAT(char *,char *,int );
int _tmain(int argc, _TCHAR* argv[])
{
STRNCAT("hello","world",3);
_getch();
    return 0;
}
void STRNCAT(char *s1,char *s2,int n)
{
int newsize = strlen(s1)+n;
int i;
int j;
char a[100]; // your new array; 
char temparr[100];// arr for s2 symbols;
for(i=0;i<n;i++)
temparr[i]=s2[i];
for(i=0;i<strlen(s1);i++)
a[i]=s1[i];
for(i=strlen(s1),j=0;i<newsize,j<n;i++,j++)
a[i]=temparr[j];
for(i=0;i<newsize;i++)
std::cout<<a[i];
}
Trigun
4 / 4 / 0
Регистрация: 02.04.2010
Сообщений: 22
13.04.2010, 20:18     Описать функцию, что добавляет N символов строки S2 в конец строки S1 #3
в смысле ссылку на результат????
может всетаки указатель на преобразованную строку????
kirjushyk
60 / 22 / 2
Регистрация: 13.03.2010
Сообщений: 65
13.04.2010, 20:50     Описать функцию, что добавляет N символов строки S2 в конец строки S1 #4
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
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
 
char *STRNCAT(const char *S1, const char *S2, size_t N)
{
    size_t l1, l2;
    char *result;
    l1 = strlen(S1);
    l2 = strlen(S2);
    if (N > l2)
        N = l2;
    result = malloc(l1 + N + 1);
    memcpy(result, S1, l1);
    memcpy(result + l1, S2, N);
    result[l1 + N] = 0;
    return result;
}
 
int main(int argc, char *argv[])
{
    char *string = STRNCAT("It would be ", "visible. It would be invisible.", 7);
    printf("%s\n", string);
    free(string);
    return 0;
}
Kanibalus
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 11
14.04.2010, 18:26  [ТС]     Описать функцию, что добавляет N символов строки S2 в конец строки S1 #5
Цитата Сообщение от Trigun Посмотреть сообщение
в смысле ссылку на результат????
может всетаки указатель на преобразованную строку????
Видимо все таки указатель, в задании написано ссылку, наверно ошибочно.

Спасибо большое отозвавшимся. Постараюсь разобраться в коде пока не очень знакомого для меня языка С.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.04.2010, 20:04     Описать функцию, что добавляет N символов строки S2 в конец строки S1 #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Взято из исходников FreeBSD (/usr/src/lib/libc/string/strncat.c)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
 * Concatenate src on the end of dst.  At most strlen(dst)+n+1 bytes
 * are written at dst (at most n+1 bytes being appended).  Return dst.
 */
char *
strncat(char * __restrict dst, const char * __restrict src, size_t n)
{
        if (n != 0) {
                char *d = dst;
                const char *s = src;
 
                while (*d != 0)
                        d++;
                do {
                        if ((*d = *s++) == 0)
                                break;
                        d++;
                } while (--n != 0);
                *d = 0;
        }
        return (dst);
}
Yandex
Объявления
14.04.2010, 20:04     Описать функцию, что добавляет N символов строки S2 в конец строки S1
Ответ Создать тему
Опции темы

Текущее время: 04:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru