Programmation bas niveau (BNV) Help

Correction : La manipulation de la mémoire

Correction Exercice 1 :

Objectif : créer une fonction qui copie une chaine de caractères.

main.c

#include <stdlib.h> #include <stdio.h> #include "str_cpy.h" int main() { char * str; str = str_cpy("Hello World!\n"); printf("Voici ma chaine copiée:\n%s", str); free(str); exit(0); }

str_len.c

int str_len(char *str) { int i; int len; i = 0; len = 0; while(str[i] != '\0') { i++; len++; } return(len); }

str_len.h

#ifndef __STR_LEN_H__ #define __STR_LEN_H__ int str_len(char *str); #endif

str_cpy.c

#include <stdlib.h> #include "str_len.h" char *str_cpy(char * str) { char *cpy = NULL; int length = str_len(str); cpy = malloc((length + 1) * sizeof(char)); cpy[length] = '\0'; int i = 0; while(str[i] != '\0') { cpy[i] = str[i]; i = i + 1; } return(cpy); }

fichier str_cpy.h

#ifndef __STR_CPY_H__ #define __STR_CPY_H__ char *str_cpy(char * str); #endif

Makefile

# Makefile NAME = ex-1 SRCS = main.c \ str_len.c \ str_cpy.c all : $(NAME) $(NAME): $(SRCS) gcc $(SRCS) -o $(NAME) fclean: rm -f $(NAME) re: fclean all
14 October 2025