Incompatible data type fpos_t in C


 
Thread Tools Search this Thread
Top Forums Programming Incompatible data type fpos_t in C
# 1  
Old 06-28-2016
Incompatible data type fpos_t in C

This is from a program I wrote over in 1998 that I am trying to compile on a linux machine:
Code:
void write_line (FILE *fp, int rec_no, line_rec *arec)
{
   fpos_t woffset;
   woffset = (rec_no - 1) * sizeof(line_rec);
   fsetpos(fp,&woffset);
   fwrite(arec,sizeof(line_rec),1,fp);
}

On the line starting with "woffset =" I get
Code:
reclay.c:436: error: incompatible types in assignment

What do I need to do to get woffset to calculate?
TIA
# 2  
Old 06-28-2016
From man fsetpos:

Code:
       The fgetpos() and fsetpos() functions are alternate interfaces  equivaâ
       lent  to ftell() and fseek() (with whence set to SEEK_SET), setting and
       storing the current value of the file offset into or  from  the  object
       referenced by pos.  On some non-UNIX systems, an fpos_t object may be a
       complex object and these routines may be the only way to portably repoâ
       sition a text stream.

So you are playing with fire by assuming that fpos_t is an integer.

I recommend fseek instead:
Code:
void write_line(FILE *fp, int rec_no, line_rec *arec)
{
        long woffset = (rec_no - 1) * sizeof(line_rec);
        fseek(fp, woffset, SEEK_SET);
        fwrite(arec, sizeof(line_rec), 1, fp);
}

These 2 Users Gave Thanks to Corona688 For This Post:
# 3  
Old 06-28-2016
Thank you!! It's been years since I did anything in C.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

help with data type sizes

i'm using a C program and running it on a linux server, i got 2 adressess of 2 variables, and 2 addresses of 2 chars, and compared it. and got the size of a int and the size of a char. why is a size of a int (4 bytes) bigger then the size of a char (1 byte)? also if i do &a-&b i get 1, but if i... (30 Replies)
Discussion started by: omega666
30 Replies

2. Web Development

Data type to use for prices with commas

Hi everybody, I`m very new with PHP and Databases and I having the follow issue with prices data.. The original information is in CSV files. The prices have formatted with commas and dots as follow: 12,300.99 -->(thousands separated by commas) 3,500.25 -->(thousands separated... (10 Replies)
Discussion started by: cgkmal
10 Replies

3. Programming

gcc 4.3.2 accept sys call warrning incompatible pointer type

Hi all, this warning is driving me nuts. I use -pedantic with -Wall and -Werror so this needs to be fixed. BUILD: GNU-Linux-x86 Any ideas? struct sockaddr_in server_addr; int addr_len = sizeof (server_addr); fd = accept(link->socket_fd, (struct sockaddr_in *)... (2 Replies)
Discussion started by: personificator
2 Replies

4. SCO

Error: Value too large for defined data type

Hi all, I have this problem in one of the SCO UNIXWare 7.1.4. We have an application which is working on hundreds of machines. When we try to install the same application on a new machine, the executable/binary gives the following error and exits... "xxx startup failure: Value too large for... (1 Reply)
Discussion started by: chava01
1 Replies

5. Shell Programming and Scripting

Perl data type checking

I am using perl 5.8.0. I need to check some values to see it they are floats. Our system does not have Data::Types so I can't use is_float. Is there something else that I can use? The only thing in Data is Dump.pm. I am not allowed to download anything to our system so I have to use what I have.... (3 Replies)
Discussion started by: ajgwin
3 Replies

6. Shell Programming and Scripting

Does KSH support data type conversion?

Hello,everyone here. I'm coding with KSH to achieve exploring the disk space and judging whether it closes to overflow.But It seems that no one way to convert a string variable to integer. df | read A B C D E F G H I J K L print ${L} Can I convert L to integer type? Thanks for... (2 Replies)
Discussion started by: joshuaduan
2 Replies

7. AIX

Value too large to be stored in data type???

Hello, I get this message : "Value too large to be stored in data type" when I try to open a 3Gb file. Can someone helps me to resolve the problem. Thank you very much (5 Replies)
Discussion started by: limame
5 Replies

8. Programming

data type limitation

I am writing some code to do analysis on the file system (HP-UX 11.11). I am using stat(..) to get file information. My problem is that the file-size may exceed the data types defined in 'sys/stat.h' & 'sys/types.h' respectively. Thus file-sizes in the Giga-byte range are not read correctly.... (2 Replies)
Discussion started by: ALTRUNVRSOFLN
2 Replies

9. Programming

time_t data type-- what does start +1 mean?

Hi, I am trying to understand an very old C program. .... time_t start, end; ptr = localtime(&start); ... fprintf(out, "%-35s 01 %5s %2s %10d 1 5 /tty/M%d/%02d %24s", buffer3, job, ver, start, mach_num,atoi(buffer), asctime(ptr)); fprintf(out, "%-35s 03 %5s %2s %10d 1 5... (9 Replies)
Discussion started by: whatisthis
9 Replies

10. Programming

FILE data type

Hi all, Can anyone tell me a little about the datatype FILE, which represents stream. What does its structure look like, and in which header file is it defined and so on... Ex : FILE *fp ; fp = fopen("filename", "w") ; (6 Replies)
Discussion started by: milhan
6 Replies
Login or Register to Ask a Question