C/File/File Content Search

Материал из C\C++ эксперт
Перейти к: навигация, поиск

File content seek

<source lang="cpp">

  1. include <stdio.h>
  2. 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;

}


      </source>


Reposition stream"s pointer indicator: how to use fseek

<source lang="cpp">

  1. 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;

}

      </source>


Search specified file for specified character

<source lang="cpp">

  1. include <stdio.h>
  2. 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;

}

      </source>


Seek a byte in file

<source lang="cpp">

  1. include <stdio.h>
  2. 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;

}


      </source>


Seek array element in a file

<source lang="cpp">

  1. include <stdio.h>
  2. 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;

}


      </source>