Array M. УЭИТ - Язык Си - руководство для начинающих

Здесь есть возможность читать онлайн «Array M. УЭИТ - Язык Си - руководство для начинающих» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1988, ISBN: 1988, Издательство: Мир, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык Си - руководство для начинающих: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык Си - руководство для начинающих»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

M. УЭИТ   С. ПРАТА    Д. МАРТИН
Язык Си — руководство для начинающих

Язык Си - руководство для начинающих — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык Си - руководство для начинающих», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Между прочим, какое значение возвращает strcmp( ), если строки не одинаковы? Вот пример:

/* возвраты функции strcmp */

#include

main( )

{

printf(" %d \n" , strcmp( "A" , " A" ));

printf(" %d \n" , strcmp( "A" , " B" ));

printf(" %d \n" , strcmp( "B" , " A" ));

printf(" %d \n" , strcmp( "C" , "A" ));

printf(" %d \n" , strcmp(" apples", " apple"));

}

В результате получаем

0 -1

1

2 115

Как мы и предполагали, сравнение "А"с самим собой возвращает 0. Сравнение "А"с "В"дает -1, а "В"с "А"дает 1. Это наводит на мысль, что strcmp( )возвращает отрицательное число, если первая строка предшествует второй в алфавитном порядке, или положительное число, если порядок иной. Кроме того, сравнение "С"с "А"дает 2 вместо 1. Картина проясняется: функция возвращает разницу между двумя символами в коде ASCII. В более общем смысле strcmp()передвигается вдоль строк до тех пор, пока не находит первую пару не совпадающих символов; затем она возвращает разницу в кодах ASCII. Например, в самом последнем примере "apples"и "apple"совпадают, кроме последнего символа 's', в первой строке. Он сопоставляется с шестым символом в "apple", который является нуль-символом (0 в ASCII).

Возвращается значение

's' - '\0' = 115 - 0 = 115,

где 115 является кодом буквы 's'в ASCII.

Обычно вам не нужно точно знать возвращаемое значение. Чаще всего вы только хотите знать, нуль это или нет, т. е. было ли совпадение. Или, может быть, вы пытаетесь отсортировать строки в алфавитном порядке и хотите узнать, в каком случае сравнение дает положительный, отрицательный или нулевой результат.

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

/* Начало какой-то программы */

#include &stdio.h&

#define SIZE 81

#define LIM 100

#define STOP " " /* нулевая строка */

main( )

{

static char input[LIM][SIZE];

int ct = 0;

while(gets(input[ct]) != NUL && strcmp(input[ct].STOP) !=0

&& ct++ < LIM)

...

}

Программа прекращает чтение вводимой строки, если встречает символ EOF[в этом случае gets( )возвращает NULL], или если вы нажимаете клавишу [ ввод] в начале строки (т.e. введете пустую строку), или если вы достигли предела LIM. Чтение пустой строки дает пользователю простой способ прекращения ввода.

Давайте перейдем к последней из обсуждаемых нами функций, работающих со строками.

Функция strcpy( )

Мы уже говорили, что если pts1и pts2являются указателями строк, то выражение

pts2 = ptsl;

копирует только адрес строки, а не саму строку. Предположим, что вы все же хотите скопировать строку. В этом случае можно использовать функцию strcpy( ). Она работает примерно так:

/* демонстрация strcpy( ) */

#include

#define WORDS "Проверьте, пожалуйста, вашу последнюю чапись."

main( ) {

static char *orig = WORDS;

static char copy [40];

puts(orig);

puts(copy);

strcpy(copy, orig);

puts(orig);

puts(copy);

}

Вот результат:

Проверьте, пожалуйста, вашу последнюю запись.

Проперьтe, пожалуйста, пашу последнюю запись.

Проверьте. пожалуйста, пашу последнюю запись.

Очевидно, что строка, на которую указывает второй аргумент ( orig) функции strcpy( ), скопирована в массив, на который указывает первый аргумент ( copy). Порядок аргументов функции такой же, как в операторе присваивания: строка, получающая значение, стоит слева. (Пустая строка является результатом печати массива copyдо копирования, и она говорит о том, что статические массивы .инициализируются нулями, т. е. нуль-символами в символьном виде.)

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

static char copy [40];

а не

static char *copy; /* не выделяет память для строки */

Короче говоря, strcpy()требует два указателя строк в качестве аргументов. Второй указатель, ссылающийся на исходную строку, может быть объявленным указателем, именем массива или строковой константой. А первый указатель, ссылающийся на копию, должен ссылаться на массив или часть массива, имеющего размер, достаточный для размещения строки.

Теперь, когда мы описали несколько функций, работающих со строками, рассмотрим целую программу, работающую со строками.

ПРИМЕР: СОРТИРОВКА СТРОК

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык Си - руководство для начинающих»

Представляем Вашему вниманию похожие книги на «Язык Си - руководство для начинающих» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык Си - руководство для начинающих»

Обсуждение, отзывы о книге «Язык Си - руководство для начинающих» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x