crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как запретить sscanf-у использовать разделителем пробел?
legat
  опции профиля:
сообщение 26.5.2011, 12:04
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 8.8.2010
Пользователь №: 1940

Спасибо сказали: 0 раз(а)




Репутация:   0  


Имеется следующий код:
char *str = "123/file Name.txt";
...
int number;
std::string fileName;
sscanf( str, "%d/%s", &number, (char*) fileName.c_str( ) );

В результате в строку fileName будет занесено только file, а нужно file Name.txt Можно ли вообще у sscanf переназначить разделители. Например, на '/'?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.5.2011, 12:08
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


1) можно попробовать взять путь в кавычки(заэкранировав их)
2) можно попробовать заэкранировать пробел слешем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 26.5.2011, 19:27
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


char *str="abc\tdef ghi";
char str1[255];
sscanf(str,"%[^\r\n]",str1);
cout << str1<< endl;

смотри стандарт формата scanf (гугли по названию "scanf list of permitted or prohibited characters")

Сообщение отредактировал Iron Bug - 26.5.2011, 19:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 5:43