01-16-2010
The problem isn't fread, but what you expect of it. According to the man page
fread(3) it reads a certain amount of bytes from a file pointer, and copies them to a character array. It say nowhere that the target is cleared up front, or that it'll put a '\0' at the end, it leaves that to the programmer.
2 ways to solve this:
- memset(3) the array first
- fread returns the number of characters read. Put a '\0' behind that.
10 More Discussions You Might Find Interesting
1. Programming
Hi...
I am trying to read a binary data that have different types of messages of different lengths. I am using fread() but this functions needs the size and count to read the buffer from the file. I think this may cause that the buffer overlaps other messages.
Is there an alternative to read... (1 Reply)
Discussion started by: jlrodz
1 Replies
2. UNIX for Dummies Questions & Answers
I have a file that always generated in the system eg. /tmp/log.txt , it is generated by the application program , but this file should not be present in the system otherwise there are some program problem , I want to erase this file once the program has generate it , as I know , it can link to... (2 Replies)
Discussion started by: ust
2 Replies
3. Programming
Hi All,
These are the two ways i tried to read file but i getting work with second one not with the first.
char buf; // Defining space for buf
ctrlfnum = fopen(filename_arr.control_fname,"r");
1) n = fread(buf,sizeof(buf),1,ctrlfnum); ============== (not works)
2) n =... (4 Replies)
Discussion started by: arunkumar_mca
4 Replies
4. UNIX for Advanced & Expert Users
after hitting this command...on pressing r acts as a backspace character....
how to disable this function (5 Replies)
Discussion started by: bishweshwar
5 Replies
5. UNIX for Advanced & Expert Users
I know that Univ FileSystem stores all file data in the form of first few direct nodes followed by indirect nodes. But internally some systems implement where , a single block of 4096 isnt allocated alone a single block basis on physical drive, rather a large chunk of data is allocated and no. of... (1 Reply)
Discussion started by: GloriousDaisy
1 Replies
6. UNIX for Advanced & Expert Users
Hi,
I need to redirect internal internet requests to a auth client site siting on the gateway. Currently users that are authenticated to access the internet have there mac address listed in the FORWARD chain. All other users need to be redirected to a internal site for authentication.
Can... (1 Reply)
Discussion started by: mshindo
1 Replies
7. Programming
Hello All,
I tried to test a sample fread example to read a complete file
and the code is
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE * pFile;
long lSize;
char * buffer;
size_t result;
pFile = fopen ( "test.xml" , "rb" );
if (pFile==NULL) {fputs ("File... (11 Replies)
Discussion started by: quintet
11 Replies
8. UNIX for Dummies Questions & Answers
Hello everybody i need to erase a at job that i write.
I wrote
at 22
at>execute a command
at>Ctr + d
How do i erase this? I don`t wan`t to do this. I need to change something
when i pressed ctrl + d give a job number (2 Replies)
Discussion started by: enkei17
2 Replies
9. Programming
Hello,
I have a question about what happens when I copy the file which is being written by another process on Solaris 9/SPARC, UFS file system.
in particular, I want to know what happens while some process is reading the file using fread or mmap, another process try to write something on the... (4 Replies)
Discussion started by: wipe3out
4 Replies
10. Programming
Hello,
I am trying to read a text file into linked list, but always got the first and last records wrong.
1) The problem looks related to the initialization of the node temp with malloc(), but could not figure it out. No error/warning at compiling, though.
2) The output file is empty,... (10 Replies)
Discussion started by: yifangt
10 Replies
FREAD(3) Linux Programmer's Manual FREAD(3)
NAME
fread, fwrite - binary stream input/output
SYNOPSIS
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,
FILE *stream);
DESCRIPTION
The function fread() reads nmemb elements of data, each size bytes long, from the stream pointed to by stream, storing them at the location
given by ptr.
The function fwrite() writes nmemb elements of data, each size bytes long, to the stream pointed to by stream, obtaining them from the
location given by ptr.
For nonlocking counterparts, see unlocked_stdio(3).
RETURN VALUE
On success, fread() and fwrite() return the number of items read or written. This number equals the number of bytes transferred only when
size is 1. If an error occurs, or the end of the file is reached, the return value is a short item count (or zero).
fread() does not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3) to determine which occurred.
CONFORMING TO
C89, POSIX.1-2001.
SEE ALSO
read(2), write(2), feof(3), ferror(3), unlocked_stdio(3)
COLOPHON
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
GNU
2012-03-30 FREAD(3)