Копирование строки на место другой строки - C (СИ)
Формулировка задачи:
Копирует строку string2 вместе с завершающим нулевым символом на место строки string1, и возвращает указатель на строку string1.
(char* strcpy(char* string1, char* string2))
Написать следующие функции в двух вариантах: с использованием индексов и указателей. Вначале должна быть написана функция с использованием индексов. Второй вариант должен являться чисто формальным преобразованием выражений с индексами в выражения с указателями (которое всегда осуществляется самим компилятором, когда он встречает выражения с индексами).
Решение задачи: «Копирование строки на место другой строки»
textual
Листинг программы
#include <stdio.h>
char * rstrcpy(char * dst, char * src)
{
int i=0;
while (src[i]!=0)
{
dst[i]=src[i];
i++;
}
dst[i]=0;
return dst;
}
int main ()
{
char buf1[20];
char buf2[20];
scanf ("%s", &buf2);
printf("%s\n", rstrcpy(buf1, buf2));
return 0;
}
Объяснение кода листинга программы
В данном коде происходит следующее:
- В функции rstrcpy:
- Входные параметры функции: dst (указатель на строку, на которую необходимо скопировать данные) и src (указатель на исходную строку).
- Переменная i инициализируется значением 0.
- В цикле while с условием src[i]!=0 происходит копирование каждого символа из строки src в строку dst. Значение i увеличивается на 1 после каждой итерации цикла.
- После завершения цикла, в dst[i] записывается 0, чтобы завершить строку.
- Функция возвращает указатель на строку dst.
- В функции main:
- Входные параметры функции: нет.
- Переменные buf1 и buf2 инициализируются как массивы символов размером 20.
- С помощью функции scanf в buf2 записывается строка, введенная пользователем.
- С помощью функции printf выводится результат работы функции rstrcpy, которая копирует строку buf2 в buf1.
- Возвращаемое значение функции main равно 0, что означает успешный конец работы программы.