RicardasSim icon

strlen sizeof

RicardasSim | PRO | 11/28/22 07:57:26 PM UTC | 0 ⭐ | 1260 👁️ | Never ⏰ | []
C |

1.63 KB

|

None

|

0 👍

/

0 👎

//linux, 64bit, gcc, -Wall -Wextra -Wpedantic -Wshadow
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char a_str[] = "little weasel";
char u_str[] = "žebenkštis";
 
char *p_str;
 
int main()
{
 
    printf( "%s\n", a_str );
    printf("Length of string a_str = %zu\n", strlen(a_str) );
    printf("sizeof of a_str = %zu\n", sizeof a_str );
    printf("sizeof of *a_str = %zu\n", sizeof *a_str );
    printf("sizeof of a_str[0] = %zu\n\n", sizeof a_str[0] );
 
    printf( "%s\n", u_str );
    printf("Length of string u_str = %zu\n", strlen(u_str) );
    printf("sizeof of u_str = %zu\n", sizeof u_str );
    printf("sizeof of *u_str = %zu\n", sizeof *u_str );
    printf("sizeof of u_str[0] = %zu\n\n", sizeof u_str[0] );
 
    p_str = malloc( strlen(a_str) + 1 );
 
    if ( !p_str )
    {
        printf("Error: cannot allocate memory.\n");
        return 1;
    }
 
    // copies a_str, including the ending null character
    strcpy( p_str, a_str );
 
    printf( "%s\n", p_str );
    printf("Length of string p_str = %zu\n", strlen(p_str) );
    printf("sizeof of p_str = %zu\n", sizeof p_str );
    printf("sizeof of *p_str = %zu\n", sizeof *p_str );
    printf("sizeof of p_str[0] = %zu\n\n", sizeof p_str[0] );
 
    free ( p_str );
 
    return 0;
}
 
/*
output:
 
little weasel
Length of string a_str = 13
sizeof of a_str = 14
sizeof of *a_str = 1
sizeof of a_str[0] = 1
 
žebenkštis
Length of string u_str = 12
sizeof of u_str = 13
sizeof of *u_str = 1
sizeof of u_str[0] = 1
 
little weasel
Length of string p_str = 13
sizeof of p_str = 8
sizeof of *p_str = 1
sizeof of p_str[0] = 1
 
*/
 

Comments