1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
/*
============================================================================
Name : Untitled 6.c
Author : SAMBIA39
Version : 0.1
Copyright : Copyright (c) 2016 SAMBIA39
Description : Ansi-style
============================================================================
*/
#define SIZEDEF 26
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Test {
char* data;
};
//
void f_init( struct Test *data, size_t size ){
extern int errno;
errno = 0;
size = (0 >= size ) ? SIZEDEF: size;
if( NULL != data->data ){
fprintf( stdout, "Addr data = %p\n", data->data );
memset( data->data, 0, size );
}else{
if( NULL == (data->data = malloc( size * sizeof(char) )) ){
fprintf( stderr, "(%d)\t:%s\n\t:%s\n", errno,
"Erreur allocation", strerror(errno) );
exit( -1 );
}
memset( data->data, 0, size );
}
}
//
void f_init_struct( struct Test *data, size_t size ){
extern int errno;
unsigned int i = 0;
errno = 0;
size = (0 >= size ) ? SIZEDEF: size;
f_init( data, size );
for( i = 0; i < size; i++ )
data->data[i] = ( 'a' + i );
data->data[SIZEDEF] = '\0';
}
//
int main( void ){
struct Test data;
data.data = NULL;
fprintf( stdout, "(init)\t%s\n", data.data );
f_init_struct( &data, SIZEDEF );
fprintf( stdout, "\n(1)\t%s\n", data.data );
fprintf( stdout, "(1)\t%p\n", data.data );
f_init( &data, SIZEDEF );
fprintf( stdout, "\n(2)\t%s\n", data.data );
fprintf( stdout, "(2)\t%p\n", data.data );
//
free( data.data );
data.data = NULL;
//
fprintf( stdout, "\n(3)\t%s\n", data.data );
fprintf( stdout, "(3)\t%p\n", data.data );
return EXIT_SUCCESS;
} |
Partager