C/File/File Content Search
Содержание
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;
}