Установка указателя на начало файла



void rewind (FILE *stream);

Функция rewind() перемещает указатель положения в файле на начало указанного потока. Она также сбрасывает флаги конца файла и ошибки, связанные со stream.

 

Установка указателя в произвольное место файла

int fseek (FILE *stream, long offset, int origin)

Функция fseek() устанавливает указатель положения в файле, связанном со stream, в соответствии со значениями offset и origin.

Аргумент offset – это выраженный в байтах сдвиг от позиции, определяемой origin, до новой позиции.

Аргумент origin может принимать следующие значения:

0 – начало файла;

1 – текущая позиция;

2 – конец файла.

В случае успеха fseek() возвращает 0. Ненулевое значение означает неудачу. С помощью fseek() можно переместить указатель положения в любую точку внутри файла и даже за его пределы после конца файла.

 

Пример

#include <stdio.h>

#include <string.h>

int main()

{

FILE *S1;

char a='a';

float b=3.456;

char c[]="bc";

int d;

char e[5];

 

S1 = fopen("S.txt", "w+");

fputc(a,S1);      

fputc('\n',S1);    

fprintf(S1,"%f",b); 

fputs(c,S1);

fputs("\ndefgh",S1);

rewind(S1);

fwrite(c,sizeof(char),2,S1);

fwrite(c,sizeof(char),2,S1);

 

printf("%d\n",fgetc(S1));

fseek(S1, 0, 6);

fscanf(S1,"%d",&d);

printf("%d\n",d);

fgets(e,4,S1);

printf("%s\n",e);

fread(e,sizeof(char),5,S1);

printf("%s\n",e);

fclose(S1);

return 0;

}

 

В таблице 4.2 приведены результаты выполнения некоторых команд работы с файлами в языке С.

Таблица 4.2

Примеры работы некоторых функций работы с файлами в языке С

Функция   Состояние файла S.txt
fputc(a, S1);      
fputc('\n', S1);     a ˆ
fprintf(S1, "%f", b); a 3.456000ˆ
fputs(c, S1); a 3.456000bcˆ
fputs("\ndefgh", S1); a 3.456000bc defghˆ
rewind(S1); 3.456000bc defgh
fwrite(c,sizeof(char), 2, S1); bc .456000bc defgh
fwrite(c,sizeof(char), 2, S1); bcbc 56000bc defgh
printf("%d\n", fgetc(S1)); Результат: 52 //соответствует коду числа «4». // Если необходимо распечатать сам символ printf("%c\n",fgetc(S1));   bcbc4 6000bc defgh
fscanf(S1,"%d", &d); d=56000   bcbc456000 c defgh
fgets(e, 4, S1); Считывание будет выполнено до символа перевода строки, который также будет занесен в строку e. В конце строки fgets автоматически дописывает символ конца строки. e[0]=b e[1]=c e[2]=’\n’ e[3]=’\0’ e[4]=-не изменяется   bcbc456000bc efgh
fread(e, sizeof(char), 5, S1); Команда не заносит признак конца строки в массив при считывании, также функция не прерывается при встрече символа перевода строки ‘\n’. e[0]=d e[1]=e e[2]=f e[3]=g e[4]=h   bcbc456000bc defghˆ

 

 

FILE* term;

term=fopen("/dev/pts/0", "w+");

fprintf (term, "%d\n", q);

printf("aaa=%c\n",fgetc(term));

 

 

Перекодировка текстовых файлов на языке shell

Shell интерпретирует большое число операций, работающих со строками. Эти операции часть используются в программах так как все переменные, воспринимаемые shell являются строками. Существует много вариантов реализации такой обработки, например, использование команды expr. В таблице 4.3 приведены примеры иного подхода к обработке строковых данных – использование подмножества операций подстановки параметров ${str}.

Таблица 4.3


Дата добавления: 2020-01-07; просмотров: 303; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!