LINUX.ORG.RU

Помогите разделить число в Unix


0

0

Помогите! У меня в файл /.summa записывается число, ну например, 10 и мне нужно его разделить на 5 и записать результат в другой файл. Как это сделать. Кроме того в этом файле у меня содержаться ещё и текстовые записи, выглядит это так: 10 agi.report DATE: 08/13/01

Так вот 10 и есть число которое нужно разделить.


:) Здорово, Lucky!


Если в С, то

#include <stdio.h>

// ...

FILE *from, *to;
float digit;

fseek ( from, ... );
fscanf ( from, ..., &digit);

fseek ( to, ...);
fprintf ( to, ..., digit);

man fseek, fscanf, etc

murla
()

А, ну from и to открываются через from = fopen (...), например, так что еще man fopen, fclose

И в fprintf (...., digit/2.), конечно :)

murla
()

int number;

ifstream input ("/.summa");
input >> number;

ofstream output ("другой файл");
output << (number / 5);
(не проверено)

justme
()

вот так! ;)

#include <stdio.h>

int main ( int argc, char *argv[] )
{
  unsigned int i, nPos = ( argc > 1) ? atoi( argv[1]) : 0 ;
  float fDen = ( argc > 2) ? atof ( argv[2]) : 5 ;
  FILE *fIn = stdin, *fOut = stdout;
  int nIn, nnIn;
  float f;
  if ( fIn && fOut && nPos >= 0 && fDen != 0 ) {
        while( !feof( fIn ) ) {
          for ( i=nPos, nIn='1', nnIn=' '; i && (nIn = fgetc( fIn )) != EOF && nIn != '\n' && ( !(nIn == ' ' && nnIn != ' ') || i--) ; nnIn=nIn);
          if( nIn != '\n' && (nIn = fscanf( fIn, "%f", &f )) && nIn != EOF ) fprintf( fOut, "%f\n", f/fDen );
          while ( nIn != EOF && (nIn = fgetc( fIn )) != EOF && nIn != '\n' );
        }
        return 0;
  }
  return 1;
}

Lucky ★★
()

хе, откомпилял - не работает. ну тогда вот так:

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

int main ( int argc, const char *argv[] )
{
  unsigned int i, nPos = ( argc > 1 ) ? atoi( argv[1] ) : 0 ;
  double fDen = ( argc > 2 ) ? atof ( argv[2] ) : 5 ;
  FILE *fIn = stdin, *fOut = stdout;
  int nIn, nnIn;
  float f;
  if ( fIn && fOut && nPos >= 0 && fDen != 0 ) {
        while( !feof( fIn ) ) {
          for ( i=nPos, nIn='1', nnIn=' '; i && (nIn = fgetc( fIn )) != EOF && nIn != '\n' && ( !(isspace( nIn ) && !isspace ( nnIn ) ) || i--) ; nnIn=nIn);
          if( nIn != '\n' && (nIn = fscanf( fIn, "%f", &f )) && nIn != EOF ) fprintf( fOut, "%f\n", f/fDen );
          while ( nIn != '\n' && nIn != EOF && (nIn = fgetc( fIn )) != EOF );
        }
        return 0;
  }
  return 1;
}

Lucky ★★
()

Для таких вещей "в Unix" применяется awk.

vodz ★★★★★
()

Например на sh:

#!/bin/sh filename = srcfile srcvalue = `cat $filename | cut -f1 -d" "` echo $[$srcvalue / 2]

см. также man bash; man cut; man cat

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.