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