Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8703277
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T02:50:29+00:00 2026-06-13T02:50:29+00:00

I need to write a simple c program that takes a particular dump of

  • 0

I need to write a simple c program that takes a particular dump of a table as input and arrange it in a particular way in the output. I’m trying to parse the information I need and put them inside the memory, but I have a problem. I’ve outputed my data, and I can see “strange chars” as output. Here’s the code:

#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>

typedef struct entityTail
{
    char entity[50];
    struct entityTail* next;
} entityTail;

typedef struct keyTail
{
    char key[300];
    struct keyTail* next;
} keyTail;

typedef struct eventTail
{
    char event[5];
    struct eventTail* next;
} eventTail;

void setATuple(entityTail* entityNew, entityTail* entityNext, keyTail* keyNew, keyTail* keyNext, eventTail* eventNew, eventTail* eventNext, char* startOfParam);

int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        printf("Only 1 param needed: the filename");
        return -1;
    }
    char* buffer = NULL; //this buffer will contain all our conf file
    long size = 0;  //in bytes
    long length = 0; //in chars, must match the "size" variable
    FILE* hFile;
    bool exit = false;
    char* startOfTuple = NULL;
    bool headsSet = false;  //used within a cycle

    entityTail* entityHead = (entityTail*) malloc(sizeof(entityTail));
    keyTail* keyHead = (keyTail*) malloc(sizeof(keyTail));
    eventTail* eventHead = (eventTail*) malloc(sizeof(eventTail));
    entityTail* theEntityTail = NULL;
    keyTail* theKeyTail = NULL;
    eventTail* theEventTail = NULL;

    hFile = fopen( argv[1], "r");        //opening the file in "read-only" mode
    if (hFile == NULL)
    {
        printf("Error: the input file doesn't exist\n");
        return -2;     //error opening the file
    }

    //retrieving the size (in bytes) of my text file
    fseek (hFile , 0 , SEEK_END);   //point to the end of the file
    size = ftell (hFile);   //retrieving the size of the file
    rewind (hFile);     //point to the start

    // allocate memory to contain the whole file:
    buffer = malloc (sizeof(char) * size);
    if (buffer == NULL)
    {
        printf("Error: memory error\n");
        return -3; //memory error
    }
    // copy the file into the buffer:
    length = fread (buffer,1,size,hFile);   //reading "size" elements of 1 byte, stored in hFile
    if (length != size)
    {
        printf("Error: read error\n");
        return -4; //reading error, length and size doesn't match
    }
    /* the whole file is now loaded in the memory buffer. */

    // terminate
    fclose (hFile);

    //now we look for the position where our data starts
    //our entity param is just an int, so it will be not enclosed by the ' symbol
    startOfTuple = strstr(buffer, "VALUES"); //finding "VALUES" inside our table dump
    startOfTuple = strstr(startOfTuple + 1, "("); //now we point to our first tuple
    //now we process the rest of our file
    while(!exit)
    {
        entityTail* entityNew = (entityTail*) malloc(sizeof(entityTail));
        keyTail* keyNew = (keyTail*) malloc(sizeof(keyTail));
        eventTail* eventNew = (eventTail*) malloc(sizeof(eventTail));
        if(!headsSet)   //we need to set our heads
        {
            setATuple(entityHead, NULL, keyHead, NULL, eventHead, NULL, startOfTuple);
            theEntityTail = entityHead;
            theKeyTail = keyHead;
            theEventTail = eventHead;
            headsSet = true;
            printf("\n%s %s %s\n", entityHead->entity, keyHead->key, eventHead->event);
        }

        else
        {
            setATuple(entityNew, theEntityTail, keyNew, theKeyTail, eventNew, theEventTail, startOfTuple);
            theEntityTail = entityNew;
            theKeyTail = keyNew;
            theEventTail = eventNew;
            printf("\n%s  %s  %s\n", entityNew->entity, keyNew->key, eventNew->event);
             exit = true; //debugging purpose
        }
        startOfTuple = strchr(startOfTuple + 1 , '('); //pointing to the next tuple
        if(startOfTuple == NULL) exit = true;
    }
    return 0;
}

void setATuple(entityTail* entityNew, entityTail* entityNext, keyTail* keyNew, keyTail* keyNext, eventTail* eventNew, eventTail* eventNext, char* startOfParam)
{
    int i = 0;
    char* endOfParam = NULL;
    //first we reach the "entity" param (an integer)
    for(i = 0; i < 3; i++)
    {
        startOfParam = strchr(startOfParam + 1, ',');
        endOfParam = strchr(startOfParam + 1, ',');
    }
    //now we set the entityHead
    if(entityNext != NULL)
        entityNew->next = entityNext;
    else    //we're setting the heads
        entityNew->next = NULL;
    strncpy(entityNew->entity, startOfParam + 1, endOfParam - startOfParam - 1);
    //now we set the keyHead; that param is enclosed by two ' symbols
    startOfParam = strchr(endOfParam + 1, '\''); //we look now for the ' symbol, it's easier that look for a comma and then remove the ' symbol
    endOfParam = strchr(startOfParam + 1, '\''); //it should work even if that field in the database is empty
    if(keyNext != NULL)
        keyNew->next = keyNext;
    else
        keyNew->next = NULL;
    strncpy(keyNew->key, startOfParam + 1, endOfParam - startOfParam - 1);
    //now we set the eventHead
    startOfParam = strchr(endOfParam + 1, '\''); //we look now for the ' symbol, it's easier that look for a comma and then remove the ' symbol
    endOfParam = strchr(startOfParam + 1, '\''); //it should work even if that field in the database is empty
    if(eventNext != NULL)
        eventNew->next = eventNext;
    else
        eventNew->next = NULL;
    strncpy(eventNew->event, startOfParam + 1, endOfParam - startOfParam - 1);
}

I think the problem is related to the function setATuple, but I can’t figure out what’s wrong.

Since it’s a specific file-related program, I’m going to copy the file it’s supposed to process. Here it is:

-- MySQL dump 10.13  Distrib 5.5.24, for debian-linux-gnu (i686)
--
-- Host: localhost    Database: tesi
-- ------------------------------------------------------
-- Server version   5.5.24-0ubuntu0.12.04.1

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `log`
--

DROP TABLE IF EXISTS `log`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `log` (
  `eid` int(11) NOT NULL AUTO_INCREMENT,
  `system` int(11) NOT NULL,
  `host` varchar(15) NOT NULL,
  `entity` int(30) NOT NULL,
  `key` varchar(40) NOT NULL,
  `event` varchar(5) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`eid`),
  KEY `event` (`event`),
  CONSTRAINT `log_ibfk_1` FOREIGN KEY (`event`) REFERENCES `events` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=238 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `log`
--

