СИМВОЛЬНЫЕ СТРОКИ И ФУНКЦИИ НАД СТРОКАМИ

 

Всякий раз, когда компилятор встречается с чем-то заключённым в кавычки, он определяет это как строковую константу. Символы+'\0' записыватся в последовательные ячейки памяти. Если необходимо включить кавычки в символьную строку, нужно поставить впереди \".

Строковые константы размещаются в области данных. Вся фраза в кавычках является указателем на место в памяти, где записана строка. Это аналогично имени массива, служащего указателем на адрес расположения массива. Для вывода символьной константы служит идентификатор %s.

 

char mas[] = "Это одна строка";

mas - адрес строки -> &m[0] *mas=='Э'.

Можно использовать указатель для создания строки.

char *str = "Таблица результатов";

char str[]= "Таблица результатов".

Сама строка размещается в области данных, а указатель инициализируется адресом.

 

void main(void){

char* mesg="Ошибка чтения";

char* copy;

copy = mesg; создается второй указатель на строку.

printf ("%S", copy);

printf ("%S", mesg);

}

char* name;

scanf ("%S", name); //Так нельзя !!! Указателю не присвоен адрес.

char name [81]; //Нужно в начале определить массив

 

Массивы символьных строк

 

1. Строки в символьный массив можно вводить с клавиатуры.

char mas[80];

scanf("%S",mas);

 

2. Если требуется несколько строк, то организуем цикл ввода

char mas[4][81];

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

sсanf("%S", mas[i]); // &mas[i][0]

 

3. Можно сразу инициализировать в программе.

char m1[] = "Только одна строка"; // автоматически определяется

// длина строки + 1 байт на '\0'.

4. Размер массива можно задать явно.

char m2[50] = "Только одна строка"; //18+1

5. char m3[]={'c', 'm', 'p', 'o', 'k', 'a', '\o'};

6. Инициализация массива строк:

char masstr[3][16]={"Первая строка",

"Вторая строка",

"Третья строка" };

*masstr[0]=='П';

*masstr[1]=='B';

*masstr[2]=='Т';

 

printf(“\n %c”, *masstr[i]); //печать одной буквы

printf(“\n %s”, *(masstr+i)); //печать строки

printf(“\n %u”, masstr[i]); //печать адреса строки

 

7. «Рваный массив» – это массив указателей на строки.

static char *masstr[3]= {"Первая строка",

"Вторая строка",

"Третья строка" };

В случае «рваного массива» длина строк разная и зря не расходуется память.

 

Массивы указателей

 

Можно определять массивы указателей

int* parray[5]; //5 указателей на целые значения.

*parray[3] - //3-й элемент массива.

char *keywords[5]={"ADD", "CHANGE", "DELETE", "LIST", "QUIT"};

 

В памяти:

keyword[0] – адрес 10000 строка ADD\0 4б

keyword[1] - 10004 CHANGE\0 7б

keyword[2] - 10011 DELETE\0 7б

 

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

printf("%s", keywords[i]); //печать строки

 

char *key[3],**pt; //определение указателя на указатель

pt=key;

printf(“%s %d\n”,*pt,**pt); //печатается первая строка и код первой буквы

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

printf(“%c ”,**(pt+i)); //все первые буквы строк

 

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

printf(“%c ”,*(*pt+i)); //все слово по буквам

 

 








Дата добавления: 2018-11-25; просмотров: 315;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.