Здравствуйте всем.
есть текстовый файл, нужно запихнуть в БД.
пытался использовать fscanf, не хватает знаний.
Тестовый файл
5606;30.11.2003;4265000;0679955837 ;"Київстар Дж.Ес.Ем." ;03.11.2003 16:36:19; 17; 17; 101; 0.28
5606;30.11.2003;4265001;1078616923202 ;Краснодар (РОСIЯ) ;01.11.2003 19:25:56; 17; 17; 101; 0.34
5606;30.11.2003;4265001;1078616923202 ;Краснодар (РОСIЯ) ;01.11.2003 19:28:01; 545; 545; 101; 10.75
5606;30.11.2003;4265001;0503210159 ;"УМЗ" ;03.11.2003 15:27:00; 292; 292; 101; 4.88
5606;30.11.2003;4265001;0442954018 ;КИЇВ ;08.11.2003 17:20:33; 89; 89; 101; 0.37
как же мне правильно и красиво пропарсить строку?
Здравствуйте, sergnek, Вы писали:
S>Здравствуйте всем.
S>есть текстовый файл, нужно запихнуть в БД.
S>пытался использовать fscanf, не хватает знаний.
S>Тестовый файл
S>S>5606;30.11.2003;4265000;0679955837 ;"Київстар Дж.Ес.Ем." ;03.11.2003 16:36:19; 17; 17; 101; 0.28
S>5606;30.11.2003;4265001;1078616923202 ;Краснодар (РОСIЯ) ;01.11.2003 19:25:56; 17; 17; 101; 0.34
S>5606;30.11.2003;4265001;1078616923202 ;Краснодар (РОСIЯ) ;01.11.2003 19:28:01; 545; 545; 101; 10.75
S>5606;30.11.2003;4265001;0503210159 ;"УМЗ" ;03.11.2003 15:27:00; 292; 292; 101; 4.88
S>5606;30.11.2003;4265001;0442954018 ;КИЇВ ;08.11.2003 17:20:33; 89; 89; 101; 0.37
S>
S>как же мне правильно и красиво пропарсить строку?
так мысли на вскидку.
Можешь воспользоваться конечно и fscanf, но файл у тебя имеет четкую строчную структуру и никто не обещает тебе что в нем не может быть неформатного мусора. Т.е. если использовать в данном случае fscanf, то в форматной строке нужно еще будет корректно распознавать символы перехода на новую строку, что может иметь вид "\r\n" и наоборот и просто "\n". Конечно скорее всего все будет как нужно, но я всегда при конвертации форматов исхожу от худших условий, т.е. от полного хаоса в формате. Так легче застраховаться от непредвиденных ситуаций, а конечные алгоритмы получаются не более сложными, но более правильными.
в данном случае я бы использовал последовательность fopen -> fgets -> sscanf. Выбирать тебе, но ниже мое мнение по поводу форматной строки. Для любых вариантов она будет подходить.
_stscanf(tbuff, _T("%d;%d.%d.%d;%d;%d%*[ ];\"%[^"]\"%*[ ];%d.%d.%d%*[ ]%d:%d:%d;%*[ ]%d;%*[ ]%d;%*[ ]%d;%*[ ]%f"), ...);
не проверял. но вроде бы ошибок не должно быть.
надеюсь по форматной строке список парамтеров будет понятен.
удачи.