LOCK TABLES `log` WRITE;
/*!40000 ALTER TABLE `log` DISABLE KEYS */;
INSERT INTO `log` VALUES (1,1,'127.000.000.001',0,'10','CMP','2012-10-09 15:13:37'),(2,1,'127.000.000.001',0,'19','CMP','2012-10-09 15:13:37'),(3,1,'127.000.000.001',0,'38','CMP','2012-10-09 15:13:37'),(4,1,'127.000.000.001',0,'77','CMP','2012-10-09 15:13:37'),(5,1,'127.000.000.001',0,'108','CMP','2012-10-09 15:13:37'),(6,1,'127.000.000.001',0,'119','CMP','2012-10-09 15:13:37'),(7,1,'127.000.000.001',0,'149','CMP','2012-10-09 15:13:37'),(8,1,'127.000.000.001',0,'154','CMP','2012-10-09 15:13:38'),(9,1,'127.000.000.001',1,'34','CMP','2012-10-09 15:13:38'),(10,1,'127.000.000.001',1,'143','CMP','2012-10-09 15:13:38'),(11,1,'127.000.000.001',2,'10','CMP','2012-10-09 15:13:38'),(12,1,'127.000.000.001',2,'30','CMP','2012-10-09 15:13:38'),(13,1,'127.000.000.001',2,'87','CMP','2012-10-09 15:13:38'),(14,1,'127.000.000.001',2,'102','CMP','2012-10-09 15:13:39'),(15,1,'127.000.000.001',2,'125','CMP','2012-10-09 15:13:39'),(16,1,'127.000.000.001',2,'161','CMP','2012-10-09 15:13:39'),(17,1,'127.000.000.001',2,'163','CMP','2012-10-09 15:13:39'),(18,1,'127.000.000.001',2,'181','CMP','2012-10-09 15:13:39'),(19,1,'127.000.000.001',2,'182','CMP','2012-10-09 15:13:39'),(20,1,'127.000.000.001',2,'183','CMP','2012-10-09 15:13:39'),(21,1,'127.000.000.001',3,'0','CMP','2012-10-09 15:13:39'),(22,1,'127.000.000.001',3,'40','CMP','2012-10-09 15:13:39'),(23,1,'127.000.000.001',3,'43','CMP','2012-10-09 15:13:39'),(24,1,'127.000.000.001',3,'101','CMP','2012-10-09 15:13:39'),(25,1,'127.000.000.001',3,'126','CMP','2012-10-09 15:13:40'),(26,1,'127.000.000.001',3,'190','CMP','2012-10-09 15:13:40'),(27,1,'127.000.000.001',4,'21','CMP','2012-10-09 15:13:40'),(28,1,'127.000.000.001',4,'22','CMP','2012-10-09 15:13:40'),(29,1,'127.000.000.001',4,'75','CMP','2012-10-09 15:13:40'),(30,1,'127.000.000.001',4,'88','CMP','2012-10-09 15:13:40'),(31,1,'127.000.000.001',4,'110','CMP','2012-10-09 15:13:40'),(32,1,'127.000.000.001',4,'182','CMP','2012-10-09 15:13:40'),(33,1,'127.000.000.001',5,'66','CMP','2012-10-09 15:13:40'),(34,1,'127.000.000.001',5,'90','CMP','2012-10-09 15:13:41'),(35,1,'127.000.000.001',5,'193','CMP','2012-10-09 15:13:41'),(36,1,'127.000.000.001',6,'57','CMP','2012-10-09 15:13:41'),(37,1,'127.000.000.001',6,'67','CMP','2012-10-09 15:13:41'),(38,1,'127.000.000.001',6,'71','CMP','2012-10-09 15:13:41'),(39,1,'127.000.000.001',6,'73','SER','2012-10-09 15:13:41'),(40,1,'127.000.000.001',6,'90','CMP','2012-10-09 15:13:41'),(41,1,'127.000.000.001',6,'91','CMP','2012-10-09 15:13:41'),(42,1,'127.000.000.001',6,'112','CMP','2012-10-09 15:13:41'),(43,1,'127.000.000.001',6,'126','CMP','2012-10-09 15:13:41'),(44,1,'127.000.000.001',6,'173','CMP','2012-10-09 15:13:41'),(45,1,'127.000.000.001',7,'20','CMP','2012-10-09 15:13:41'),(46,1,'127.000.000.001',7,'22','CMP','2012-10-09 15:13:42'),(47,1,'127.000.000.001',7,'33','CMP','2012-10-09 15:13:42'),(48,1,'127.000.000.001',7,'73','CMP','2012-10-09 15:13:42'),(49,1,'127.000.000.001',7,'97','CMP','2012-10-09 15:13:42'),(50,1,'127.000.000.001',7,'126','CMP','2012-10-09 15:13:42'),(51,1,'127.000.000.001',7,'127','CMP','2012-10-09 15:13:42'),(52,1,'127.000.000.001',7,'170','CMP','2012-10-09 15:13:42'),(53,1,'127.000.000.001',7,'189','CMP','2012-10-09 15:13:42'),(54,1,'127.000.000.001',8,'5','CMP','2012-10-09 15:13:42'),(55,1,'127.000.000.001',8,'80','CMP','2012-10-09 15:13:43'),(56,1,'127.000.000.001',8,'90','CMP','2012-10-09 15:13:43'),(57,1,'127.000.000.001',8,'102','CMP','2012-10-09 15:13:43'),(58,1,'127.000.000.001',8,'158','CMP','2012-10-09 15:13:43'),(59,1,'127.000.000.001',8,'185','CMP','2012-10-09 15:13:43'),(60,1,'127.000.000.001',9,'22','CMP','2012-10-09 15:13:43'),(61,1,'127.000.000.001',9,'34','CMP','2012-10-09 15:13:43'),(62,1,'127.000.000.001',9,'50','CMP','2012-10-09 15:13:43'),(63,1,'127.000.000.001',9,'51','CMP','2012-10-09 15:13:43'),(64,1,'127.000.000.001',9,'89','CMP','2012-10-09 15:13:43'),(65,1,'127.000.000.001',9,'110','CMP','2012-10-09 15:13:43'),(66,1,'127.000.000.001',9,'137','CMP','2012-10-09 15:13:43'),(67,1,'127.000.000.001',9,'141','CMP','2012-10-09 15:13:44'),(68,1,'127.000.000.001',9,'186','CMP','2012-10-09 15:13:44'),(69,1,'127.000.000.001',9,'194','CMP','2012-10-09 15:13:44'),(70,1,'127.000.000.001',10,'23','CMP','2012-10-09 15:13:44'),(71,1,'127.000.000.001',10,'42','CMP','2012-10-09 15:13:44'),(72,1,'127.000.000.001',10,'51','CMP','2012-10-09 15:13:44'),(73,1,'127.000.000.001',10,'52','CMP','2012-10-09 15:13:44'),(74,1,'127.000.000.001',11,'44','CMP','2012-10-09 15:13:44'),(75,1,'127.000.000.001',11,'57','CMP','2012-10-09 15:13:44'),(76,1,'127.000.000.001',11,'123','CMP','2012-10-09 15:13:45'),(77,1,'127.000.000.001',11,'125','CMP','2012-10-09 15:13:45'),(78,1,'127.000.000.001',11,'145','CMP','2012-10-09 15:13:45'),(79,1,'127.000.000.001',12,'6','CMP','2012-10-09 15:13:45'),(80,1,'127.000.000.001',12,'26','CMP','2012-10-09 15:13:45'),(81,1,'127.000.000.001',12,'28','CMP','2012-10-09 15:13:45'),(82,1,'127.000.000.001',12,'61','CMP','2012-10-09 15:13:45'),(83,1,'127.000.000.001',12,'117','CMP','2012-10-09 15:13:45'),(84,1,'127.000.000.001',12,'134','CMP','2012-10-09 15:13:45'),(85,1,'127.000.000.001',12,'139','CMP','2012-10-09 15:13:45'),(86,1,'127.000.000.001',12,'158','CMP','2012-10-09 15:13:45'),(87,1,'127.000.000.001',12,'186','CMP','2012-10-09 15:13:45'),(88,1,'127.000.000.001',12,'189','CMP','2012-10-09 15:13:45'),(89,1,'127.000.000.001',12,'191','CMP','2012-10-09 15:13:46'),(90,1,'127.000.000.001',12,'193','CMP','2012-10-09 15:13:46'),(91,1,'127.000.000.001',13,'31','CMP','2012-10-09 15:13:46'),(92,1,'127.000.000.001',13,'93','CMP','2012-10-09 15:13:46'),(93,1,'127.000.000.001',13,'109','CMP','2012-10-09 15:13:46'),(94,1,'127.000.000.001',13,'149','CMP','2012-10-09 15:13:46'),(95,1,'127.000.000.001',14,'5','CMP','2012-10-09 15:13:46'),(96,1,'127.000.000.001',14,'24','CMP','2012-10-09 15:13:46'),(97,1,'127.000.000.001',14,'128','CMP','2012-10-09 15:13:47'),(98,1,'127.000.000.001',14,'142','CMP','2012-10-09 15:13:47'),(99,1,'127.000.000.001',14,'161','CMP','2012-10-09 15:13:47'),(100,1,'127.000.000.001',15,'17','CMP','2012-10-09 15:13:47'),(101,1,'127.000.000.001',15,'19','CMP','2012-10-09 15:13:47'),(102,1,'127.000.000.001',15,'27','CMP','2012-10-09 15:13:47'),(103,1,'127.000.000.001',15,'71','CMP','2012-10-09 15:13:47'),(104,1,'127.000.000.001',15,'74','CMP','2012-10-09 15:13:47'),(105,1,'127.000.000.001',15,'104','CMP','2012-10-09 15:13:47'),(106,1,'127.000.000.001',15,'126','CMP','2012-10-09 15:13:48'),(107,1,'127.000.000.001',15,'143','CMP','2012-10-09 15:13:48'),(108,1,'127.000.000.001',15,'155','CMP','2012-10-09 15:13:48'),(109,1,'127.000.000.001',15,'185','CMP','2012-10-09 15:13:48'),(110,1,'127.000.000.001',16,'69','CMP','2012-10-09 15:13:48'),(111,1,'127.000.000.001',16,'103','CMP','2012-10-09 15:13:48'),(112,1,'127.000.000.001',16,'139','CMP','2012-10-09 15:13:48'),(113,1,'127.000.000.001',16,'169','CMP','2012-10-09 15:13:48'),(114,1,'127.000.000.001',17,'51','CMP','2012-10-09 15:13:48'),(115,1,'127.000.000.001',17,'67','CMP','2012-10-09 15:13:49'),(116,1,'127.000.000.001',17,'138','CMP','2012-10-09 15:13:49'),(117,1,'127.000.000.001',17,'162','CMP','2012-10-09 15:13:49'),(118,1,'127.000.000.001',17,'173','CMP','2012-10-09 15:13:49'),(119,1,'127.000.000.001',17,'185','CMP','2012-10-09 15:13:49'),(120,1,'127.000.000.001',18,'17','CMP','2012-10-09 15:13:49'),(121,1,'127.000.000.001',18,'57','CMP','2012-10-09 15:13:49'),(122,1,'127.000.000.001',18,'107','CMP','2012-10-09 15:13:49'),(123,1,'127.000.000.001',18,'163','CMP','2012-10-09 15:13:50'),(124,1,'127.000.000.001',18,'193','CMP','2012-10-09 15:13:50'),(125,1,'127.000.000.001',19,'3','CMP','2012-10-09 15:13:50'),(126,1,'127.000.000.001',19,'11','CMP','2012-10-09 15:13:50'),(127,1,'127.000.000.001',19,'36','CMP','2012-10-09 15:13:50'),(128,1,'127.000.000.001',19,'109','CMP','2012-10-09 15:13:50'),(129,1,'127.000.000.001',19,'126','CMP','2012-10-09 15:13:50'),(130,1,'127.000.000.001',19,'194','CMP','2012-10-09 15:13:50'),(131,1,'127.000.000.001',19,'196','CMP','2012-10-09 15:13:50'),(132,1,'127.000.000.001',0,'19','IER','2012-10-09 15:13:55'),(133,1,'127.000.000.001',0,'20','SER','2012-10-09 15:13:55'),(134,1,'127.000.000.001',0,'174','SER','2012-10-09 15:13:55'),(135,1,'127.000.000.001',0,'199','IER','2012-10-09 15:13:55'),(136,1,'127.000.000.001',1,'140','SER','2012-10-09 15:13:55'),(137,1,'127.000.000.001',1,'147','SER','2012-10-09 15:13:56'),(138,1,'127.000.000.001',1,'164','IER','2012-10-09 15:13:56'),(139,1,'127.000.000.001',1,'167','IER','2012-10-09 15:13:56'),(140,1,'127.000.000.001',1,'183','IER','2012-10-09 15:13:56'),(141,1,'127.000.000.001',2,'29','IER','2012-10-09 15:13:56'),(142,1,'127.000.000.001',2,'33','IER','2012-10-09 15:13:56'),(143,1,'127.000.000.001',2,'129','IER','2012-10-09 15:13:56'),(144,1,'127.000.000.001',2,'155','SER','2012-10-09 15:13:56'),(145,1,'127.000.000.001',2,'180','IER','2012-10-09 15:13:56'),(146,1,'127.000.000.001',3,'8','SER','2012-10-09 15:13:57'),(147,1,'127.000.000.001',3,'25','SER','2012-10-09 15:13:57'),(148,1,'127.000.000.001',3,'33','SER','2012-10-09 15:13:57'),(149,1,'127.000.000.001',3,'109','SER','2012-10-09 15:13:57'),(150,1,'127.000.000.001',3,'144','IER','2012-10-09 15:13:57'),(151,1,'127.000.000.001',4,'13','SER','2012-10-09 15:13:57'),(152,1,'127.000.000.001',4,'56','SER','2012-10-09 15:13:57'),(153,1,'127.000.000.001',4,'94','SER','2012-10-09 15:13:58'),(154,1,'127.000.000.001',4,'125','IER','2012-10-09 15:13:58'),(155,1,'127.000.000.001',4,'171','SER','2012-10-09 15:13:58'),(156,1,'127.000.000.001',4,'199','SER','2012-10-09 15:13:58'),(157,1,'127.000.000.001',5,'4','IER','2012-10-09 15:13:58'),(158,1,'127.000.000.001',5,'93','SER','2012-10-09 15:13:58'),(159,1,'127.000.000.001',5,'94','SER','2012-10-09 15:13:58'),(160,1,'127.000.000.001',6,'8','IER','2012-10-09 15:13:58'),(161,1,'127.000.000.001',6,'103','IER','2012-10-09 15:13:59'),(162,1,'127.000.000.001',6,'107','SER','2012-10-09 15:13:59'),(163,1,'127.000.000.001',6,'154','IER','2012-10-09 15:13:59'),(164,1,'127.000.000.001',6,'167','SER','2012-10-09 15:13:59'),(165,1,'127.000.000.001',7,'14','SER','2012-10-09 15:13:59'),(166,1,'127.000.000.001',7,'42','SER','2012-10-09 15:13:59'),(167,1,'127.000.000.001',7,'109','IER','2012-10-09 15:13:59'),(168,1,'127.000.000.001',7,'115','SER','2012-10-09 15:13:59'),(169,1,'127.000.000.001',7,'132','IER','2012-10-09 15:14:00'),(170,1,'127.000.000.001',7,'148','IER','2012-10-09 15:14:00'),(171,1,'127.000.000.001',7,'162','IER','2012-10-09 15:14:00'),(172,1,'127.000.000.001',8,'13','IER','2012-10-09 15:14:00'),(173,1,'127.000.000.001',8,'33','SER','2012-10-09 15:14:00'),(174,1,'127.000.000.001',8,'57','IER','2012-10-09 15:14:00'),(175,1,'127.000.000.001',8,'65','IER','2012-10-09 15:14:00'),(176,1,'127.000.000.001',8,'84','SER','2012-10-09 15:14:00'),(177,1,'127.000.000.001',8,'90','IER','2012-10-09 15:14:00'),(178,1,'127.000.000.001',9,'9','IER','2012-10-09 15:14:01'),(179,1,'127.000.000.001',9,'78','IER','2012-10-09 15:14:01'),(180,1,'127.000.000.001',9,'92','SER','2012-10-09 15:14:01'),(181,1,'127.000.000.001',9,'114','SER','2012-10-09 15:14:01'),(182,1,'127.000.000.001',10,'54','SER','2012-10-09 15:14:01'),(183,1,'127.000.000.001',10,'79','SER','2012-10-09 15:14:01'),(184,1,'127.000.000.001',10,'86','SER','2012-10-09 15:14:01'),(185,1,'127.000.000.001',10,'91','SER','2012-10-09 15:14:01'),(186,1,'127.000.000.001',10,'97','SER','2012-10-09 15:14:01'),(187,1,'127.000.000.001',10,'158','SER','2012-10-09 15:14:02'),(188,1,'127.000.000.001',11,'56','IER','2012-10-09 15:14:02'),(189,1,'127.000.000.001',11,'132','SER','2012-10-09 15:14:02'),(190,1,'127.000.000.001',11,'136','IER','2012-10-09 15:14:02'),(191,1,'127.000.000.001',11,'163','SER','2012-10-09 15:14:02'),(192,1,'127.000.000.001',11,'165','IER','2012-10-09 15:14:02'),(193,1,'127.000.000.001',12,'55','IER','2012-10-09 15:14:02'),(194,1,'127.000.000.001',12,'137','SER','2012-10-09 15:14:02'),(195,1,'127.000.000.001',12,'142','IER','2012-10-09 15:14:02'),(196,1,'127.000.000.001',12,'192','IER','2012-10-09 15:14:03'),(197,1,'127.000.000.001',13,'53','IER','2012-10-09 15:14:03'),(198,1,'127.000.000.001',13,'56','SER','2012-10-09 15:14:03'),(199,1,'127.000.000.001',13,'135','IER','2012-10-09 15:14:03'),(200,1,'127.000.000.001',13,'139','SER','2012-10-09 15:14:03'),(201,1,'127.000.000.001',13,'143','IER','2012-10-09 15:14:03'),(202,1,'127.000.000.001',13,'155','IER','2012-10-09 15:14:03'),(203,1,'127.000.000.001',13,'178','IER','2012-10-09 15:14:03'),(204,1,'127.000.000.001',13,'181','IER','2012-10-09 15:14:03'),(205,1,'127.000.000.001',13,'182','SER','2012-10-09 15:14:03'),(206,1,'127.000.000.001',14,'25','SER','2012-10-09 15:14:04'),(207,1,'127.000.000.001',14,'55','IER','2012-10-09 15:14:04'),(208,1,'127.000.000.001',14,'66','SER','2012-10-09 15:14:04'),(209,1,'127.000.000.001',14,'70','SER','2012-10-09 15:14:04'),(210,1,'127.000.000.001',14,'86','SER','2012-10-09 15:14:04'),(211,1,'127.000.000.001',14,'93','SER','2012-10-09 15:14:04'),(212,1,'127.000.000.001',14,'108','IER','2012-10-09 15:14:04'),(213,1,'127.000.000.001',14,'183','SER','2012-10-09 15:14:04'),(214,1,'127.000.000.001',15,'24','IER','2012-10-09 15:14:04'),(215,1,'127.000.000.001',15,'65','IER','2012-10-09 15:14:04'),(216,1,'127.000.000.001',15,'153','IER','2012-10-09 15:14:05'),(217,1,'127.000.000.001',15,'157','SER','2012-10-09 15:14:05'),(218,1,'127.000.000.001',16,'60','IER','2012-10-09 15:14:05'),(219,1,'127.000.000.001',16,'108','IER','2012-10-09 15:14:05'),(220,1,'127.000.000.001',16,'148','IER','2012-10-09 15:14:05'),(221,1,'127.000.000.001',16,'170','IER','2012-10-09 15:14:05'),(222,1,'127.000.000.001',16,'181','SER','2012-10-09 15:14:05'),(223,1,'127.000.000.001',17,'20','IER','2012-10-09 15:14:05'),(224,1,'127.000.000.001',17,'134','SER','2012-10-09 15:14:06'),(225,1,'127.000.000.001',17,'200','IER','2012-10-09 15:14:06'),(226,1,'127.000.000.001',18,'4','SER','2012-10-09 15:14:06'),(227,1,'127.000.000.001',18,'63','IER','2012-10-09 15:14:06'),(228,1,'127.000.000.001',18,'74','SER','2012-10-09 15:14:06'),(229,1,'127.000.000.001',18,'84','SER','2012-10-09 15:14:06'),(230,1,'127.000.000.001',18,'88','IER','2012-10-09 15:14:06'),(231,1,'127.000.000.001',18,'94','SER','2012-10-09 15:14:06'),(232,1,'127.000.000.001',18,'108','IER','2012-10-09 15:14:06'),(233,1,'127.000.000.001',19,'24','SER','2012-10-09 15:14:07'),(234,1,'127.000.000.001',19,'88','SER','2012-10-09 15:14:07'),(235,1,'127.000.000.001',19,'137','IER','2012-10-09 15:14:07'),(236,1,'127.000.000.001',19,'142','SER','2012-10-09 15:14:07'),(237,1,'127.000.000.001',19,'187','SER','2012-10-09 15:14:07');
/*!40000 ALTER TABLE `log` ENABLE KEYS */;

