Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121

strncpy

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

Студворк — интернет-сервис помощи студентам
Дана строка: djh,dfkh,sdj.
Как последовательно по отдельности записать в strncpy текстовые части:
djh
dfkh
sdj
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2011, 17:04
Ответы с готовыми решениями:

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

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

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

23
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
06.05.2011, 17:10
уточните, что вам нужно сделать ибо вы написали примерно следующее: есть бумага с текстом "абра, швабра, кадабра" как с помощью копира (ксерокса) разбить текст на слова.
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 17:28  [ТС]
Одно большое слово такое без пробелов: slovo="абра,швабра,катабра"
C
1
2
3
for(int k = 0; k <= strlen(a); k++){ 
 if (!isalpha(a[k]))  strncpy(stro, a, k);
}
Берется только первое слово: aбра
Дальше как скопировать второе, третье слово
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
06.05.2011, 17:35
эм... вы передаёте в ctrncpy первым параметром указатель на область памяти куда хотите копировать, потом указатель на то, что вы хотите копировать, а дальше размер (если я не ошибаюсь), посему, вам нужно сделать результирующий массив, или динамический или сравнительно большой статический и в него запихивать ваши строки, что то типа result[100][20] - 100 строк, каждая строка по 20 символов. а дальше уже делаете strncpy(result[i], a + k, wordSize); в общем как-то так
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 17:44  [ТС]
Я не думаю, что для этого нужен двумерный массив.
И массив мне с этими словами совсем не нужен.
Эти слова нужны просто нужны для отдельного чтения
0
Эксперт С++
 Аватар для Maxim Prishchepa
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
06.05.2011, 17:53
замечательно, тогда вернёмся к тому, с чего начали, что конкретно Вам нужно? (желательно прочитайте, то что вы пишите перед отправлением, т.к. вопросы совершенно не понятные)
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 18:09  [ТС]
Читаю слова из файла от пробела до пробела
Очередное слово в переменной a="sdf,sdfa,dfgsa"
Мне нужно выделить в переменную slovo последовательно слова:
slovo="sdf"
затем я с ним выполняю какие-то действия
потом получить slovo="sdfa"
затем я с ним выполняю какие-то действия
потом получить slovo="dfgsa"
затем я с ним выполняю какие-то действия
и т.д.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.05.2011, 18:30
strtok
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 18:33  [ТС]
Мне это не подходит, т.к. знаки пунктуации мне тоже нужны для работы. Это отдельная тема.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.05.2011, 19:02
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;
}
1
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 19:09  [ТС]
Так этот tok выдал ту же строчку только без знаков
Мне надо отдельно, т.е.
tok=djh
затем
tok=dfkh
и т. д.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.05.2011, 19:15
Цитата Сообщение от Елочка Посмотреть сообщение
Мне надо отдельно, т.е.
tok=djh
затем
tok=dfkh
и т. д.
Так, а я что написал? ) Результат: http://codepad.org/ywZmUexE
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 19:23  [ТС]
Ссылка недоступна.
У меня вышел результат: djhdfkhsdj
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.05.2011, 19:39
Покажи код(каким образом у тебя получается такой результат).
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 19:44  [ТС]
Что прислали то и запущено

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;
        }
 Комментарий модератора 
Используйте теги форматирования кода!
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.05.2011, 19:46
Вот так:
C++
1
cout << tok << '\n';
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
06.05.2011, 19:48  [ТС]
Так мне переменная нужна
Мне же с ней работать
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.05.2011, 20:04
Цитата Сообщение от Елочка Посмотреть сообщение
Так мне переменная нужна
Мне же с ней работать
Так и работай с ней, кто ж мешает-то? )

Добавлено через 4 минуты
Может тебе так будет более понятно...
C++
1
2
3
4
5
//...
tok = mystrndup(pch, n);  
puts(tok);  // выводим tok на экран           
free(tok);
//...
1
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
07.05.2011, 10:45
Нужно так:
C++
1
2
3
4
5
6
7
int i = 0;
for(int k = 0; k <= strlen(a); k++){ 
     if (!isalpha(a[k])) {
          stro[i++] = a[k];
здесь работа со словом wegy
    }
}
0
2 / 2 / 0
Регистрация: 26.03.2011
Сообщений: 121
07.05.2011, 10:58  [ТС]
В этом случае в stro находятся знаки
Мне нужны там тексты
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2011, 10:58
Помогаю со студенческими работами здесь

ошибка 4996 strncpy
#include&lt;iostream&gt; #include&lt;Windows.h&gt; #include&lt;fstream&gt; #include&lt;cstring&gt; #include&lt;cstdlib&gt; #include &lt;conio.h&gt; #include...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru