Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> читать сторку без пробелов, как читать до конца строки и склеивать ? 
V
    Опции темы
Su_
Дата 1.10.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Добрый вечер, задача вроде не сложная, но на форуме ответа не нашел ..
если у меня в 

Код

char buffp[100];


текс в виде:

Код

1 Sasha Privet kak dela i t. i t.d./^02784351!$@*#$^@ i vse takoe




как мне сосканировать такцю строку 

типо
Код

    sscanf(buff, "%s %s %s%", &id,&name,&text);


но что бы в text шло не только слово "Privet" а  "Privet kak dela i t. i t.d./^02784351!$@*#$^@ i vse takoe"  до конца строки..


заранее спаибо


--------------------
user posted image

PM MAIL WWW   Вверх
Annihilator
Дата 1.10.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Код

char *fgets(    char *buffp,   int n,   FILE *stream );


Это сообщение отредактировал(а) Annihilator - 1.10.2008, 19:56


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Su_
Дата 1.10.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



fgets работает с файлами а не со строками , разве я не прав? ( через файл этого делать не желательно)


--------------------
user posted image

PM MAIL WWW   Вверх
Annihilator
Дата 1.10.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Я почему-то подумал, что тебе из файла надо считать.
А из stdin ещё проще читать
Код

char *gets(char *buffer );




--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Su_
Дата 1.10.2008, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



а можно пример , а то непонятно как именно мою строку с помощью gets прочитать?


--------------------
user posted image

PM MAIL WWW   Вверх
Annihilator
Дата 2.10.2008, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Код

int main( int argc, char* argv[] )
{
    char buf[100] ={""};
    printf("enter your string\n");
    gets(buf);
    return 0;    
}



--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Mayk
Дата 2.10.2008, 05:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



самое простое - strchr + strncpy тебе помогут.
первый найдет конец строки
второй поможет скопировать её часть.

можно ещё альтернативы придумать если можно строки разрушать. но man strchr и strncpy


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
inside_pointer
Дата 2.10.2008, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



независимее от символа (для strchr) и продолжение по линии sscanf
Код

#include <stdio.h>
#include <string.h>

#define MAXLINE  1000
#define MAXWORD  100

main()
{
    char line[MAXLINE] = "1 Sasha Privet 12345 !@#$";
    char name[MAXWORD], text[MAXLINE];
    int id, nc;
    
    sscanf(line, "%d%s%*[ \n\t]%n", &id, name, &nc);
    strcpy(text, line+nc);
    
    printf("%d\n", id);
    printf("%s\n", name);
    printf("%s\n", text);
    
    return 0;
}

%*[ \n\t] - пропускает перечисленные символы
%n - считает количество пропущенных через строку формата символов
PM MAIL   Вверх
Annihilator
Дата 2.10.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



А чем мой пример
Код

char *gets(char *buffer );

сложен???


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Mayk
Дата 2.10.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Annihilator @  2.10.2008,  14:18 Найти цитируемый пост)
А чем мой пример
Выделить всёкод C++
1:
    
char *gets(char *buffer );

сложен???


Он не решает поставленную задачу. Задача топик стариера - работа с имеющейся строкой, а не с stdin


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
xvr
Дата 2.10.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Su_ @ 1.10.2008,  19:44)
Добрый вечер, задача вроде не сложная, но на форуме ответа не нашел ..
если у меня в 

Код

char buffp[100];


текс в виде:

Код

1 Sasha Privet kak dela i t. i t.d./^02784351!$@*#$^@ i vse takoe




как мне сосканировать такцю строку 

типо
Код

    sscanf(buff, "%s %s %s%", &id,&name,&text);


но что бы в text шло не только слово "Privet" а  "Privet kak dela i t. i t.d./^02784351!$@*#$^@ i vse takoe"  до конца строки..


заранее спаибо

Код

char* id=strtok(buff," \t\n");
char* name=strtok(NULL," \t\n");
char* text=strtok(NULL,"\n");

PM MAIL   Вверх
Su_
Дата 2.10.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



спасибо ,пороповал все методы , и остановился на scanf_у как то он роднее , Спасибо всем! темка закрыта)


--------------------
user posted image

PM MAIL WWW   Вверх
inside_pointer
Дата 3.10.2008, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



Annihilator, функцию gets вообще нельзя юзать, если очень хочется то fgets, потому что делает она то же самое (кроме \n), но имеет ограничитель.
у меня даже компилятор говорит

Код

[guest@localhost tmp]$ cc test.c -o test
/tmp/ccIHvsqf.o: In function `main':
test.c:(.text+0x1e): warning: the `gets' function is dangerous and should not be used.
[guest@localhost tmp]$



PM MAIL   Вверх
Lycifer
Дата 8.10.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 4.11.2007

Репутация: нет
Всего: нет



char* buffer = new char[sizeOfBuffer];
fread((void*) buffer, sizeOfBuffer, sizeOfBuffer,handleFile)//сятина
myCin.read()//плясятина
вычитал вскопировал без пробелов в новый буфер 

фариант два
std::ifstream input("name.file");
input.getline(buffer, sizeOfBuffer,' ');
buffer +=strlen(buffer);
input.getline(buffer, sizeOfBuffer,' ');
я не стал делать еще проверки это просто суть идеи

Это всё пиши есчё)))



PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.