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

strtok в си++ не хочет работать - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить количество пробелов в строке http://www.cyberforum.ru/cpp-beginners/thread207873.html
Написать програму при помощи библиотеки String.h Дана строка S1.....Sn (n за ранее не известно) нужно: 1)определить количество пробелов среди S1....Sn. 2)Выяснить входит ли в последовательность...
C++ напишите пожалуйста программный код 1. * результаты выполнения программы: o значение точности e, o номера и значения n элементов, а также соответствующие значения b, o номер... http://www.cyberforum.ru/cpp-beginners/thread207855.html
Область видимости C++
func { int someVariable; { int someVariable; //можно ли как нибудь получить доступ к переменной обьявленной ниже ? } }
C++ РАБОТА С ФАЙЛАМИ И МАССИВАМИ СТРОК
В файле хранится строка вида d1± d2± …± dn, где di – числа (0 ≤ di ≤ 9). а) вывести на экран числа в порядке возрастания, б) вывести на экран записанную в тексте алгебраи-ческую сумму в) (задание...
C++ строки http://www.cyberforum.ru/cpp-beginners/thread207841.html
Исправление ошибки.Пусть имеется словарь состоящий не менее чем из 20 слов .С клавиатуры вводятся слова,в которых может быть допущена одна из следующих ошибок - Искажена одна буква - Вставлена...
C++ strtok Почему так работает #include <stdafx.h> #include <conio.h> using namespace std; int main(){ char string = "a string, of , ,tokens"; char* token; char delimiters=",";... подробнее

Показать сообщение отдельно
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143

strtok в си++ не хочет работать - C++

10.12.2010, 15:59. Просмотров 1138. Ответов 6
Метки (Все метки)

надо разбить строку на лексеммы, но почему-то не идет дело, не подскажете почему? У меня MasString[] содержит строки:
Best scores:
1) ser4ega 120
2) ser4egaDrunk 110
3) stas 100

Мне нужно выкусить из них место, ник и счет игрока. Но в результате в bsc[j].score и bsc[j].nick оказывается то же, что и в bsc[j].mesto. А в bsc[j].mesto валяется "1)" или "2)" или "3)"

C++
1
2
3
4
5
6
7
8
9
 struct BestScores{char mesto[2]; char nick[16];char score[3];} bsc[3];
              char delim[]=" ";
              for (int j=0;j<3;j++) 
              {cout<<endl<<MasString[j+1]<<endl;
              strcpy(bsc[j].mesto,(strtok(MasString[j+1],delim)));
              strcpy(bsc[j].nick,(strtok(MasString[j+1],delim)));
              strcpy(bsc[j].score,(strtok(MasString[j+1],delim)));
              cout<<MasString[j+1]<<endl;
              }

вся функция выглядит так
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
void showscore(int l,char *nickname)
{
  ifstream inFile;
  inFile.open("file.txt");
  if(!inFile)
  {cerr << "\nCouldn't open file"; return;}
  char next;
  typedef char stri[600];
  stri MasString[4];
  int i=0;
  cin.get();//убирает код из потока cin
  while(true){
              inFile.getline(MasString[i],600); 
              next=inFile.peek();
              cout<<MasString[i]<<endl;
              if (next=='\n') cout<<endl;
              if (next==EOF) break;
              i++;
              
                           
              }
              struct BestScores{char mesto[2]; char nick[16];char score[3];} bsc[3];
              char delim[]=" ";
              for (int j=0;j<3;j++) 
              {cout<<endl<<MasString[j+1]<<endl;
              strcpy(bsc[j].mesto,(strtok(MasString[j+1],delim)));
              strcpy(bsc[j].nick,(strtok(MasString[j+1],delim)));
              strcpy(bsc[j].score,(strtok(MasString[j+1],delim)));
              cout<<MasString[j+1]<<endl;
              }
              
                   
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru