⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_cat.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
字号:
/* *  A test support function which performs a crude version of  *  "cat" so you can look at specific parts of a file. * *  $Id: test_cat.c,v 1.2 2002/08/02 00:53:21 joel Exp $ */#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <ctype.h>#include <assert.h>#include <pmacros.h>/* *  test_cat routine */unsigned char test_cat_buffer[ 1024 ];void test_cat(  char *file,  int   offset_arg,  int   length){  int            fd;  int            status;  int            is_printable = 0;  int            my_length;  int            i;  unsigned char  c;  int            count = 0;  off_t          offset = (off_t)offset_arg;  my_length = (length) ? length : sizeof( test_cat_buffer );  assert( my_length <= sizeof( test_cat_buffer ) );  fd = open( file, O_RDONLY );  if ( fd == -1 ) {    printf( "test_cat: open( %s ) failed : %s\n", file, strerror( errno ) );    rtems_test_exit( 0 );  }  for ( ;; ) {    status = lseek( fd, offset, SEEK_SET );    assert( status != -1 );    status = read( fd, test_cat_buffer, sizeof(test_cat_buffer) );    if ( status <= 0 ) {      if (!is_printable)        printf( "(%d)", count );      puts( "" );      break;    }    for ( i=0 ; i<status ; i++ ) {      c = test_cat_buffer[i];      if (isprint(c) || isspace(c)) {        if (!is_printable) {          printf( "(%d)", count );          count = 0;          is_printable = 1;        }        putchar(c);      } else {        is_printable = 0;        count++;      }    }    offset += status;  }  status = close( fd );  assert( !status );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -