- Κώδικας: Επιλογή όλων
#define MAXLEN whatever
char s[MAXLEN] = {'\0'};
/* τρέχον μήκος = strlen(s) = 0; */
/* μέγεθος (bytes) = sizeof(s) = MAXLEN * sizeof(char) */
/* μέγιστο μήκος = (sizeof(s) / sizeof(char)) = MAXLEN */
0 1 2 3 4 5 6 7 8 9
'\0' '\0' '\0' '\0' '\0' '\0' '\0' '\0' '\0' '\0'
char s[MAXLEN] = "abc";
/* τρέχον μήκος = strlen(s) = 3; */
/* μέγεθος (bytes) = sizeof(s) = MAXLEN * sizeof(char) */
/* μέγιστο μήκος = (sizeof(s) / sizeof(char)) = MAXLEN */
0 1 2 3 4 5 6 7 8 9
'a' 'b' 'c' '\0' '\0' '\0' '\0' '\0' '\0' '\0'
char *s = NULL;
/* τρέχον μήκος = strlen(s) = strlen(NULL) = segmenation fault */
/* μέγεθος (bytes) = sizeof(s) = sizeof(void *) = 4 bytes */
/* μέγιστο μήκος = (sizeof(s) / sizeof(char)) = 4 / 1 = 4 --- ΠΟΥ ΕΙΝΑΙ ΛΑΘΟΣ */
char *s = NULL;
s = calloc( MAXLEN, sizeof(char));
if ( s != NULL )
// πέτυχε το calloc()
/* τρέχον μήκος = strlen(s) = 0; */
/* μέγεθος (bytes) = MAXLEN * sizeof(char) */
/* μέγιστο μήκος = MAXLEN */
0 1 2 3 4 5 6 7 8 9
'\0' '\0' '\0' '\0' '\0' '\0' '\0' '\0' '\0' '\0'
else
// απέτυχε το calloc(), s is NULL
char *s = NULL;
s = calloc( MAXLEN, sizeof(char));
if ( s != NULL )
// πέτυχε το calloc()
strcpy(s, "abc");
/* τρέχον μήκος = strlen(s) = 3; */
/* μέγεθος (bytes) = MAXLEN * sizeof(char) */
/* μέγιστο μήκος = MAXLEN */
0 1 2 3 4 5 6 7 8 9
'a' 'b' 'c' '\0' '\0' '\0' '\0' '\0' '\0' '\0'
else
// απέτυχε το calloc(), s is NULL


