Doubt in C programming (copying data from one file to another)

Tags
programming

 
Thread Tools Search this Thread
# 1  
Old 10-10-2010
Doubt in C programming (copying data from one file to another)

Hello, i'm new to the forum and so am i to C programming.
Recently i've gotten a task to create a program that will read an existing .bin file and copy the data to a non existing (so i have to create it) .txt file (some type of conversion)

Now, i now how to put the arguments, opening and creating the files, the doubts i get is in the part where i have to read the .bin and paste it to the .txt

I thought of using the function read, but i'm not sure how to do the copying part this way.
I also thought maybe getc and putc might help?

As you see i'm really lost, i'd gladly recieve a bit of help that could put me again on the road.
Thank you very much.
Lyric.
# 2  
Old 10-10-2010
Code:
// copy.c useage: copy inputfile outputfile
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void copy(FILE *in, FILE *out)
{
     char buf[8192]={0x0};
     ssize_t len=0;
     while( ( len=read(fileno(in), buf, sizeof(buf) ) )>0)
            write(fileno(out), buf, len);
}

int main(int argc, char **argv)
{
          FILE *in=fopen(argv[1], "r");
          FILE *out=fopen(argv[2], "w");  /* edit thanks to franklin! change to "w"  */
          if(in==NULL || out==NULL)
          {
                perror("cannot open file");
                exit(1);
          }
          copy(in, out);
          fclose(in);
          fclose(out);
          return 0;
}

If you read K&R there is an even simpler version of copy a file in there.

Last edited by jim mcnamara; 10-10-2010 at 07:36 PM..
# 3  
Old 10-10-2010
Jim,
Code:
FILE *out=fopen(argv[2], "r");

Shouldn't this be:
Code:
FILE *out=fopen(argv[2], "w");

# 4  
Old 10-11-2010
Code:
void copy(FILE *in, FILE *out)
{
     char buf[8192]={0x0};
     ssize_t len=0;
     while( ( len=read(fileno(in), buf, sizeof(buf) ) )>0)
            write(fileno(out), buf, len);
}

Why bother converting between 'FILE *' and 'int'??
does partial write need be considered??
# 5  
Old 10-11-2010
Why bother converting between 'FILE *' and 'int'??
Because it is easier to use fopen for a beginner. open requires flags and mode settings.

does partial write need be considered??
That is what len does. It remembers how many bytes the read call got, for the write call.
the K&R code which seems to confuse people:
Code:
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv)
{
    char buf[8192]={0x0};
    int sz=0;
    while( (sz=read(0, buf, sizeof(buf) ) )>0  )
           write(1, buf, sz);
    return 0;
}

-- usage: ./copy < infile > outfile
That simple enough?
# 6  
Old 10-12-2010
Quote:
Originally Posted by jim mcnamara
does partial write need be considered??
That is what len does. It remembers how many bytes the read call got, for the write call.
the K&R code which seems to confuse people:
by 'partial write', I mean that "write does not promise it will the exact number of bytes you required on success, It will return the actual number of bytes written"
'len' has nothing to do with this.

my fault.
this solution event does not check the return value of 'write'.

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
SQL: copying data up figaro Programming 3 2 Weeks Ago 04:38 PM
Copying data from USB CD Drive. videsh77 Red Hat 3 04-22-2014 03:32 PM
Shell script to read lines in a text file and filter user data Shell Programming and Scripting VikrantD UNIX for Dummies Questions & Answers 3 03-25-2014 04:28 AM
Copying part of a data file into another latsyrc UNIX for Dummies Questions & Answers 8 07-08-2013 07:38 AM
Copying data from one file server to another br1an Solaris 2 05-21-2013 08:36 PM
Copying data from files to directories newbie2010 Shell Programming and Scripting 2 05-17-2013 01:06 PM
SQL: copying data down figaro Programming 8 12-08-2011 02:35 PM
Error while copying huge amount of data in aix samsungsamsung AIX 3 06-01-2011 05:34 PM
updating data in cvs file using c programming sajidtariq Programming 0 02-24-2011 02:47 AM
Socket programming doubt _korg Programming 5 07-30-2010 04:52 PM
Copying data from excel file 5ahen Shell Programming and Scripting 1 02-04-2009 10:39 AM
Compress the contents of a directory while copying data into it user1602 Shell Programming and Scripting 2 01-12-2009 08:53 PM
socket programming doubt kic UNIX for Advanced & Expert Users 1 10-02-2008 10:36 AM
Post Shell programming: Question about source a file and read data from the file ccwq Shell Programming and Scripting 3 08-04-2007 11:28 PM
copying data to raw devices using 'dd' Neville UNIX for Advanced & Expert Users 4 03-23-2006 06:01 PM