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

При помощи fgets

Функция fgets применяется для чтения строки из потока. Считывание происходит до тех пор пока не будет достигнут конец строки (hex:0D0A, эквивалентны в листингах \n) или длина строки, в которую происходит считывание. Предположим, у нас есть файл some_file.txt с текстом

палиндромы

А в Енисее - синева.

А лама мала.

А лис, он умен - крыса сыр к нему носила. (И. Бабицкий)

#include <stdio.h>

#include <string.h>

int main (int argc, char* argv[]) /* argc хранит количество параметров, а argv[] указатели на эти параметры.

Например, если мы запустим исполняемый файл "fgets_example param1 param2", то argc будет равно 3, а argv[] = {"fgets_example", "param1", "param2"}*/

{

FILE *file;

char *fname = "some_file.txt";

char result_sting[20]; //Строка в 20 символов

file = fopen(fname,"r");

if(file == 0)

{

printf("не могу открыть файл '%s'",fname);

return 0;

}

int i=0;

char *real_tail;

while(fgets(result_sting,sizeof(result_sting),file))

{

real_tail="";

printf("Строка %d:Длина строки - %d:",i++,strlen(result_sting));

if(result_sting[strlen(result_sting)-1] == '\n')//проверяем является ли последний элемент в строке символом ее окончания

{

real_tail="\\n";

result_sting[strlen(result_sting)-1]='\0';

};// эта часть кода добавлена лишь для отображения символа конца строки в консоль без перевода на новую строку

printf("%s%s\n",result_sting,real_tail);

}

fclose(file);

return 0;

}

24 Форматированный ввод –вывод Функции форматированного ввода и вывода в си

Функции форматированного ввода и вывода описаны в библиотеке stdio.h:     scanf – функция форматированного ввода; printf – функция форматированного вывода Функция scanf имеет следующий заголовок: int scanf(const char * restrict format [,addresses,…]); Пример ввода двух переменных переменные целого типа и переменной вещественного типа:

int a,b; double x; … scanf("%d %d %lf”,&a,&b,&x);

Спецификатор типа

Сочетание %d или любое другое называется спецификатором типа. В общем случае он имеет следующий формат:    % [*] [WIDTH] [hh|h|l|ll|L] символ_типа    * – указывает запрещенные для ввода символы.    WIDTH – задает максимальную длину поля ввода. Преобразователи типа:    hh - преобразование целочисленных типов к типам char или unsigned char.    h - преобразование целочисленных типов к типам short int или unsigned short int.    l - преобразование к типу long int всех целочисленных типов и к типу double всех вещественных типов.    ll - преобразование целочисленных типов к типам long long int или unsigned long long int.    L - преобразование к типу long double всех вещественных типов.

Спецификаторы типа:    d, i – знаковое целое число в десятичной системе    o – знаковое целое число в восьмеричной системе    X, x – знаковое целое число в шестнадцатеричной системе    u – незнаковое целое число в десятичной системе исчисления    f, e и g – вещественное число в десятичной системе исчисления    a - вещественное число в шестнадцатеричной системе исчисления    c – символ    sстрока в СИ    p – указатель    % - ввод символа ‘%’

Функция printf  имеет следующий заголовок:

int printf(const char * restrict format [,variables,…]); Пример вывода двух переменных целого типа и переменной вещественного типа:

    int a,b;     double x;     …     printf("%d %d %5.2lf”,a,b,x);