26

Re: Программы на языке C#

fseek.c
   Эта простая программа на языке Си показывает, как
   использовать функции ftell(), fseek() и rewind() для
   управления текущей позицией файла.
**********************************************************/
#include <stdio.h>
void main( void )
{
  char     char_Data;
  FILE *   InputOutputFilePtr;
  long int NumberOfBytesFromBeginningOfFile;

  InputOutputFilePtr=fopen("a:\\char.dat","rt+");

  char_Data = fgetc( InputOutputFilePtr );
  putchar( char_Data );

  char_Data = fgetc( InputOutputFilePtr );
  putchar( char_Data );

  NumberOfBytesFromBeginningOfFile =
    ftell( InputOutputFilePtr );

  char_Data = fgetc( InputOutputFilePtr );
  putchar( char_Data );

  fseek( InputOutputFilePtr,
         NumberOfBytesFromBeginningOfFile, 0);

  char_Data = fgetc( InputOutputFilePtr );
  putchar( char_Data );

  fseek( InputOutputFilePtr,
         NumberOfBytesFromBeginningOfFile, 0);

  fputc('e',InputOutputFilePtr);

  fseek( InputOutputFilePtr,
         NumberOfBytesFromBeginningOfFile, 0);

  char_Data = fgetc( InputOutputFilePtr );
  putchar( char_Data );

  rewind( InputOutputFilePtr );

  char_Data = fgetc( InputOutputFilePtr );
  putchar( char_Data );
}

Поделиться

27

Re: Программы на языке C#

getwputw.c
   Эта простая программа на языке Си использует функции
   getw() и putw() для работы с двоичным файлом.
   ***********************************************************/

#include <stdio.h>
#include <stdlib.h>

#define TWENTY 20

int main( void )
{
  int    An_int,
         offset,
         ArrayOfTWENTY_ints[TWENTY];
  FILE * InputFilePtr;

  InputFilePtr = fopen( "a:\\integer.dat", "wb" );

  if( !InputFilePtr ) {

    printf("The file integer.dat could not be found.");
    exit( EXIT_FAILURE );
  }


  for( offset = 0; offset < TWENTY; offset++ ) {

    ArrayOfTWENTY_ints[ offset ] = offset + 1;
    putw(ArrayOfTWENTY_ints[ offset ], InputFilePtr);
  }


  fclose( InputFilePtr );

  InputFilePtr = fopen( "a:\\integer.dat", "rb" );

  if( !InputFilePtr ) {

    printf("The file integer.dat could not be found.");
    exit( EXIT_FAILURE );
  }

  An_int = getw( InputFilePtr );

  while( !feof(InputFilePtr) ) {

    printf("%3d",An_int);
    An_int = getw( InputFilePtr );
  }

  return( EXIT_SUCCESS );
}

Поделиться

28

Re: Программы на языке C#

printf.c
   Эта простая программа на языке Си демонстрирует
   некоторые из разнообразных возможностей форматирования
   и преобразования данных функции printf(), прототип
   которой задан в файле stdio.h.
   Copyright (c) Chris H. Pappas и William H. Murray, 1995
***********************************************************/

#include <stdio.h>

void main( void )
{
  int    int_Data           =   5555                              ;

  double double_Data        =   1.4578109                         ;

  char   c                  =   'c'                               ,
             SampleString_1[]   =   "The fundamental things apply as ",
             SampleString_2[]   =   "time goes bye..."                ;


  /* ============== автоматические преобразования типов =============== */

  /* Строка номер 1: выводит символ c */

  printf("\nLine Number %2d: %c",1,c);


  /* Строка номер 2: выводит ASCII-код символа c */

  printf("\nLine Number %2d: %d",2,c);


  /* Строка номер 3: выводит символ, ASCII-код которого равен 90 */

  printf("\nLine Number %2d: %c",3,90);


  /* Строка номер 4: выводит int_Data в виде восьмеричного значения */

  printf("\nLine Number %2d: %o",4,int_Data);


  /* Строка номер 5: выводит шестнадцатеричное значение в младшем регистре */

  printf("\nLine Number %2d: %x",5,int_Data);


  /* Строка номер 6: выводит шестнадцатеричное значение в старшем регистре */

  printf("\nLine Number %2d: %X",6,int_Data);




  /* ======= возможности форматирования и преобразования данных ====== */

  /* Строка номер 7: минимальная ширина 1                      */

  printf("\nLine Number %2d: %c",7,c);


  /* Строка номер 8: минимальная ширина 5, выравнивание вправо  */

  printf("\nLine Number %2d: %5c",8,c);


  /* Строка номер 9: минимальная ширина 5, выравнивание влево   */

  printf("\nLine Number %2d: %-5c",9,c);


  /* Строка номер 10: автоматически определяемая ширина строки = 33    */

  printf("\nLine Number %d: %s",10,SampleString_1);


  /* Строка номер 11: автоматически определяемая ширина строки = 17    */

  printf("\nLine Number %d: %s",11,SampleString_2);


  /* Строка номер 12: ширина 5 задана вместо автоматически определяемого значения 33 */

  printf("\nLine Number %d: %5s",12,SampleString_1);


  /* Строка номер 13: минимальная ширина 38, выравнивание вправо */

  printf("\nLine Number %d: %38s",13,SampleString_1);


  /* Строка номер 14: минимальная ширина 38, выравнивание влево */

  printf("\nLine Number %d: %-38s",14,SampleString_2);


  /* Строка номер 15: выводит int_Data с шириной, по умолчанию равной 4 */

  printf("\nLine Number %d: %d",15,int_Data);


  /* Строка номер 16: выводит int_Data со знаком   */

  printf("\nLine Number %d: %+d",16,int_Data);


  /* Строка номер 17: задана ширина 3 вместо автоматической 4   */

  printf("\nLine Number %d: %3d",17,int_Data);


  /* Строка номер 18: минимальная ширина 10, выравнивание вправо */

  printf("\nLine Number %d: %10d",18,int_Data);


  /* Строка номер 19: минимальная ширина по умолчанию 1, выравнивание влево */

  printf("\nLine Number %d: %-d",19,int_Data);


  /* Строка номер 20: выравнивание вправо с начальными нулями */

  printf("\nLine Number %d: %010d",20,int_Data);


  /* Строка номер 21: использование числа цифр, заданного по умолчанию */

  printf("\nLine Number %d: %f",21,double_Data);


  /* Строка номер 22: минимальная ширина 20, выравнивание вправо */

  printf("\nLine Number %d: %20f",22,double_Data);


  /* Строка номер 23: выравнивание вправо с начальными нулями */

  printf("\nLine Number %d: %020f",23,double_Data);


  /* Строка номер 24: минимальная ширина 20, выравнивание влево */

  printf("\nLine Number %d: %-20f",24,double_Data);


  /* Строка номер 25: выравнивание влево с конечными нулями */

  printf("\nLine Number %d: %-020f",25,double_Data);


  /* Строка номер 26: минимальная ширина 19, выводит все 19 символов */

  printf("\nLine Number %d: %19.19s",26,SampleString_1);


  /* Строка номер 27: выводит первые 2 символа         */

  printf("\nLine Number %d: %.2s",27,SampleString_1);


  /* Строка номер 28: выводит два символа, выравнивание вправо  */

  printf("\nLine Number %d: %19.2s",28,SampleString_1);


  /* Строка номер 29: выводит два символа, выравнивание влево   */

  printf("\nLine Number %d: %-19.2s",29,SampleString_1);


  /* Строка номер 30: использует параметры форматирования */

  printf("\nLine Number %d: %*.*s",30,19,6,SampleString_1);


  /* Строка номер 31: ширина 10, 8 символов после '.'     */ 

  printf("\nLine Number %d: %10.8f",31,double_Data);


  /* Строка номер 32: ширина 20, 2; выравнивание вправо    */

  printf("\nLine Number %d: %20.2f",32,double_Data);


  /* Строка номер 33: 4 позиции после точки, выравнивание влево */

  printf("\nLine Number %d: %-20.4f",33,double_Data);


  /* Строка номер 34: 4 позиции после точки, выравнивание вправо */

  printf("\nLine Number %d: %20.4f",34,double_Data);


  /* Строка номер 35: ширина 20, экспоненциальная запись   */

  printf("\nLine Number %d: %20.2e",35,double_Data);
}

Поделиться

29

Re: Программы на языке C#

/***********************************************************
   randomac.c
   Эта простая программа на языке Си создает структуру для
   произвольного доступа к файлу, используя функции fread(),
   fseek() и fwrite(), прототипы которых заданы в файле
   stdio.h.
   Copyright (c) Chris H. Pappas и William H. Murray, 1995
***********************************************************/

#include <stdio.h>
#include <string.h>

#define ONE 1
#define FORTY 40
#define DESCRIPTION_LENGTH 81
#define IN_STOCK 1
#define OUT_OF_STOCK 0
#define NUMBER_OF_RECORDS_TO_READ 1

typedef struct product {

    int   ProductID,
          IsAvailable;
    float Price;
    char  Description[ DESCRIPTION_LENGTH ];

} PRODUCT;

void main( void )
{
  FILE *  InputFilePtr;
  PRODUCT CurrentProduct;
  int     index,
          ProductToSearchFor;
  long    FileOffset;

  InputFilePtr = fopen( "a:// product.fil","w+" );

  for(index = ONE; index <= FORTY; index++) {

    CurrentProduct.ProductID   =  index;
    CurrentProduct.IsAvailable =  OUT_OF_STOCK;

    fwrite( &CurrentProduct, sizeof(PRODUCT), 1, InputFilePtr);
  }

  printf("Enter Product ID: ");
  scanf("%d", &ProductToSearchFor);

  FileOffset = ( ProductToSearchFor - 1) * sizeof( PRODUCT );

  fseek( InputFilePtr, FileOffset, 0 );

  fread( &CurrentProduct, sizeof(PRODUCT), NUMBER_OF_RECORDS_TO_READ,
          InputFilePtr );

  fclose( InputFilePtr );
}

Поделиться

30

Re: Программы на языке C#

/***********************************************************
    setbuf.c
    Эта простая программа на языке Си показывает, как задать в
   программе собственный буфер для стандартного потока вывода
   сообщений об ошибках stderr.
   Copyright (c) Chris H. Pappas и William H. Murray, 1995
***********************************************************/

#include <stdio.h>

char UserDefinedOutputBuffer[ BUFSIZ ];/* BUFSIZ в stdio.h */

void main( void )
{
  setbuf( stderr, UserDefinedOutputBuffer );

  fputs ( "Any information can now be sent to the\n",stderr );

  fputs ( "\"UserDefinedOutputBuffer.\"\n"          ,stderr );

  fflush( stderr );
}

Поделиться

31

Re: Программы на языке C#

/***********************************************************
   setvbuf.c
   Эта простая программа на языке Си показывает, как задавать
   свой буфер ввода-вывода при помощи функции setvbuf(),
   прототип которой задан в файле stdio.h.
   Copyright (c) Chris H. Pappas и William H. Murray, 1995
***********************************************************/

#include <stdio.h>

#define USER_DEFINED_BUFFER_SIZE 256

void main( void )
{
   FILE  *InputFilePtr,
         *OutputFilePtr;
   float  FloatData;
   char   ProgramControlledBuffer[ USER_DEFINED_BUFFER_SIZE ];

   InputFilePtr  = fopen( "a:\\test.dat"  , "r" );
   OutputFilePtr = fopen( "a:\\outfil.dat", "w" );

   if( setvbuf(InputFilePtr, ProgramControlledBuffer,
               _IOFBF, USER_DEFINED_BUFFER_SIZE) != 0 )
        printf("InputFilePtr buffer allocation error\n");

   else
        printf("InputFilePtr buffer created\n");


   if ( setvbuf(OutputFilePtr, NULL, _IOLBF, 256) != 0 )
        printf("OutputFilePtr buffer allocation error\n");

   else
        printf("OutputFilePtr buffer created\n");


   while( fscanf( InputFilePtr,"%f",&FloatData ) != EOF )
        fprintf(OutputFilePtr,"%f\n",FloatData);


   fclose( InputFilePtr  );
   fclose( OutputFilePtr );
}

Поделиться