What will the following C code do?
void *memset(void *s, int c, size_t n)
{
unsigned char ch = c;
unsigned char *su;
for (su = s; 0 < n; ++su, --n)
*su = ch;
return (s);
}
Answer: A
Correct answer: store c throughout unsigned char s[n]
This is the textbook implementation of memset. The byte value c is copied into an unsigned char, and the loop walks n bytes from s, writing that value into each. Using unsigned char matters: it is the type guaranteed to address every byte of an object without sign issues.
Please log in or register to report this question.