It “dies” as soon as it reaches the second tuple. Sorry for my poor english, I’m from Italy. Thank you for your help!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T02:50:29+00:00Added an answer on June 13, 2026 at 2:50 am

    I was unable to debug your code; :-(, however I rewrote this code, see if you can use it:

    #include <stdlib.h>
    #include <stdio.h>
    #include <stdbool.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <errno.h>
    
    /*
     * Apparently only interested in 4,5 & 6th comma separated values
     * strtok_r() should be preferred over strtok(); Windows MINGW doesn't have it
     */
    int process_record(char *recordPtr/* and , your DataStructure Ptr if necessary */)
    {
        unsigned count;
        char* fieldPtr = NULL;
    
        fprintf(stderr, "\nFields :");
        for (count = 1; NULL != (fieldPtr = strtok_r(NULL, ",", &recordPtr)); count++)
        {
    
            if (count > 3 && count < 7)
            {// required fields range
    
                /*TODO Trim unwanted characters */
    
                switch (count)
                {
    
                case 4: // copy to relevant DS
                    break;
                case 5: // copy to relevant DS
                    break;
                case 6: // copy to relevant DS
                    break;
                }
    
                fprintf(stderr, "\t %s", fieldPtr);
            }
    
        }
    
        return 0;
    }
    
    
    
    int main(int argc, char* argv[])
    {
        int status;
        unsigned count;
        unsigned readBytes = 0;
        struct stat fStat;
        unsigned fileSize ;
         FILE* hFile;
        char*   fileData = NULL;
        char* dataPtr =NULL;
        char* recordPtr = NULL;
    
        fprintf (stderr, "\n");
        if (argc != 2)
        {
            fprintf(stderr, "\nERROR: Only <filename> required");
            return -1;
        }
    
        /*
         * Get the file size for Memory Load
         */
        status = stat(argv[1], &fStat);
        if (status < 0) {
            fprintf(stderr, "\nERROR: Line[%d] ErroNo[%d]", __LINE__, errno);
            return -2;
        }
    
        fileSize = fStat.st_size;
        fprintf (stderr, "\nDump File size[%u]", fileSize);
    
        /*
         * Allocate sufficient memory to load file data on to memory
         */
        fileData = (char*) malloc (sizeof(char) * fileSize);
        if (NULL == fileData) {
            fprintf(stderr, "\nERROR: Allocating memory");
            return -3;
        }
    
        /* Open file and read data on to memory
         */
        hFile = fopen( argv[1], "r");        //opening the file in "read-only" mode
        if (hFile == NULL)
        {
            fprintf(stderr, "ERROR: Opening file[%s] ErroNo[%d]\n", argv[1], errno);
            return -4;     //error opening the file
        }
        /* assuming file will be read within 3 attempts */
        for (status =0; fileSize != readBytes && status < 3; status ++) {
            readBytes += fread (fileData + readBytes, 1, fileSize - readBytes, hFile);
            fprintf (stderr, "\nData read Size [%u]", readBytes);
        }
    
        fclose (hFile);
        //fprintf (stderr, "\nNOTE: Data read[\n%s\n]", fileData);
    
        /*
         * Chunk it into manageable records
         */
        dataPtr = strstr (fileData, "VALUES (") + strlen ("VALUES ("); //handle error checks
    
        for(count =1; NULL != (recordPtr = strtok_r(NULL, "()", &dataPtr)); count ++) {
    
            if (strlen(recordPtr) > 1) { // NOTE: "," between each record will be tokenised
                //fprintf (stderr, "\nRecord[%d] : [%s]", count, recordPtr);
    
                /*  Process Record
                 */
                process_record (recordPtr /* and , your DataStructure Ptr if necessary */);
            }
        }
    
        free (fileData);
        return 0;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to write a simple program that records all the input from parallel
I'm trying to write a program that takes input of - hexadecimals, octals, and
I need to write a simple program for work that does the following: read
The idea of my simple program that I've been trying to write is to
I need to write a simple terminal-based program that should, Read some text from
I am trying to write a simple program that reads integers from a data
I'm trying to write a simple C++ program that uses Berkeley DB for storage.
I need to write a simple program that ask the user to insert 4
I am trying to write a simple Ruby program that I will run from
I'm using Dev C++ to write a simple C program and I need to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.