Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Нет способа ограничить число символов при вводе, поэтому массив, адресуемый указателем str, может переполниться




Для чтения из стандартного потока stdin применяется функция

Символ \n копируется в строку, к концу строки добавляется нулевой байт \0. Возвращает при успехе указатель на str, иначе возвращает NULL. Строка str не изменяется, если ни один символ не прочитан и встретился конец файла.

Достигнут конец файла.

При выводе завершающий нулевой байт строки преобразуется в символ новой строки.

Для записи строки в стандартный выходной поток stdout применяется функция

Работа с файлом

fclose(f);

}

Проверка на конец файла
Каждый поток содержит индикатор конца файла, который хранится в структуре файла и устанавливается в ненулевое значение функцией чтения из файла при достижении конца файла.
Состояние потока определяется функцией:
int feof(FILE* file);
Возвращает 0, если конец файла не достигнут. При достижении конца файла содержимое последней прочитанной порции информации не определено.

Операции ввода-вывода
Ввод-вывод в файл можно осуществлять различными способами, в зависимости от поставленной задачи.

Работа со строками

int fputs(const char* str, FILE* stream);

Пишет строку str в поток stream, не включая завершающий нулевой байт. В случае удачи возвращает 0 (или ASCII-код последнего вводимого символа), иначе возвращает EOF.

int puts(char* str);

 

char* fgets(char* str, int size, FILE* stream);

Читает строку из потока stream в строку str, остановится: · прочитан size+1 символ;

· встретился символ новой строки;

 

char* gets(char* str);

 

Пример 18.1. Чтение из текстового файла
void ReadStringFile(FILE *in,
char* filename)
{char *str;
str=(char*)malloc (81);
if ((in = fopen(filename, "r"))!= NULL)
{
if (feof(in)) return;
fgets(str, 80, in);
do
{ puts(str);// При выводе распознает //специальные символы \n
fgets(str,80,in);
}
while (!feof(in));
fclose(in);
}
else
printf("Файл не открывается\n");
}

 

Пример 18.2. Создание текстового файла
void CreateStringFile(FILE *out,char* filename)
{int k;
char str[80];
out = fopen(filename,"w");
gets(str);
while(!feof(stdin))
{ fputs(str,out);
gets(str);// Не заносит в строку

//символ возврата каретки, Заносит \0
}
fclose(out); }

 

Пример 18.3. Текстовый файл input.txt содержит строки длиной не более 100 символов. Найти число строк, начинающихся с пробела.

int main()

{

int N = 0;

char *S = new char[101];

if ((FILE *f = fopen(”myfile.txt”, ”rt”))!= NULL)

{

while (fgets(S, 101, f)!= NULL)

if (S[0] == ’ ’) N++;

fclose(f);

}

cout << N;

return 0;

}

 

Символьный ввод-вывод

int fputc(int c, FILE* stream);
int putc(int c, FILE* stream);
Записывает символ c в поток stream и продвигает индикатор позиции на следующий символ. Перед записью в файл параметр c типа int преобразуется в тип unsigned char. При успехе возвращает c, в случае неудачи EOF (-1).
Функции идентичны, но putc определена обычно как макрос.

int fgetc(FILE* stream);
int getc(FILE* stream);
Работают аналогично fputc, но читают символ. В случае достижения конца файла возвращают EOF и устанавливают индикатор конца файла.
В консольном режиме значению EOF соответствует нажатие клавиш Ctrl+Z.

Функции
int getchar();
int putchar(int ch);
частные случаи функций getc и putc.

void ReadChFile(FILE *in, char* filename)
{int ch;
…………

do
{
ch = getc(in);
putc(ch,stdout);
}
while (ch!= EOF);

}

Форматированный ввод-вывод

int fprintf(FILE* stream,
const char* format,...);

Форматированный вывод в файл stream. Работает аналогично sprintf, в случае удачи возвращает число выводимых символов, иначе возвращает -1.

int printf(const char * формат, …)

 

int fscanf(FILE* stream, const char* format
[ адреса_переменных ],
... );
Форматированный ввод из файла stream, в случае успеха возвращает количество единиц прочитанных данных, иначе возвращает EOF.

int scanf(const char * формат,
[ адреса_переменных ],…)




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


Дата добавления: 2014-01-07; Просмотров: 298; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.