C/File/File Content Search
Содержание
File content seek
<source lang="cpp">
- 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;
}
</source>
Reposition stream"s pointer indicator: how to use fseek
<source lang="cpp">
- 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">
- 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;
}
</source>
Seek a byte in file
<source lang="cpp">
- 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;
}
</source>
Seek array element in a file
<source lang="cpp">
- 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;
}
</source>