tell

[機能]

  ハンドルに結合されたファイルポインタの現在位置を得ます.失敗すると,-1を返します.

[形式]
#include <sys/types.h>
#include <unistd.h> 

long tell(int handle)
	handle : ファイルハンドル		
[使用例]

  1. lseekにより,同じデータを2度読み込みます
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    int main()
    {
    	double x1 = 10.5;
    	double x2;
    	long k1 = 21;
    	long k2,k3,off;
    	int disk;
    	char *buf;
    /*
         ディスクへの出力
    */
    	disk = open("data", O_WRONLY|O_CREAT, S_IREAD);
    
    	buf  = (char *)(&x1);
    	write(disk, buf, 8);
    
    	buf = (char *)(&k1);
    	write(disk, buf, 4);
    
    	close(disk);
    /*
         ディスクからの入力
    */
    	disk = open("data", O_RDONLY);
    
    	buf  = (char *)(&x2);
    	read(disk, buf, 8);
    	off = tell(disk);
    	printf("offset %ld\n",off);
    
    	buf = (char *)(&k2);
    	read(disk, buf, 4);
    	off = tell(disk);
    	printf("offset %ld\n",off);
    
    	printf("x2 %5.1lf k2 %3ld\n",x2,k2);
    
    	off = lseek(disk, 8, SEEK_SET);     /* ポインタの移動 */
    	printf("offset %ld\n",off);
    
    	buf = (char *)(&k3);
    	read(disk, buf, 4);
    
    	printf("k3 %3ld\n",k3);
    	off = tell(disk);
    	printf("offset %ld\n",off);
    
    	close(disk);
    
    	return 0;
    }
    			
    (出力)
    offset 8
    offset 12
    x2  10.5 k2  21
    offset 8
    k3  21
    offset 12			
[参照]

fseek, lseek

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引