Typedef строка - C (СИ)
Формулировка задачи:
#include <stdio.h>
typedef char string[100]; // эта строка обязательна (по заданию)
void concat(string *s1, string *s2)
{
while(*s1) s1++;
while(*s2)
{
*s1=*s2;
s1++;
s2++;
}
}
void main (void)
{
string str1[100]={"Some text"};
string str2[100]={" and some other text."};
concat(str1,str2);
printf("%s\n", str1);
}*s1=*s2;
Хотелось бы увидеть примеры использования строк (и указателей на них) определенных таким образом
typedef char string[100];
Решение задачи: «Typedef строка»
textual
Листинг программы
void concat(string *s1, string *s2)
{
char *c1 = *s1, *c2 = *s2;
while (*c1) c1++;
while (*c2)
{
*c1 = *c2;
c1++;
c2++;
}
}
Объяснение кода листинга программы
В данном коде реализован алгоритм конкатенации двух строк. Он работает следующим образом:
- Входные данные: два указателя на начало строк
s1иs2. - Переменные
c1иc2инициализируются значениями указателейs1иs2соответственно. - В цикле, пока
c1не станетNULL(т.е. не достигнет конца строкиs1), выполняются следующие действия: a. Значение*c1присваивается значению*c2(т.е. текущему символу строкиs2). b.c1увеличивается на 1. c.c2увеличивается на 1. - Результатом работы функции является объединение исходных строк в одну, где первая строка идет после второй.