Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите чайнику разбить строку

2.0K
11 мая 2003 года
spike
19 / / 22.04.2003
надо:
считать из файла строку
0|010|2546889|060|0904|063228|000012|000010|00|00|0|0|040E|0000|3|
и запихать в переменные
можно в массив

потом я эти данные буду перегонять с помощью sql запросов в базу

ps: в файле будет кучу таких строк. поэтому надо цикл замутить, да и ещё надо проверить, чтобы в строке все поля были, иначе её надо в другой массив, чтобы вывести оператору для разбора полётов
2.1K
11 мая 2003 года
domovoi
27 / / 27.03.2003
FILE *f;
f=fopen("имя файла","r");
if (f!=NULL)
{
char stroka[255]
while (!feof(f))
{
fgets(stroka,255,f);
//код обработки полученной строки
}
fclose(f);
}
если хочешь работать с AnsiString, то какой-нить переменной присваиваешь AnsiString(stroka). И обрабатывай сколько хочешь
2.0K
12 мая 2003 года
SnakePAN
32 / / 21.10.2002
если надо разбить строку, можно использовать функции strtok или strtok_r - лучше последнюю
2.0K
12 мая 2003 года
spike
19 / / 22.04.2003
Цитата:
Originally posted by SnakePAN
если надо разбить строку, можно использовать функции strtok или strtok_r - лучше последнюю


а где эти функции можно почитать у меня в help их нет

3.5K
12 мая 2003 года
vickr
19 / / 24.04.2003
Цитата:
Originally posted by spike

а где эти функции можно почитать у меня в help их нет



Вообще-то в хелпе по Билдеру они есть (по крайней мере strtok) - на странице Index набираешь strtok и вперед.
Ну да ладно, может у тебя правда какие проблемы с хелпом, держи инфу:

описание
char *strtok(char *s1, const char *s2);

В первом параметре посылаешь анализируемую строку,
во втором - символ-разделитель, который разбивает твою строку на подстроки ("токены"). У тебя этот разделитель, кажется, такой - '|'.
Первый вызов ф-и возвращает указатель на первый символ первого токена из исходной строки и завершает его (токен) символом '\0'.
Дальше последовательно вызываешь strtok(NULL, '|')
для разбора каждого токена в порядке их следования. Когда ф-я достигла последнего токена и ты вызовешь ее еще раз, она вернет NULL. Это удобно использовать в качестве условия выхода из цикла. Обрати внимание - ф-я изменяет исходную строку (насколько я помню), поэтому лучше работать с копией, если, конечно, тебе эта исходная строка еще понадобится.
Вот тебе пример из хелпа:
#include <string.h>
#include <stdio.h>

int main(void)
{
char input[16] = "abc,d";
char *p;

/* strtok places a NULL terminator
in front of the token, if found */
p = strtok(input, ",");
if (p) printf("%s\n", p);

/* A second call to strtok using a NULL
as the first parameter returns a pointer
to the character following the token */
p = strtok(NULL, ",");
if (p) printf("%s\n", p);
return 0;
}
Трудись!
:D

2.0K
12 мая 2003 года
spike
19 / / 22.04.2003
Цитата:
Originally posted by vickr Вообще-то в хелпе по Билдеру они есть (по крайней мере strtok) - на странице Index набираешь strtok и вперед.
Ну да ладно, может у тебя правда какие проблемы с хелпом, держи инфу:


нашёл и у себя, спасибо. странно чего тогда не находило, но хелп у меня стал криво чего-то, ну да ладно

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог