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

функция strcpy и strcat - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 5.00
larry
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 59
30.07.2009, 13:20     функция strcpy и strcat #1
Добрый день!У меня такая проблема...Есть массив строк, где хранятся имена и при выводе имени на экран,если оно длиннее определенного,то я его обрезаю,а в конец добавляю три точки...Но почему-то оно выводит обрезанное имя,а потом разный мусор и только в конце ставит три точки...Вот кусок кода:
C++
1
2
3
4
5
6
7
8
if(strlen(name[pos]) > 27)
{
    str = new char[27];
    strncpy(str, name[pos]->name, 24);
    strcat(str, "...");
}
else
    strcpy(str,name[pos]);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2009, 06:28     функция strcpy и strcat
Еще ссылки по теме:

C++ В чем разница между функциями strcat() и strcpy()?
Библиотека string.h, функция strcat C++
C++ функция strcat
Своя функция strcat. Копирует мусор C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
31.07.2009, 06:28     функция strcpy и strcat #21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    const char *patt = "...";
    const int MAXLEN = 28;
 
    str = new char[MAXLEN];
 
    if(strlen(name[pos]) < MAXLEN)
        strcpy(str, name[pos]);
    else {
        int newlen;
 
        if ((newlen = MAXLEN-strlen(patt)-1) > 0) {
            strncpy(str, name[pos], newlen); /* она не ставит нуль-символ, если не доходит до него */
            *(str+newlen) = '\0';
            strcat(str, "..."); /* эта сначала ищет нуль-символ, а потом присоединяет в него */
        }
    }
sizeof возвращает количество байт

Добавлено через 7 минут 52 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    const char *patt = "...";
    const int MAXLEN = 27;
 
    str = new char[MAXLEN+1];
 
    if(strlen(name[pos]) <= MAXLEN)
        strcpy(str, name[pos]);
    else {
        int newlen;
 
        if ((newlen = MAXLEN-strlen(patt)) > 0) {
            strncpy(str, name[pos], newlen); /* она не ставит нуль-символ, если не доходит до него */
            *(str+newlen) = '\0';
            strcat(str, "..."); /* эта сначала ищет нуль-символ, а потом присоединяет в него */
        }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
31.07.2009, 06:28     функция strcpy и strcat
Ответ Создать тему
Опции темы

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