Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 21:45   #1
nicklifs
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 32
По умолчанию [c] strtok не могу разобраться

Нужно строку разбить на слова и закинуть в структуру.
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
...
typedef struct {
        char nomer[8];
        char name[20],surname[20],ot[20];
        char data[11];
        char tarif[16];
     }PNODE ;
     PNODE aa;
...
gets(str);
 			
char *ptr = strtok(str," "); strcpy(aa.nomer,ptr);printf("ptr=%s\n",ptr);
			if(ptr != NULL) {ptr = strtok(NULL,"  "); strcpy(aa.surname,ptr);}printf("ptr=%s\n",ptr);
			if(ptr != NULL) {ptr = strtok(NULL,"  "); strcpy(aa.name,ptr);}printf("ptr=%s\n",ptr);
			if(ptr != NULL) {ptr = strtok(NULL,"  "); strcpy(aa.ot,ptr);}printf("ptr=%s\n",ptr);
			if(ptr != NULL) {ptr = strtok(NULL,"  "); strcpy(aa.data,ptr);}printf("ptr=%s\n",ptr);
			if(ptr != NULL) {ptr = strtok(NULL,"  "); strcpy(aa.tarif,ptr);}printf("ptr=%s\n",ptr);
Если ввожу 6 или более слов в строке, то работает правильно, без ошибок. А если меньше, то программа закрывается. Что не так?

Последний раз редактировалось Stilet; 25.02.2012 в 22:10.
nicklifs вне форума Ответить с цитированием
Старый 25.02.2012, 22:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А если меньше, то программа закрывается. Что не так?
Ты не проверяешь перед копированием что вернула strtok
ИМХО:
Код:
if(ptr= strtok(NULL,"  ") != NULL) { strcpy(aa.surname,ptr);printf("ptr=%s\n",ptr);}
Ну и для остальных так же
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.02.2012, 22:58   #3
nicklifs
Пользователь
 
Регистрация: 10.12.2011
Сообщений: 32
По умолчанию

Stilet, спасибо! Работает.
nicklifs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться navolo4ka Qt и кроссплатформенное программирование С/С++ 3 03.02.2012 14:01
НЕ могу разобраться Smagulov85 БД в Delphi 9 29.09.2010 16:13
не могу разобраться Var17 Общие вопросы Delphi 6 27.03.2010 01:21
НЕ МОГУ РАЗОБРАТЬСЯ... GSV84 HTML и CSS 0 03.02.2010 01:38
не могу разобраться Инспектор ГУЛ Свободное общение 7 20.09.2009 09:29