Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Тандартне введеннЯ/виведеннЯ




Џри запуску будь-Яко» програми автоматично вґдкриваютьсЯ вґдразу три файла:

- файл стандартного вводу. ‰ого вказґвник назива№тьсЯ stdin;

- файл стандартного виводу. ‰ого вказґвник назива№тьсЯ stdout;

- файл стандартного виводу помилок. ‰ого вказґвник назива№тьсЯ stderr.

Џри роботґ з файлами ми можемо використовувати цґ вказґвники, щоб направлЯти данґ в стандартнґ потоки, в Яких за замовчуваннЯм введеннЯ йде з клавґатури, а виведеннЯ - на екран. Ќаприклад, щоб ввести рЯдок з клавґатури, можна застосувати функцґю fgets () у виглЯдґ:

fgets(s, maxline, stdin);

а длЯ виведеннЯ рЯдка на экран С функцию fputs() у виглЯдґ:

fputs(s, stdout);

‡ наведеного ранґше перелґку функцґй, обслуговуючих введеннЯ/виведеннЯ, ми бачили, що ґснують функцґ» getc (fp), putc (c, fp), Якґ вґдповґдно вводЯть один символ з файлу з вказґвником fp ґ пишуть один символ в файл з вказґвником fp. џкщо замґсть вказґвника fp, Який ма№ тип FILE, в цґ функцґ» помґстити вказґвники стандартного потоку, то вони стануть вґдповґдно вводити один символ з клавґатури ґ виводити його на екран. ‚иЯвлЯ№тьсЯ, що ранґше застосовуванґ нами в прикладах функцґ» getchar (), putchar () пов'Язанґ в файлґ stdio.h зґ стандартними потоками наступним чином:

#define getchar() getc(stdin)

#define putchar() putc(stdout)

’ому, пґдключивши файл stdio.h до сво№» програми, ми спокґйно працювали з цими функцґЯми, а фактично - з символьними константами.

“ мовґ ‘ стандартний ввґд можна перенаправлЯти на введеннЯ з файлу (ранґше ми бачили, що це може робити функцґЯ freopen ()): Якщо деЯка програма з ґм'Ям p1.exe використову№ функцґю getchar (), то за допомогою виконаннЯ командного рЯдка:

p1.exe < anyFILE1

ми отрима№мо введеннЯ не з клавґатури, а з файлу anyFILE1. Љомандний рЯдок в ‘ можна виконати за допомогою системно» функцґ» system () у виглЯдґ:

system("P1.EXE < ANYFILE1");

Џричому символи повиннґ бути в верхньому регґстрґ, так Як викону№тьсЯ команда DOS. ’очно так само, Як ґ длЯ введеннЯ, можна перенаправити стандартний вивґд у файл. џкщо ма№мо програму p2.exe, Яка використову№ стандартне виведеннЯ, то за допомогою виконаннЯ командного рЯдка:

p2.exe > anyFILE2

ми отрима№мо виведеннЯ у файл anyFILE2.

Риклади програм перенаправленнЯ введеннЯ/виведеннЯ

Ќаведемо приклади програм перенаправленнЯ введеннЯ/виведеннЯ. ’аких програм буде двґ: одна - викликане, в Якґй буде вґдбуватисЯ стандартний ввґд / вивґд, а друга - зухвала, Яка буде запускати першу з перенаправленнЯм вводу / виводу.

‚иклика№тьсЯ програма, Яка вводить данґ з клавґатури ґ виводить результат на екран, приведена в лґстингу 3.

Истинг 3

//--------------------------------------------------------------------

# pragma hdrstop

# include <stdio.h>

# include <conio.h>

# define eof 10

/* ’ут введено ознака кґнцЯ файлу: код 10 через правий <Alt> +10 на правґй клавґатурґ. Љод 27 (клавґша <Esc>) вводити не можна: Якщо застосувати зухвалу програму, Яка за допомогою функцґ» system () буде перенаправлЯти ввґд / вивґд, то зухвала програма, зависне. Љодом 10 (натисканнЯм <Enter>) треба завершувати файл, з Якого будуть братисЯ данґ длЯ введеннЯ, виходЯчи ґз специфґки роботи функцґ» getchar () */

# define no 0

# define yes 1

// ------------------------------------------------ --------------------

int main () {

int i = 0;

char m [1000];

/* Џґдрахунок кґлькостґ символґв, слґв ґ рЯдкґв, введених з клавґатури */

int c;

int nc, nl, nw, in;

nc = nl = nw = 0;

in = no;

while ((c = getchar ())! = eof)

/* EOF визначений у бґблґотецґ stdio.h Як # define EOF -1 */ {

m [i] = c;

i++;

m [i] = '\0';

nc++;

if (c == '\ n')

nl + +;

if (c == '' || c == '\n' || c == '\t')

in = no; // перебува№мо поза слова

else if (in == no) // потраплЯ№мо в слово ґ зарахову№мо його {

in = yes;

nw + +;

}

} // While

printf ("Entered from FILE =% s \ n", m);

printf ("Strings.... =%d \n", nl);

printf ("Words...... =%d \n", nw);

printf ("Charecters. =%d \n", nc);

getch ();

}

‚икликаюча програма, що перенаправлЯ№ стандартне введеннЯ/виведеннЯ, наведена у лґстингу 4.

Истинг 4

/ / ------------------------------------------------ --------------------

# include <stdio.h>

# include <stdlib.h> // длЯ system ()

# include <conio.h> // длЯ getch ()

# pragma hdrstop

/ / ------------------------------------------------ --------------------

# pragma argsused

int main (int argc, char * argv []) {

/* Џрограма PROJECT3_INPOUTREDIRECT.EXE почне виконуватисЯ ґ вводити данґ з файлу PEREVIRKA.TXT */

system ("PROJECT3_INPOUTREDIRECT.EXE < PEREVIRKA.TXT");

/* Џрограма PROJECT3_INPOUTREDIRECT.EXE почне виконуватисЯ ґ виводити результати в файл PEREVIRKA1.TXT. ’ут введеннЯ очґкуватиметьсЯ з клавґатури, оскґльки перенаправленнЯ вводу дґЯло тґльки в межах першого виконаннЯ функцґ» system () */

system ("PROJECT3_INPOUTREDIRECT.EXE> PEREVIRKA1.TXT");

getch ();

}

ђезультат роботи програми показаний на рис. 1.

 

ђис. 1. ђезультат роботи програми по перенаправленню введеннЯ/виведеннЯ





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


Дата добавления: 2016-09-06; Мы поможем в написании ваших работ!; просмотров: 336 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Сложнее всего начать действовать, все остальное зависит только от упорства. © Амелия Эрхарт
==> читать все изречения...

2221 - | 2091 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.