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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vitekiss
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 54
#1

Функция strncat - C++

20.01.2013, 14:35. Просмотров 791. Ответов 12
Метки нет (Все метки)

Написать вариант функции strncat(s,t,n), которая копирует не более n букв стринга t в конец стринга s и программу для проверки работоспособности этой функции.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 14:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция strncat (C++):

Strncat - C++
Пытаюсь с помощью этой функции соединить две строки, ничего не получается помогите плз я уже просто не понимаю: Вот код там все...

реализовать strncat(s1,s2,n) - C++
Здраствуйте. Нужна ваша помощь! Нужна прога, берущая из файла2 n первых символов и приписывающая их в концевик файла1. Реализовать...

аналог функции STRNCAT() - C++
Написать и протестировать аналог функции STRNCAT().

аналог функции STRNCAT(). - C++
Написать и протестировать аналог функции STRNCAT(),просто на Си. #include<stdio.h> #include<string.h>

аналог функции STRNCAT(). - C++
Написать и протестировать аналог функции STRNCAT(). #include <stdio.h> #include <conio.h>

Компилятор ругается на функцию strncat - C++
#include <iostream> #include <string> using namespace std; long p,x,i,j,k,d,l; char t,s; void prefix() {

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 15:15 #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
#include <iostream>
 
char *strncat(const char *source, char *destination, size_t n) {
  char *lastSymbol = destination;
  // ïîèñê ГЄГ®Г*Г¶Г* ñòðîêè destination
  for (; *lastSymbol != '\0'; ++lastSymbol);
  // êîïèðîâГ*Г*ГЁГҐ ñòðîêè
  while (*source != '\0' && n > 0) {
    *lastSymbol++ = *source++;
    --n;
  }
  *lastSymbol = '\0';
  return destination;
}
 
int main(int argc, char **argv) {
 
  char string[] = "Something ";
  char otherString[] = "awful mind";
 
  std::cout << strncat(otherString, string, 5) << std::endl;
 
  std::cin.get();
  return 0;
}
Vitekiss
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 54
20.01.2013, 15:30  [ТС] #3
Выводит ошибку в этой строке
std::cout << strncat(otherString, string, 5) << std::endl;

Добавлено через 3 минуты
std::cout << strncat(otherString, string, 5) << std::endl;

Здесь выводит ошибку: call ofoverloaded ' stncat(char[11], char[11],int)'is ambiguous
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 15:57 #4
Это потому, что у вас подключена библиотека, в которой уже есть такая функция. Видимо, у вас допотопный компилятор от borland или вы подключили библиотеку string.

Выход -- переименовать функцию или отключить библиотеку, если подключена.
Vitekiss
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 54
20.01.2013, 16:23  [ТС] #5
Цитата Сообщение от lemegeton Посмотреть сообщение
Это потому, что у вас подключена библиотека, в которой уже есть такая функция. Видимо, у вас допотопный компилятор от borland или вы подключили библиотеку string.

Выход -- переименовать функцию или отключить библиотеку, если подключена.
у меня DEV-C++, библиотека не подключена.
А как переименовать функцию?
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 16:26 #6
Цитата Сообщение от Vitekiss Посмотреть сообщение
у меня DEV-C++, библиотека не подключена.
Покажите весь свой код.

Цитата Сообщение от Vitekiss Посмотреть сообщение
А как переименовать функцию?
Поменять у нее имя.
Vitekiss
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 54
20.01.2013, 16:33  [ТС] #7
Цитата Сообщение от lemegeton Посмотреть сообщение
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
#include <iostream>
 
char *strncat(const char *source, char *destination, size_t n) {
  char *lastSymbol = destination;
  // ïîèñê ГЄГ®Г*Г¶Г* ñòðîêè destination
  for (; *lastSymbol != '\0'; ++lastSymbol);
  // êîïèðîâГ*Г*ГЁГҐ ñòðîêè
  while (*source != '\0' && n > 0) {
    *lastSymbol++ = *source++;
    --n;
  }
  *lastSymbol = '\0';
  return destination;
}
 
int main(int argc, char **argv) {
 
  char string[] = "Something ";
  char otherString[] = "awful mind";
 
  std::cout << strncat(otherString, string, 5) << std::endl;
 
  std::cin.get();
  return 0;
}
вы же сами код мне и писали...
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
20.01.2013, 16:39 #8
замени в коде strncpy например на mystrncpy . Просто функция strncpy уже есть , поэтому компилятор там че то тебе про перегрузку написал .
Vitekiss
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 54
20.01.2013, 16:50  [ТС] #9
заменил......работает, но не правильно!!!
Оно ничего не копирует и не проверяет...
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.01.2013, 16:59 #10
Цитата Сообщение от Vitekiss Посмотреть сообщение
работает, но не правильно!!!
Мб потому что тут выход за пределы массива?
C++
1
lastSymbol++ = *source++;
Vitekiss
1 / 1 / 0
Регистрация: 20.01.2013
Сообщений: 54
20.01.2013, 17:50  [ТС] #11
подскажите какой правильный код для моего задания:
Написать вариант функции strncat(s,t,n), которая копирует не более n букв стринга t в конец стринга s и программу для проверки работоспособности этой функции.

Добавлено через 47 минут
а как тогда делать???
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
20.01.2013, 18:08 #12
а что неправильно то?
эта функция добавляет n символов из 2 строки к первой строке
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.01.2013, 18:56 #13
Функция работает правильно.

Надо добавить памяти строке назначения.
C++
1
  char string[] = "Something \0    ";
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2013, 18:56
Привет! Вот еще темы с ответами:

Применение strncat в VS 2008 выдает ошибку.. - C++
#include &lt;iostream&gt; #include &lt;string&gt; int main() { char *text = &quot;Oshybka odnogo - urok drugomu&quot;, *from = &quot;urok&quot;, *to =...

Напишите варианты библиотечных функций strncpy, strncat и strncmp - C++
вот такая задача, Напишите варианты библиотечных функций strncpy, strncat и strncmp, которые оперируют с первыми символами своих...

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений - C++
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

Функция sqrt: существует более одного экземпляра. Функция перегруженная - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main(){ float s, p; int c, a; s=0; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.01.2013, 18:56
Ответ Создать тему
Опции темы

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