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