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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
#1

strncpy - C++

06.05.2011, 17:04. Просмотров 1493. Ответов 23
Метки нет (Все метки)

Дана строка: djh,dfkh,sdj.
Как последовательно по отдельности записать в strncpy текстовые части:
djh
dfkh
sdj
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2011, 17:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос strncpy (C++):

про strncpy () - C++
привет=))) вот чето с этой функцией не пойму пример есть #include <iostream> using namespacr std; int main () { const int...

Поведение функции strncpy - C++
Доброго времени суток, уважаемые форумчане. Была необходимость решить задачу такого содержания: Пользователь вводит строку с помощью char...

Странности в поведении strncpy - C++
Я написал программу на ноутбуке используя Code::Blocks и minigw как компилятор под 7кой и перенёс исходники на стацонарник где у меня тоже...

Ошибка в функции (strncpy) - C++
Надо прочитать файл содержащий что-то подобное: 1. Nomer reisa: 1 ves bagazha: 1.50 (kg) kolichestvo veshei: 5 2. Nomer reisa: 1 ves...

Как работает strncpy()? - C++
#include<iostream> #include<cstring> using namespace std; char*input(char*word,int&size){ cin.getline(word,size); ...

ошибка 4996 strncpy - C++
#include<iostream> #include<Windows.h> #include<fstream> #include<cstring> #include<cstdlib> #include <conio.h> #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
06.05.2011, 17:10 #2
уточните, что вам нужно сделать ибо вы написали примерно следующее: есть бумага с текстом "абра, швабра, кадабра" как с помощью копира (ксерокса) разбить текст на слова.
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
06.05.2011, 17:28  [ТС] #3
Одно большое слово такое без пробелов: slovo="абра,швабра,катабра"
C
1
2
3
for(int k = 0; k <= strlen(a); k++){ 
 if (!isalpha(a[k]))  strncpy(stro, a, k);
}
Берется только первое слово: aбра
Дальше как скопировать второе, третье слово
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
06.05.2011, 17:35 #4
эм... вы передаёте в ctrncpy первым параметром указатель на область памяти куда хотите копировать, потом указатель на то, что вы хотите копировать, а дальше размер (если я не ошибаюсь), посему, вам нужно сделать результирующий массив, или динамический или сравнительно большой статический и в него запихивать ваши строки, что то типа result[100][20] - 100 строк, каждая строка по 20 символов. а дальше уже делаете strncpy(result[i], a + k, wordSize); в общем как-то так
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
06.05.2011, 17:44  [ТС] #5
Я не думаю, что для этого нужен двумерный массив.
И массив мне с этими словами совсем не нужен.
Эти слова нужны просто нужны для отдельного чтения
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
06.05.2011, 17:53 #6
замечательно, тогда вернёмся к тому, с чего начали, что конкретно Вам нужно? (желательно прочитайте, то что вы пишите перед отправлением, т.к. вопросы совершенно не понятные)
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
06.05.2011, 18:09  [ТС] #7
Читаю слова из файла от пробела до пробела
Очередное слово в переменной a="sdf,sdfa,dfgsa"
Мне нужно выделить в переменную slovo последовательно слова:
slovo="sdf"
затем я с ним выполняю какие-то действия
потом получить slovo="sdfa"
затем я с ним выполняю какие-то действия
потом получить slovo="dfgsa"
затем я с ним выполняю какие-то действия
и т.д.
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
06.05.2011, 18:30 #8
strtok
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
06.05.2011, 18:33  [ТС] #9
Мне это не подходит, т.к. знаки пунктуации мне тоже нужны для работы. Это отдельная тема.
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
06.05.2011, 19:02 #10
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
37
38
39
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define DELIM ":;,.?! "
 
char* mystrndup(const char* src, int num)
{
    char* dest = (char*)malloc(sizeof(char) * num + 1);
    memcpy((char*)dest, (const char*)src, num);
    dest[num] = '\0';
    return dest;
}
 
int main(void)
{
    char s[] = "djh,dfkh,sdj";
    char* pch = s;
    char* token;
    int n;
 
    while(*pch)
    {
        if(!strchr(DELIM, *pch))
        {
            n = 0;
            do ++n; while(!strchr(DELIM, *(pch+n)));
            token = mystrndup(pch, n); // token = strndup(pch, n);
 
            // делаем что-то с token...
            
            free(token);
            pch+= n;
        }
        else ++pch;
    }
 
    return 0;
}
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
06.05.2011, 19:09  [ТС] #11
Так этот tok выдал ту же строчку только без знаков
Мне надо отдельно, т.е.
tok=djh
затем
tok=dfkh
и т. д.
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
06.05.2011, 19:15 #12
Цитата Сообщение от Елочка Посмотреть сообщение
Мне надо отдельно, т.е.
tok=djh
затем
tok=dfkh
и т. д.
Так, а я что написал? ) Результат: http://codepad.org/ywZmUexE
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
06.05.2011, 19:23  [ТС] #13
Ссылка недоступна.
У меня вышел результат: djhdfkhsdj
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
06.05.2011, 19:39 #14
Покажи код(каким образом у тебя получается такой результат).
Елочка
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 108
06.05.2011, 19:44  [ТС] #15
Что прислали то и запущено

C
1
2
3
4
5
6
7
8
9
10
11
if(!strchr(DELIM, *pch))
        {
            n = 0;
            do ++n; while(!strchr(DELIM, *(pch+n)));
            tok = mystrndup(pch, n);  // tok = strndup(pch, n);
 
             cout<<tok;  // просмотр полученного  
            
            free(tok);
            pch+= n;
        }
 Комментарий модератора 
Используйте теги форматирования кода!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2011, 19:44
Привет! Вот еще темы с ответами:

Задание по копированию строк, strncpy - C++
помогите пожалуйста,никак не могу разобраться c функцией srncpy, нужно при условии int strncpy(char*s1,char*s2,int N) ,т.е копировать...

Ошибка предположительно в strncpy(word, p1, len) - C++
Есть простенький обучающий пример: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctype.h&gt; #include &lt;string.h&gt; using...

Аналог strncpy и strncmp для типа string - C++
Подскажите, как проводить операции сравнения и копировании с двумя строками типа string, при чём только над определённым количеством...

Напишите варианты библиотечных функций strncpy, strncat и strncmp - C++
вот такая задача, Напишите варианты библиотечных функций strncpy, strncat и strncmp, которые оперируют с первыми символами своих...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.05.2011, 19:44
Ответ Создать тему
Опции темы

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