Необходимо использовать malloc или calloc для выделения памяти для данных из сохраняемого текстового файла и для проверки данных в файле
Создал структуру, которая показана ниже:
struct entry
{
int source[5];
int destination[5];
int type[5];
int port;
int data;
} record;
Пользователь должен ввести имя файла, и файлы должны быть проверены по определенным критериям и затем сохранены, но я не уверен, как использовать функции malloc или calloc в моем коде, чтобы позволить мне сделать это. Также нужна помощь с тем, как проверить текстовый файл. Фрагмент кода показан ниже:
int file()
{
FILE *inFile;
char inFileName[70]= {'\0'};
char data1[70];
char *token;
int x = 0;
int count = 0;
int length = 0;
printf("Enter File Name:");
scanf("%s", inFileName);
if ((inFile = fopen(inFileName, "r"))== NULL)
{
printf("Open failed:%s\n", inFileName);
exit(1);
}
if (inFile != NULL)
{
while (!feof (inFile)) // Read the whole file until the end of the file.
{
count ++;
printf("\n\nRecord:%i\n", count);
fgets(data1, sizeof data1, inFile); //fgets reads the first string from the "inFile" pointer and stores it in char "data" using the "sizeof" function to make sure strings are the same size.
token = strtok(data1, ":"); // the "token" pointer used with the "strtok" function to break down the "data" string into smaller tokens by using the delimiter ":"
record.source[5] = token;
printf("Source:%d\n", record.source);
1 ответ
Вы можете использовать это, чтобы получить размер файла:
Как вы определяете размер файла в C?
а затем сделать malloc этого размера.
off_t size = fsize(inFileName);
char *data = malloc((size + 1) * sizeof(char));
off_t offset = 0;
и после fgets сохраните данные следующим образом:
fgets(data1, sizeof data1, inFile);
strcpy(data + offset, data1);
offset += strlen(data1);