read() contents from a file


 
Thread Tools Search this Thread
Top Forums Programming read() contents from a file
# 1  
Old 02-17-2012
read() contents from a file

Hi, I'm trying to implement a C program on ubuntu which reads the contents of a file that is passed in as an argument and then displays it to the screen. So far I've cobbled together this from bits online but most of it is probably wrong as its all copied and pasted...
Code:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main (argc, char *argv[])

{
char buf[20];
size_t nbytes;
ssize_t bytes_read;
int fd;

nbytes = sizeof(buf);
bytes_read = read(fd, buf, nbytes);

dump_buffer();

return 0;
}

void dump_buffer(void *buffer, int buffer_size)
{
int i;

for(i = 0;i < buffer_size;++i)
printf("%c", ((char *)buffer)[i]);
}

The main bit i don't get is what the 'fd' argument is thats passed into the read() function? surely doesn't that need to be some reference to the file not just a random int?? I'm also not supposed to be using high level functions life fopen() etc. Could someone please point me where to go and list the (probably many) errors i've made. ThanksSmilie

Last edited by joeyg; 02-17-2012 at 01:48 PM.. Reason: Please wrap scripts and data with CodeTags; makes easier to identify and read
# 2  
Old 02-17-2012
You've made a very good start actually. You just didn't know about open() and write().

And actually, there are a few arbitrary numbers for fd; when your program is run, it inherits a few from the terminal you ran it from. You could do write(1, "abcd\n", 5); to print "abcd" and a newline to the terminal for example. FD 0 is standard input(terminal keyboard if not redirected), FD 1 is standard output(terminal screen if not redirected), FD 2 is standard error(again, the terminal screen).

Standard error exists so that you can redirect standard output into a file, and still get sensible error messages printed to your terminal, or avoid printing error messages into the middle of sensible data.

You can refer to these more sensibly with STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO, defined in unistd.h

If you use a number that doesn't match any opened file, unlike stdio the program won't crash; the system calls will just return error.

Anyway:
Code:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main (argc, char *argv[])
{
        char buf[20];
        size_t nbytes;
        ssize_t bytes_read;
        int fd=open("filename", O_RDONLY);

        if(fd < 0)
        {
                perror("Couldn't open");
                return(1);
        }

        nbytes = sizeof(buf);
        bytes_read = read(fd, buf, nbytes); // you could just use sizeof(buf) here
        if(bytes_read <= 0)
        {
                perror("Couldn't read");
                close(fd);
                return(1);
        }

        printf("Read %d bytes\n", (int)bytes_read);

        write(STDOUT_FILENO, buf, bytes_read);
        close(fd);
        return(0);
}

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 02-24-2012
thanks a lot for this Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace partial contents of file with contents read from other file

Hi, I am facing issue while reading data from a file in UNIX. my requirement is to compare two files and for the text pattern matching in the 1st file, replace the contents in second file by the contents of first file from start to the end and write the contents to thrid file. i am able to... (2 Replies)
Discussion started by: seeki
2 Replies

2. Shell Programming and Scripting

read contents of a file using AWK

Hi, I am kind of new at awk programming, so any help would be great ! I am trying to read a date from a file into a variable and a count into another variable and display both these variables. The file looks like the attached file... I tried this but it doesn't work ... ... (6 Replies)
Discussion started by: RDR
6 Replies

3. Shell Programming and Scripting

how to read contents of file?

I have made a script something like this. I want it to read the contents of either file or directory but 'cat' and 'ls' is not working. Can anyone help me? I am a newbie in scripting so dont know much about it. I also dont know how can i put my code separatly on this forum #!/bin/bash echo... (9 Replies)
Discussion started by: nishrestha
9 Replies

4. Homework & Coursework Questions

How to read contents of a file into variable :(

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I have to read the contents of each field of a file creating user accounts. The file will be of format : ... (6 Replies)
Discussion started by: dude_me5
6 Replies

5. Shell Programming and Scripting

How to read contents of a file into variable :(

My file is in this format : username : student information : default shell : student ID Eg : joeb:Joe Bennett:/bin/csh:1234 jerryd:Jerry Daniels:/bin/csh:2345 deaverm: Deaver Michelle:/bin/bash:4356 joseyg:Josey Guerra:/bin/bash:8767 michaelh:Michael Hall:/bin/ksh:1547 I have to... (1 Reply)
Discussion started by: dude_me5
1 Replies

6. Shell Programming and Scripting

script to read the contents of a file and print

Hi, Need help in writing a script to read the contents of this file test Test 00a 00b 00c 00d 00e 00f where it need to read each line to give a display such as form meta from dev 00a , config=Striped; add dev 00b:00f to meta 00a Can any one help me in writing this script (2 Replies)
Discussion started by: praveen1516
2 Replies

7. Shell Programming and Scripting

Read contents from a file

Hi Friends, I am new to this forum. Just struck up with a logic. I have a csv file seperated by ":" (colons). This csv file contains hostname and groups as follows: HOSTNAME:VT Group SGSGCT2AVPX001:Team1 SGSGCT2AVPX003:Team2 SGSGCT2AVPX005:Team2 PHMNCTTAVPX001:Team3 I want to... (2 Replies)
Discussion started by: dbashyam
2 Replies

8. Shell Programming and Scripting

Read contents of the file and print

AT ---------- 0 Elapsed: 00:00:00.02 SO ---------- 0 Elapsed: 00:00:00.01 SE ---------- 0 Elapsed: 00:00:00.01 CR ---------- (4 Replies)
Discussion started by: sandy1028
4 Replies

9. Shell Programming and Scripting

how to read the contents of a file using PERL

Hi My requirement is to read the contents of a fixed length file and validate the same. But am not able to read the contents of the file and when i tried it to print i get <blank> as an output... I used the below satatements for printing the contents ... (3 Replies)
Discussion started by: meva
3 Replies

10. Shell Programming and Scripting

Read File and use contents to rename another

Hello guys, thank God that I found this forum. I hope that someone can help me because I don't have any idea on how to start it. I know that for some of you this is a very simple task but I'm not as advance on shell scripting like many people out there. I got this file with a permanent... (10 Replies)
Discussion started by: Shark Tek
10 Replies
Login or Register to Ask a Question