Исправить код, чтобы он не использовал динамическую память - C (СИ)
Формулировка задачи:
Помогите исправить код.Чтобы он был без динамической памяти и библиотеки string.h.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void dropString (char *str, int n, char *result)
{
strcpy(result, str + n);
}
int main()
{
char str[] = "Hey you, hey you,Devil's little sister,listening to your twisted transistor";
char *p = NULL;
int n;
do{
puts("Enter number simbols:");
scanf("%d", &n);
if(n >= strlen(str))
puts("too much, try less");
else break;
}while(1);
p = malloc((strlen(str) - n) * sizeof(p));
dropString (str, n, p);
puts(p);
free(p);
return 0;
}Решение задачи: «Исправить код, чтобы он не использовал динамическую память»
textual
Листинг программы
#include <stdio.h>
size_t strlen(const char* const str)
{
size_t length = 0;
const char* iterator = str;
while (*iterator != '\0')
{
length++;
iterator++;
}
return length;
}
char* strcpy(char* dest, const char* src)
{
while ((*dest++ = *src++) != '\0');
return dest;
}
void dropString(const char* const str, const size_t n, char* const result)
{
if (strlen(str) >= n) strcpy(result, str + n);
}
int main(void)
{
char res[24];
dropString("this is a test string", 4, res);
printf("'%s'\n", res);
return 0;
}
Объяснение кода листинга программы
- В функции
strlenопределяется длина строки, передаваемой в качестве аргумента. - В функции
strcpyпроисходит копирование строки из одного места в другое. - В функции
dropStringудаляется указанное количество символов из начала строки. - В функции
mainсоздается массив символовres, куда будет копироваться строка после удаления символов. - Вызывается функция
dropStringс аргументамиthis is a test string, 4 иres. - Результат выводится на экран с помощью функции
printf.