Dear friends
Im new in IT and i want to ask you about boundary values check in a program.
I have the following exercise that I want to check and i don't know how...

#include <stdio.h>
#include <string.h>

struct st {
       int i;
       char n[4];
       char g;
};
struct st C;

int F(char *fe){

	if (fe == NULL)
	    return(-1);
    C.g = 'OLE'; //only this value is allowed
    strncpy( C.n, fe, strlen(fe));
	return(s.g);
}

Please help me only with the way out, i have to try it myself.
Thanks allot in forward

Recommended Answers

All 2 Replies

The check should be to prevent the user of the function from passing in a string that is too long to fit in st.n[] .

So:

/* Make sure the string is null-terminated */
  memset( (void *)C.n, '\0', sizeof(C.n) );

  /* Copy the string over, leaving room for null */
  strncpy( C.n, fe, sizeof(C.n) / sizeof(C.n[0]) );

This code makes use of a simple trick to have the compiler calculate the right constant values to use. The sizeof operator returns the number of bytes that an object uses.

memset() fills a specific number of bytes. So sizeof(C.n) is appropriate.

strncpy() copies a specific number of characters. To calculate the number of characters, we use sizeof(C.n) / sizeof(C.n[0]) , which is the same as (total number of bytes) / (bytes per element), which is the number of elements (or chars) in the array.

Whew.

Thanks allot Duoas
I ll try to figure it out!!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.