I am trying to concat two strings in the function `foo()`. I expect the content of `string` to be `abc` after both the first and second calls to `foo()`. The output which I get after the first call is `abc` but the second call prints `abcabc` (the third call prints `abcabcabc` and so on). The string buffer is not getting cleared. It will be helpful if someone could share how it works internally - how the memory is assigned to the string and why the string buffer is not cleared between subsequent calls of the function.

Here is the code I used:

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

int foo(){
    unsigned char string[100];
    unsigned char text[10] = "abc";
    strcat(string, text);
    printf("%s\n", string);
}

int main(){
    foo();
    foo();
    return 0;
}

```