I have recently started programming in UNIX environment. I need to write a program which creates an empty file with name and size given in the terminal using this commands

```
gcc foo.c -o foo.o 
./foo.o result.txt 1000

```

Here result.txt means the name of the newly created file, and 1000 means the size of the file in bytes. 

I know for sure that **lseek** function moves the file offset, but the trouble is that whenever I run the program it creates a file with a given name, however the size of the file is **0**.

Here is the code of my small program.

```
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>
int main(int  argc, char **argv)
{
    int fd;
    char *file_name;
    off_t bytes;
    mode_t mode;

    if (argc < 3)
    {
        perror("There is not enough command-line arguments.");
        //return 1;
    }

    file_name = argv[1];
    bytes = atoi(argv[2]);
    mode = S_IWUSR | S_IWGRP | S_IWOTH;

    if ((fd = creat(file_name, mode)) < 0)
    {
        perror("File creation error.");
        //return 1;
    }
    if (lseek(fd, bytes, SEEK_SET) == -1)
    {
        perror("Lseek function error.");
        //return 1;
    }
    close(fd);
    return 0;
}

```