Функции, определеные в заголовочном файле stdio.h
Функции, работающие со строками
Передача указателя как параметра функции
Указатель как возвращаемое значение функции
Массивы указателей
Массивы символьных строк
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)); //все слово по буквам
Указатель можно передавать в функцию в качестве аргумента и возвращать из функции.
#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);
}
1. Функция gets(char *) - вводит строку в массив с клавиатуры
char name[81];
gets(name); // Берёт все символы до конца строки символ '\n'
// отбрасывает и записывает '\0' и передаёт в вызов программы.
2. Функция puts(char *) - выводит строку на экран
puts ("Я функция puts()");
char str1[]="Только одна строка";
puts(str1); //Читает строку до встречи '\0'. Все строки
//выводятся с новой строки.
3. Функция int getc(stdin) – вводит символ в переменную с клавиатуры.
4. Функция int putc(int c, stdout) – выводит символ на экран.