94 подписчика

Твои первые слова

И так,мы разобрались как создавать свои функции и зачем они нужны,что было поспешно с моей стороны.Так как нам нужно разобраться ещё со строками в си.  Ответим сперва на вопрос-"Что такое строка?".

И так,мы разобрались как создавать свои функции и зачем они нужны,что было поспешно с моей стороны.Так как нам нужно разобраться ещё со строками в си.

Ответим сперва на вопрос-"Что такое строка?".Интуитивно всем понятен ответ на этот вопрос и казалось бы его даже задавать не стоило,но всё не так просто.Коротко говоря,строка-это массив символов и записать это можно так:

char hello[5]={'H','e','l','l','o'};

Попробуйте собрать программу с подобной строкой,чтобы строку передать в printf используется формат %s (string):

printf("%s\n",hello);

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

Тут нам пригодится терминатор,не тот,что придёт и убьёт всю вашу семью в поисках Сары Коннор,а символ - '\0'.Как и в случае с переводом строки это считается одним символом.

То есть:

1)Терминатор заканчивает строку

2)Для него нужно учитывать место

char hello[6]={'H','e','l','l','o','\0'};
char hello[6]={'H','e','l','\0','l','o'};//можно и так

Сравните два этих вывода,забавная штука.

Теперь всё хорошо,но записывать строку посимвольно? Как-то не в стиле программистов,которые любят экономить время.Потому строки можно записывать ещё так:

char hello[6]="Hello";
char hello[]="Hello";

В первом случае компилятор сам поставит терминатор,а второй случай интереснее,тут компилятор сам выделит нужный массив.Не забывайте только экономить память,помните:

размер массива=тип данных*количество ячеек

Так после создания целочисленного массива с 6 ячейками мы получим 24 байта(int num[6]).

Сегодня ещё разберём запись строк и закончим на этом.Тут есть подводный камень,символ '&' в функции scanf не нужен,почему так-я объясню в следующих статьях.

char hello[6];
scanf("%s",hello);

Для закрепления потренируйтесь со строками,так же предлагаю вам записать более 5 символов,а ещё попробовать записать пробел.Желаю успехов!