Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 11
1

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

13.04.2010, 16:36. Просмотров 794. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста с выполнением лабораторной работы.
Задание:
1. Разработать и реализовать функцию на языке С.
2. Провести ее тестирование с использованием драйвера.

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

Заранее большое спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2010, 16:36
Ответы с готовыми решениями:

Описать рекурсивную функцию или процедуру, которая добавляет новый элемент Е в конец списка L
Описать рекурсивную функцию или процедуру, которая добавляет новый элемент Е в конец списка L

Составить функцию, которая дописывает не более чем n символов из рядка t в конец строки
Составить функцию strcat(s,t,n), которая дописывает не более чем n символов из рядка t в конец...

В конец каждой строки текстового файла дописать количество символов этой строки
Помогите, нужно : "В конец каждой строки текстового файла дописать количество символов этой...

Переписать в новый файл все его строки, вставив в конец каждой строки количество символов в ней
Дан текстовый файл. Переписать в новый файл все его строки, вставив в конец каждой строки...

5
158 / 157 / 47
Регистрация: 29.04.2009
Сообщений: 637
13.04.2010, 18:23 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];
}
0
4 / 4 / 2
Регистрация: 02.04.2010
Сообщений: 22
13.04.2010, 20:18 3
в смысле ссылку на результат????
может всетаки указатель на преобразованную строку????
0
60 / 22 / 2
Регистрация: 13.03.2010
Сообщений: 65
13.04.2010, 20:50 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;
}
0
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 11
14.04.2010, 18:26  [ТС] 5
Цитата Сообщение от Trigun Посмотреть сообщение
в смысле ссылку на результат????
может всетаки указатель на преобразованную строку????
Видимо все таки указатель, в задании написано ссылку, наверно ошибочно.

Спасибо большое отозвавшимся. Постараюсь разобраться в коде пока не очень знакомого для меня языка С.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,484
14.04.2010, 20:04 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);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2010, 20:04

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

Переписать в новый файл все его строки, вставив в конец каждой строки количество символов в ней
Задание: using System; using System.Collections.Generic; using System.Linq; using...

Описать функцию AddLeftDigit (D, K), что добавляет к целому положительному числу K слева цифру D
Описать функцию AddLeftDigit (D, K), что добавляет к целому положительному числу K слева цифру D (D...

В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки
Помогите составить программу: Следует разработать программу, которая преобразует любой текстовый...

Переписать в новый файл output1.txt все его строки, вставив в конец каждой строки ее номер и количество символов в ней
Дан тектсовый файл input.txt. Необходимо:  переписать в новый файл output1.txt все его строки,...


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

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

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