Исправить код, чтобы он не использовал динамическую память - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д