помогите чайнику разбить строку
считать из файла строку
0|010|2546889|060|0904|063228|000012|000010|00|00|0|0|040E|0000|3|
и запихать в переменные
можно в массив
потом я эти данные буду перегонять с помощью sql запросов в базу
ps: в файле будет кучу таких строк. поэтому надо цикл замутить, да и ещё надо проверить, чтобы в строке все поля были, иначе её надо в другой массив, чтобы вывести оператору для разбора полётов
f=fopen("имя файла","r");
if (f!=NULL)
{
char stroka[255]
while (!feof(f))
{
fgets(stroka,255,f);
//код обработки полученной строки
}
fclose(f);
}
если хочешь работать с AnsiString, то какой-нить переменной присваиваешь AnsiString(stroka). И обрабатывай сколько хочешь
если надо разбить строку, можно использовать функции strtok или strtok_r - лучше последнюю
а где эти функции можно почитать у меня в help их нет
а где эти функции можно почитать у меня в 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
Ну да ладно, может у тебя правда какие проблемы с хелпом, держи инфу:
нашёл и у себя, спасибо. странно чего тогда не находило, но хелп у меня стал криво чего-то, ну да ладно