Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
58
Добавлен:
30.05.2015
Размер:
168.45 Кб
Скачать

Scanf(Управляющая строка, аргумент1, аргумент2,...);

Основное различие двух этих функций заключается в особенностях этого списка. Функция printf() использует в списке аргументов имена переменных, константы и выражения, в то время как функция scanf() – только адресасоответствующихпеременных. Кроме того, в "Управляющей строке" в функции просто перечисляются соответствующие спецификации преобразования, без словесных комментариев!

Необходимо помнить несколько правил:

1.Если вам нужно ввести некоторое значение и присвоить его переменной одного из основных типов, то перед его именем переменной требуется писать символ &(символадресапеременной).

2.Если вы ходите ввести значение строковойпеременной, использовать символ & не нужно.

3. В пределах управляющей строки лучше не использоватьзапятые, символы пробела, \n (новой строки), табуляции и т.д., т.к. они будут интерпретироваться как некий "шаблон".

Примеры:

int a;

float b, c, d[2];

scanf("%f",&b);

scanf("%d%f%f%f", &a, &c, &d[0], &d[1]);

Здесь организован ввод данных (считывание с клавиатуры, преобразование к соответствующему типу и размещение в соответствующей "ячейке" памяти) в вещественную переменную b, в целую переменнуюa, в вещественную переменнуюc, в два элемента вещественного массиваd.

Функция scanf() использует практически тот же набор символов спецификации преобразования, что и функция printf().

    1. Работа с файлами

Файл для нас – это часть памяти для хранения информации, обычно на диске, со своим именем. Язык Си "рассматривает" файл как структуру данных. Эта структура содержится в системном файле stdio.h. Краткое наименование шаблона файла – FILE, которая и будет использоваться далее.

Описание файла:

FILE *переменная;

при этом слово FILE пишется только заглавными буквами.

Открытие файла: функция

переменная = fopen("имя_файла","par");

з

}

десь par - параметр, указывающий на то,как должен использоваться файл. Параметр может быть:

"r" – файл нужно считать;

"w"– файл нужно записать; толькомаленькимибуквами!!!

"a" – файл нужно дополнить.

Закрытие файла: функция

fclose(переменная);

Закрытие всех открытых файлов: функция

fcloseall();

Вывод в файл: функция

fprintf(переменная, Управляющая строка, аргумент1, аргумент2,...);

Обратите внимание на то, что первым параметром является переменная, связанная с открытым файлом, а остальные параметры – те же, что и в функции printf().

Чтение из файла: функция

fscanf(переменная, Управляющая строка, аргумент1, аргумент2,...);

Пример:

#include <stdio.h>

main()

{

FILE *fr, *fw; // описание указателей на файлы

char *as; // описание указателя на символьную переменную

int ax;

double bx;

fr = fopen("ish.dat","r"); /*открытие файла с именем ish.dat на чтение (ввод) данных*/

fw = fopen("rez.dat","w"); /*открытие файла с именем rez.dat на запись (вывод) данных*/

fscanf(fr,"%s",as); //чтение строки из файла

fscanf(fr,"%lf%d",&bx, &ax); //чтение двух чисел из файла

fprintf(fw," Считана строка %s и числа %lf, %d\n", as, bx, ax);

//вывод комментария и считанной строки и числовых данных в файл

fclose(fr); // закрытие файлов

fclose(fw);

}

    1. Массивы и операции ввода-вывода

При вводе значений элементов массива наименее удобный способ (но все равно правильный) – это тот, где явно в функции ввода (или вывода) перечисляются все элементы массива:

scanf("%f%f%f%f%f%f",&a[0][0],&a[0][1],&a[0][2],&a[1][0],

&a[1][1],&a[1][2]);

Здесь перечислено всего 6 элементов массива (например, он был описан как float a[2][3]). А если в нем 20 строк и 30 столбцов? Так как нам надо обратиться к КАЖДОМУ элементу массива, т.е. перебрать все сочетания номеров строк и номеров столбцов, то более компактно можно организовать ввод, используя вложенные циклы for:

Пример:

float a[20][30];

int i, j;

for ( i=0; i<20; i++ )

for ( j=0; j<30; j++ )

scanf("%f", &a[i][j]);

Ниже организован ввод с клавиатуры и вывод на экран ста элементов вещественного двумерного массива g.

float g[10][10];

int i, j;

for (i = 0; i < 10; i++)

{

for (j = 0; j < 10; j++)

{

printf("Введите элемент массива %d %d: ", i, j);

scanf("%f",&g[i][j]);

printf("g[%d][%d] = %f\n", i, j, g[i][j]);

}

}

17

Соседние файлы в папке Методические указания