Всякий раз, когда компилятор встречается с чем-то заключённым в кавычки, он определяет это как строковую константу. Символы+'\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]= {"Первая строка",
"Вторая строка",
"Третья строка" };
В случае «рваного массива» длина строк разная и зря не расходуется память.