Sponsored Content
Full Discussion: help with fseek
Top Forums Programming help with fseek Post 302344363 by jim mcnamara on Sunday 16th of August 2009 06:41:23 AM
Old 08-16-2009
read the whole file into a buffer, then print each character in the buffer back to front:
Code:
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>

void backward(FILE *in)
{
	size_t len=0;
	char *p=NULL;
	int i=0;
	struct stat st;
	
	fstat(fileno(in), &st);
	len=st.st_size;
	p=calloc(1, len + 1);
	rewind(in);
	fread(p, 1, len, in);
	for(i=len ; i; i--)
		printf("%c\n", p[i]);
	free(p);	
}

there is no error checking in this code...
 

3 More Discussions You Might Find Interesting

1. Programming

error when using fseek() function

The errors EBADF & ESPIPE occur at this fseek call. Does anybody know how to solve this problem? Thanks in advance. toFileStream=fdopen(localFileDes,"ra+"); if(fseek(toFileStream, 0, SEEK_END)!=0){ if(errno==EBADF) printf("errno==EBADF\n"); if(errno==EINVAL)... (3 Replies)
Discussion started by: ivancheung
3 Replies

2. Programming

q on fseek() & ftell() + tga files

In determining the true file size of a .tga file is the fseek(fptr,0,SEEK_END); file_size = ftell(fptr); combination reliable ? The reason Im asking is because the value of file_size is in agreement with doing a wc -c mytga.tga however when I get the value of the extension... (2 Replies)
Discussion started by: JamesGoh
2 Replies

3. Programming

help with reading a binary file and fseek

this is my code and no matter what record number the user enters i cant get any of the records fields to read into the structure acct. What am i doing wrong? #include <stdio.h> typedef struct { char name; int number; float balance; } acct_info_t; int main (int... (0 Replies)
Discussion started by: bjhum33
0 Replies
DYNARR(3pub)						       C Programmer's Manual						      DYNARR(3pub)

NAME
dynarr, dynarr_init, dynarr_resize, dynarr_free - simple dynamic arrays SYNOPSIS
#include <publib.h> void dynarr_init(struct dynarr *da, size_t elsize); int dynarr_resize(struct dynarr *da, size_t newsize); void dynarr_free(struct dynarr *da); DESCRIPTION
These functions make it easier to use dynamic arrays, i.e., arrays that are allocated with malloc(3) and resized with realloc(3). Below is a typical code fragment for implementing a dynamic array that is resized as more input is read. char *p, *line; size_t alloc, len; len = 0; alloc = 1024; if ((line = malloc(alloc)) == NULL) abort(); while (fgets(line + len, alloc-len, stdin) != NULL) { len = strlen(line); alloc += 1024; if ((p = realloc(alloc)) == NULL) abort(); alloc = p; } (The error handling is intentionally simplified.) Below is the above fragment with the dynarr(3). struct dynarr da; dynarr_init(&da); while (fgets((char *)da.data + da.used, da.alloc-da.len, stdin) != NULL) { da.used = strlen(da.data); if (dynarr_resize(&da, da.alloc + 1024) == -1) abort(); } The code is a bit simpler, and all the memory allocation details and most of the error checking code is hidden away. The dynamic array is represented by a struct dynarr: struct dynarr { void *data; size_t alloc, used; }; The interface to the dynamic allocation has intentionally been made unopaque. dynarr_init initializes a struct dynarr to be an empty array, dynarr_resize sets its size to be newsize, and dynarr_free frees the array (it will become an empty array again). RETURNS
dynarr_resize returns -1 if it failed, 0 if it succeeded. It does not change the array in any way if it failed. SEE ALSO
publib(3), malloc(3), realloc(3), strdup(3) AUTHOR
Lars Wirzenius (lars.wirzenius@helsinki.fi) Publib C Programmer's Manual DYNARR(3pub)
All times are GMT -4. The time now is 09:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy