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

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

Восстановить пароль Регистрация
 
Slava_dk
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 14
22.04.2013, 17:55     Работа со строками ( разбить строку на N заданных частей с помощью strncpy) #1
Все доброго времени суток. Суть моей программы такова: меня нужно разбить строку на 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++ как разбить массив на 5 частей по 4 символа (бита)
На сколько частей и как нужно разделить отрезок, чтобы произведение длин частей было максимальным C++
Работа со строками (записать в другую строку первое слово и поставить пробел) C++
Работа со строками (вывести на экран введенную строку) C++
работа со строками. Перевернуть, заданную пользователем строку, в отдельной функции C++
Отрезок разбить на n частей, каждую часть проинтегрировать, либо методом трапеции C++
Отрезок [a,b] разбить на n частей, каждую часть проинтегрировать C++
C++ Разбить массив на 10 частей (массивов)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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;
}
Спасибо огромное...теперь ясно в чём была загвоздка
Yandex
Объявления
22.04.2013, 22:40     Работа со строками ( разбить строку на N заданных частей с помощью strncpy)
Ответ Создать тему
Опции темы

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