Исправить код, чтобы он не использовал динамическую память - 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;
}

Объяснение кода листинга программы

  1. В функции strlen определяется длина строки, передаваемой в качестве аргумента.
  2. В функции strcpy происходит копирование строки из одного места в другое.
  3. В функции dropString удаляется указанное количество символов из начала строки.
  4. В функции main создается массив символов res, куда будет копироваться строка после удаления символов.
  5. Вызывается функция dropString с аргументами this is a test string, 4 и res.
  6. Результат выводится на экран с помощью функции printf.

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы