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

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

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]= {"Первая строка",

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

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

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

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

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

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)); //все слово по буквам

14.3.Указатель как возвращаемое значение функции Передача указателя как параметра функции

Указатель можно передавать в функцию в качестве аргумента и возвращать из функции.

#include<string.h>

char* strcopy(char*, char*);

void main(void){

char target [24];

char* cptr;

cptr=strcopy (target, "Персональная"); //возврвщает адрес target+12

cptr=strcopy (cptr, "IBM"); // возврвщает адрес target+16

}

char* strcopy (char*tptr, char*cptr){

while (*tptr++=*cptr++); //while (*cptr!='\0')

// *tptr++=*cptr++;

return (tptr);

}

14.4.Функции, работающие со строками Функции, определеные в заголовочном файле stdio.H

1. Функция gets(char *) - вводит строку в массив с клавиатуры

char name[81];

gets(name); // Берёт все символы до конца строки символ '\n'

// отбрасывает и записывает '\0' и передаёт в вызов программы.

2. Функция puts(char *) - выводит строку на экран

puts ("Я функция puts()");

char str1[]="Только одна строка";

puts(str1); //Читает строку до встречи '\0'. Все строки

//выводятся с новой строки.

  1. 3. Функция int getc(stdin) – вводит символ в переменную с клавиатуры.

  2. 4. Функция int putc(int c, stdout) – выводит символ на экран.