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

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

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

Работа со строками ( разбить строку на N заданных частей с помощью strncpy) - C++

22.04.2013, 17:55. Просмотров 328. Ответов 2
Метки нет (Все метки)

Все доброго времени суток. Суть моей программы такова: меня нужно разбить строку на N заданных частей с помощью strncpy. Немного написал алгоритм, но не понимаю, почему он зацикливаеться. Кто знает в чём проблема, прошук помочь, заранее спасибо.
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
30
31
32
33
34
35
36
#include "StdAfx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<iostream>
using namespace std;
 
 
int main()
{
    
    char dst[32], src[100];
    int start = 0, temp=0, count = 0, n=0, dlina=0,del=0,i=0;
    cout<<"vvedi stroku";
    cin>>src;
    cout<<"Na skolko chastei budet delitsya stroka";
    cin>>n;
    dlina=strlen(src);
    cout<<"dlina = "<<dlina<<endl;
    cout<<"Delim stroku...";
    del=dlina/n;
    cout<<"Kolvo razdelenyh strok"<<del;
    count=n;
    while(src!='\0')
        {
    strncpy(dst, src+start,count);
           dst[count]=NULL;
    puts(dst);
    start=temp+n;
    temp=n;
        }
 
 
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 17:55     Работа со строками ( разбить строку на N заданных частей с помощью strncpy)
Посмотрите здесь:

Сформировать третью строку - сумму двух заданных строками чисел - C++
Нужна ваша помощь. 1) Даны две символьные строки, состоящие только из цифр (длина каждой - более 10 символов). Считая, что в этих...

Работа со строками (вывести на экран введенную строку) - C++
Помогите пожалуйста, нужно просто вывести на экран, введенную строку, что не так: string stroka; printf(&quot;Vvedi stroku: &quot;); ...

Разбить массив на 10 частей (массивов) - C++
1. Сформировать масив_1, содержащий 10000 эл-тов. массив заполняется случайными числами от 0 до 10000. 2. Отсортировать массив. 3....

Отрезок [a,b] разбить на n частей, каждую часть проинтегрировать - C++
Написать программу на С++ отрезок разбить на n частей каждую часть про интегрировать! Помогите пожалуйста!!!!!!!!!!!

как разбить массив на 5 частей по 4 символа (бита) - C++
Здравствуйте! Подскажите, пожалуйста, как разбить массив на 5 частей по 4 символа (бита). Получается, вывести только первых четыре...

Работа со строками (записать в другую строку первое слово и поставить пробел) - C++
Помогите разобраться, мы вводим с клавиатуры строку,строка из нескольких слов отделяемых &quot;;&quot; как записать в другую строку первое слово и...

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

Разбить строку - C++
Просьба написать программу на С++ , которая разбивает строку длинной в 200 символов на строки по 20.

Разбить строку - C++
Есть строка: Нужно написать функцию, чтобы в результате получилось на выходе например в vector&lt;string&gt; Вот что смог...

Разбить строку - C++
У меня есть строка string^ str в неё записано 6 символов. Как мне разбить эту строку на еще три строки в каждой из которых будут по два...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
22.04.2013, 19:08     Работа со строками ( разбить строку на N заданных частей с помощью strncpy) #2
Slava_dk, так у Вас переменная цикла не модифицируется в теле цикла. А учитывая, что src имя массива, модифицировать Вы её вообще не сможете. Введите доп.переменную, которая будет указывать на текущий обрабатываемый символ.

Добавлено через 15 минут
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
30
31
32
33
34
35
36
#include "StdAfx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<iostream>
using namespace std;
 
int main()
{
    char dst[32], src[100];
    int start = 0, temp=0, n=0, dlina=0,del=0,i=0;
    cout<<"vvedi stroku";
    cin.getline( src, 100 );
 
    cout<<"Na skolko chastei budet delitsya stroka";
    cin>>n;
    dlina=strlen(src);
    cout<<"dlina = "<<dlina<<endl;
    cout<<"Delim stroku...";
    del=dlina/n;
    //cout<<"Kolvo razdelenyh strok"<<del;
    // count=n;
 
    char *ptr = src;
 
    while(*ptr!='\0')
    {
        strncpy(dst, ptr, del);
        dst[del]='\0';
        puts(dst);
        ptr += strlen(dst);
    }
 
    _getch();
    return 0;
}
Slava_dk
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 14
22.04.2013, 22:40  [ТС]     Работа со строками ( разбить строку на N заданных частей с помощью strncpy) #3
Цитата Сообщение от Tulosba Посмотреть сообщение
Slava_dk, так у Вас переменная цикла не модифицируется в теле цикла. А учитывая, что src имя массива, модифицировать Вы её вообще не сможете. Введите доп.переменную, которая будет указывать на текущий обрабатываемый символ.

Добавлено через 15 минут
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
30
31
32
33
34
35
36
#include "StdAfx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<iostream>
using namespace std;
 
int main()
{
    char dst[32], src[100];
    int start = 0, temp=0, n=0, dlina=0,del=0,i=0;
    cout<<"vvedi stroku";
    cin.getline( src, 100 );
 
    cout<<"Na skolko chastei budet delitsya stroka";
    cin>>n;
    dlina=strlen(src);
    cout<<"dlina = "<<dlina<<endl;
    cout<<"Delim stroku...";
    del=dlina/n;
    //cout<<"Kolvo razdelenyh strok"<<del;
    // count=n;
 
    char *ptr = src;
 
    while(*ptr!='\0')
    {
        strncpy(dst, ptr, del);
        dst[del]='\0';
        puts(dst);
        ptr += strlen(dst);
    }
 
    _getch();
    return 0;
}
Спасибо огромное...теперь ясно в чём была загвоздка
Ответ Создать тему
Опции темы

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