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

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

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

Управление строками - C++

03.01.2012, 01:19. Просмотров 504. Ответов 5
Метки нет (Все метки)

Есть ли функции в библиотеке Си (не Си++) позволяющие перезаписывать содержимое строк или менять положение индикатора позиции наподобии того как это можно делать с потоками? Пока кажеться, что в строки символы можно только добавлять...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2012, 01:19     Управление строками
Посмотрите здесь:

C++ Пoмогите со строками!
Работа со строками C++
Робота со строками в с++ 3.1 C++
C++ Непонятности со строками
Работа со строками C++
Робота со строками C++
C++ Управление строками
Задание со строками C++
Работа со строками в c++ C++
C++ Задание со строками
Работа со строками C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
03.01.2012, 10:43     Управление строками #2
Цитата Сообщение от Morningstar Посмотреть сообщение
Есть ли функции в библиотеке Си (не Си++) позволяющие перезаписывать содержимое строк или менять положение индикатора позиции наподобии того как это можно делать с потоками? Пока кажеться, что в строки символы можно только добавлять...
- предлагаю оттестировать код С ниже
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main()
{
    char str[256];
    strcpy(str,"This is the test");
    printf("%s\n",str);
    strcpy(&str[7],&str[11]);//Удалим из строки the путём копирования блоков памяти внутри строки
    printf("%s\n",str);
    strcat(str," - can you see difference");//добавим  - can you see difference
    printf("%s\n",str);
    str[4] = '\0';//Обрежим строку оставив в ней всего 4 символа
    printf("%s\n",str);
    system("pause");
    return 0;
}
Миниатюры
Управление строками  
Morningstar
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 15
05.01.2012, 03:03  [ТС]     Управление строками #3
Тест прошёл. Благодарю за ловкий приём вырезания символа из строки. А можно ли вставить строку посреди другой?
-=ЮрА=-
Заблокирован
Автор FAQ
05.01.2012, 14:19     Управление строками #4
Цитата Сообщение от Morningstar Посмотреть сообщение
ест прошёл. Благодарю за ловкий приём вырезания символа из строки. А можно ли вставить строку посреди другой?
- Конечно!
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main()
{
    char str[256];
    strcpy(str,"This is the test");
    printf("Input string : %s\n",str);
    strcpy(&str[7],&str[11]);//Удалим из строки the путём копирования блоков памяти внутри строки
    printf("Move 4 chars from pos 7 : %s\n",str);
    //Вставим символ "INSERT" на 7-ую позицию
    long i;
    char ins[]= "INSERT";
    long iLen = strlen(ins);
    long sLen = strlen(str);
    strcpy(&str[7 + iLen],&str[7]);//расширии строку на iLen символов
    for(i = 7; i < 7 + iLen; i++)
        str[i] = ins[i - 7];
    str[sLen + iLen + 1] = '\0';
    printf("Insert X in pos 7 : %s\n",str);
    system("pause");
    return 0;
};
Миниатюры
Управление строками  
Morningstar
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 15
08.01.2012, 03:18  [ТС]     Управление строками #5
Благодарю! У меня всё.
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
08.01.2012, 04:57     Управление строками #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
strcpy(&str[7],&str[11]);
Мне говорили что это опасный шаг и что это может привести к ошибке в памяти, хотя сам правда не раз так делал и к ошибкам не приводило, но вот то что мне сказали запомнилось.
Yandex
Объявления
08.01.2012, 04:57     Управление строками
Ответ Создать тему
Опции темы

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