Search code examples
cfileinputreadline

Read lines of file in C


I am trying to read line by line a standard file input.

This is my code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define BUFFER_SIZE 1204

char* readLine(char* buffer){
    int i = 0;
    for(i; i< BUFFER_SIZE; i++){
        printf("%c",buffer[i]);
        if( '\n' == buffer[i]){
            char* line[124];
            memcpy( line, &buffer[0], i-1 );
            return *line;
        }
    }
    free(buffer);
}
int doStuffWithLine(char* line){
    return 1;
}
int main(int argc, char *argv[])
{
    ssize_t aux1;
    char *buffer = malloc(sizeof(char)*BUFFER_SIZE);
    char *line = malloc(sizeof(char)*BUFFER_SIZE);
    while((read(STDIN_FILENO, buffer, BUFFER_SIZE))>0){ 
        line = readLine(buffer);
        doStuffWithLine(line);
        printf("%s", line);
    }
    return 0;
}

This is the input file content:

lol1
lol2
lol3

And this is the output of my program:

lol1
Segmentation fault (core dumped)

I want to know how read lines 2 and 3, solve it and a little explanation about what I am doing wrong because I do not understand the problem.

Thank you in advance.


Solution

  • First of all, thank you all that helped me and spent some time trying it.

    After spending some hours learning and breaking my brain I have found a solution. In conclusion I am ***** and noob.

    If someone is having the same problem I am submitting my code. Easy peasy:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <limits.h>
    
    char* doStuff(char* line){
        return line;
    }
    
    int main(int argc, char *argv[])
    {
        char *line = malloc(sizeof(char)*LINE_MAX);
        while(fgets(line, LINE_MAX, stdin)!= NULL)
        {
            line = doStuff(line);
            printf("%s", line);
        }
        return 0;
    }