Установка указателя на начало файла
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); | aˆ |
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!