C/File/File Content Search

Материал из C\C++ эксперт
Версия от 10:22, 25 мая 2010; Admin (обсуждение | вклад) (1 версия: Импорт контента...)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

File content seek

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
  FILE *fp;
  if(argc!=3) {
    printf("Usage: SEEK filename byte\n");
    exit(1);
  }
  if((fp = fopen(argv[1], "rb"))==NULL) {
    printf("Cannot open file.\n");
    exit(1);
  }
  if(fseek(fp, atol(argv[2]), SEEK_SET)) {
    printf("Seek error.\n");
    exit(1);
  }
  printf("Byte at %ld is %c.\n", atol(argv[2]), getc(fp));
  fclose(fp);
  return 0;
}


Reposition stream"s pointer indicator: how to use fseek

#include <stdio.h>
int main ()
{
  FILE *file;
  file = fopen ("my.txt","w");
  
  fputs ("This is a line.", file);
  fseek (file, 19, SEEK_SET);
  
  fputs ("Hiiiiiiiiiiiii", file);
  fclose (file);
  return 0;
}


Search specified file for specified character

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
  FILE *fp;
  char ch;
  /* see if correct number of command line arguments */
  if(argc!=3) {
    printf("Usage: find <filename> <ch>\n");
    exit(1);
  }
  /* open file for input */
  if((fp = fopen(argv[1], "r")) == NULL) {
    printf("Cannot open file.\n");
    exit(1);
  }
  /* look for character */
  while((ch = fgetc(fp)) != EOF) {
    if(ch == *argv[2]) {
      printf("%c found", ch);
      break;
    }
  }  
  fclose(fp);
  return 0;
}


Seek a byte in file

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
  long loc;
  FILE *fp;
  /* see if filename is specified */
  if(argc != 2) {
    printf("File name missing.\n");
    exit(1);
  }
  if((fp = fopen(argv[1] , "rb"))==NULL) {
    printf("Cannot open file.\n");
    exit(1);
  }
  printf("Enter byte to seek to: ");
  scanf("%ld", &loc);
 
  if(fseek(fp, loc, SEEK_SET)) {
    printf("Seek error.\n");
    exit(1);
  }
  printf("Value at %ld = %d", loc, getc(fp));
  fclose(fp);
  return 0;
}


Seek array element in a file

#include <stdio.h>
#include <stdlib.h>
double d[10] = {
  1.23, 9.87, 2.23, 2.9, 0.97,
  1.45, 5.34, 10.0, 1.801, 5.875
};
int main(void)
{
  long loc;
  double value;
  FILE *fp;
  if((fp = fopen("myfile", "wb"))==NULL) {
    printf("Cannot open file.\n");
    exit(1);
  }
  /* write the entire array in one step */
  if(fwrite(d, sizeof d, 1, fp) != 1) {
    printf("Write error.\n");
    exit(1);
  }
  fclose(fp);
  if((fp = fopen("myfile", "rb"))==NULL) {
    printf("Cannot open file.\n");
    exit(1);
  }
  printf("Which element? ");
  scanf("%ld", &loc);
  if(fseek(fp, loc*sizeof(double), SEEK_SET)) {
    printf("Seek error.\n");
    exit(1);
  }
  fread(&value, sizeof(double), 1, fp);
  printf("Element %ld is %f", loc, value);
  fclose(fp);
  return 0;
}