Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 11.12.2012
Сообщений: 14
1

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

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

Author24 — интернет-сервис помощи студентам
Все доброго времени суток. Суть моей программы такова: меня нужно разбить строку на 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;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2013, 17:55
Ответы с готовыми решениями:

Разбить строку на несколько частей?
Здравствуйте. У меня проблема. Я только начинаюший в Builder-e и вообще любитель чё-нибудь...

Разбить строку на несколько частей
Как разбить слово/цифр на несколько частей на экран? Вот собрал код:@echo off for /f %%f in ('dir...

Как разбить строку на n частей?
Нужно разбить строку на n частей. Т.е. например слово &quot;Сообщение&quot; нужно разделить на 3 части. И...

Разбить строку на несколько частей и работать с этими частями
Знаю про функцию strtok, но не понимаю, как потом работать с выделенной из исходной строки частью...

2
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.04.2013, 19:08 2
Лучший ответ Сообщение было отмечено Slava_dk как решение

Решение

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;
}
1
0 / 0 / 1
Регистрация: 11.12.2012
Сообщений: 14
22.04.2013, 22:40  [ТС] 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;
}
Спасибо огромное...теперь ясно в чём была загвоздка
0
22.04.2013, 22:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2013, 22:40
Помогаю со студенческими работами здесь

Как разбить строку с помощью Split?
Здравствуйте, есть такой массив в тхт файле 4248 4 1 2 3 14 6624 4 1 2 3 17 5193 7 1 2 8 11 14...

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

Вводить сразу целую строку и с помощью strtok разбить на слова
Всем привет,как можно вводить сразу целую строку и с помощью strtok разбить на слова,как нибудь...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru