Array of strings in C++: Extra characters printed
===

I am having some trouble understanding this output for my code:

    #define MAX 5

    char pipeNames[MAX][1024];
    string s1 = "\\\\.\\p\\p1";
    string s2 = "\\\\.\\p\\p2";
    int len1 = strlen(s1.c_str());
    int len2 = strlen(s2.c_str());
    memcpy((void*)pipeNames[0], (void*)s1.c_str(), len1);
    memcpy((void*)pipeNames[1], (void*)s2.c_str(), len2);
    cout<<pipeNames[0];
    cout<<endl<<len1;
    cout<<endl<<pipeNames[1];
    cout<<endl<<len2;

Actual Output:

    \\.\p\p1É┼é|
    8
    \\.\p\p2
    8

Expected Output:

    \\.\p\p1
    8
    \\.\p\p2
    8

Why are the extra characters being printed at the end of pipeNames[0]. I am using string::c_str() which automatically appends null character, so why the error?