char str[]="S\065AB";
printf("\n%d", sizeof(str));
explain the output.
i am getting 5.
this is what it means fifth is null terminator 065 in oct is '5' check ascii table
#include <stdio.h>
int main()
{
char str[]="S\065AB";
char strSame[5] = { 'S','\065', 'A', 'B', '\0'};
printf("str 1 %d \n", sizeof(str));
printf("str 2 %d\n", sizeof(strSame));
printf("same ? %d [%s] [%s]",strcmp(str, strSame),str, strSame);
return 0;
}
use strlen
strlen find the exact length
use strlen
Maybe, but maybe not. Depends on what you want, strlen() and sizeof() may return different values such as when the buffer contains embedded '\0' characters.
strlen and sizeof should always return different values because strlen never includes the trailing '\0'. In a compleatly normal string such as "Hello World"
with no embedded terminators strlen
will return a value 1 less than sizeof
returns.
It they don't return different values you have a buffer overrun in progress.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.