hi i wrote this code which is written bellow when ever i check the value of u it appear to be the 3. while it is supposed to be 8. Can any body tell me what is the problem with this code and how can i get the exact size of the arrgument of func.
void main(){ func("fara.txt"); } void func(unsigned char arr[]){ int u; u=sizeof(arr); }
The problem is not with sizeof itself, but that you are applying it to an unbounded array (arr[]). The way you have the 'arr' parameter declared, it degrades to a pointer which, being unqualified, is a generic pointer whose size is 3. Compare this example:
void main() { func("fara.txt"); } void func(unsigned char arr[]) { int u; u = strlen(arr); }
void main() { func("fara.txt", sizeof "fara.txt"); } void func(unsigned char arr[], size_t len) { int u; u = len; }
char str[] = "fara.txt"; void main() { func(str, sizeof str); } void func(unsigned char arr[], size_t len) { int u; u = len; }
I should note that the value assigned to 'u' in example #1's func() is different than the value assigned in examples #2 and #3. Why is left as a simple exercise for the reader.