Я совершенно новичок в программировании, но мне нужно запустить программу как часть моего обучения. Конечная цель программы - прочитать файлы из базы данных и затем отправить их клиенту, который их запрашивает.
В настоящее время я только учусь читать строки из файла и записывать его в другой файл. Но моя проблема в том, что я хочу печатать данные каждый раз, когда сталкиваюсь с новой строкой.
Данные в используемом им файле имеют следующий формат:
<DESCRIPTION>data,<DESCRIPTION>data,<DESCRIPTION>data
и т. Д.
Данные являются как int, так и chars.
Поскольку данные разделены символом "," я думал о том, чтобы сначала поместить все "<DESCRIPTION>data"
в подстроки с помощью функции strtok, которую мне удалось найти во время поиска в Google, после этого я бы сканировал только часть "DESCRIPTION", а затем поместите нужные данные в массив, который я затем распечатал бы при достижении конца массива (конец строки), а затем перешел на следующую строку до конца файла.
Какие функции я могу использовать, чтобы это исправить? Или как настроить цикл, который не будет длиться вечно, сканируя все символы в строке каждый раз, когда нужны данные? Если то, что я говорю, и то, что я делаю - это две разные вещи, я снова прошу прощения за то, что я абсолютный новичок в программировании. Я программирую уже неделю, и это все, что я мог сделать
#include <stdio.h>
#include <ctype.h>
void get9202() {
char
const * str;
const char s = ",";
char * token;
/*open database file*/
FILE * fp = fopen("datafile.dat", "r");
/*create array with all lines of data
I would like it to be able to handle unknown amounts of data.
current file is ~177000 lines of data.*/
int i = 0;
char line[i];
/*checking until end of file*/
while (fgets(line, sizeof(line), fp)) {
/*This part has to be included in the loop somehow but put in here
so that you might get a picture of what im trying to do.*/
while ( * str) {
if (!isspace( * str++))
i++;
else break;
/*not entirely sure how to exit this subloop
to print out the data and go to new line*/
}
/*trying to segment the string into an array of substrings
but dont know when to introduce x*/
token[x] = strtok(str, s);
while (token[x] != NULL) {
printf("%s\n,", token);
}
}
return result;
/* dont know how to return the file to main*/
flclose("datafile.dat");
}
Если данные выглядят так:
<SYMBOL>9202.T,<SYMSTAT>2,<MSGSTAT>0,<TIME>20:50:40.905246,<SYS_DT>2018/07/19,<SYS_TIM>20:50:40.503,<SYS_TIMU>20:50:40.503236
<SYMBOL>9202.T,<SYMSTAT>2,<MSGSTAT>0,<TIME>20:51:40.000235,<SYS_DT>2018/07/19,<SYS_TIM>20:51:39.598,<SYS_TIMU>20:51:39.598597
ожидаемый файл может выглядеть как
9202.T,2,0,20:50:40.905246
9202.T,2,0,20:51:40.000235
при выборе нужных частей некоторые исчезнут.