字符数组不完全初始化

兄弟姐妹帮忙看看捏
我写了一个简单的函数模板,问题是当我用一个长度为9的字符串去初始化长度为15的字符数组,在输出字符数组的内容,运行第一次是正确的,多次运行后就出错

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
template <class t>
void outputArray(const t* array, int count) {
    for (int i = 0; i < count; i++) {
        cout << array[i] ;
        cout << endl;
    }
}

int main()
{
    const int a_count = 8, b_count = 5, c_count = 15;
    int a[a_count] = { 1,2,3,4,5,6,7,8 };
    double b[b_count] = { 1.1,2.2,3.3,4.4,5.5 };
    char c[c_count] = "welcome!";//造成运行错误

    cout << "a array contains:" << endl;
    outputArray(a, a_count);
    cout << "b array contains:" << endl;
    outputArray(b, b_count); 
    cout << "c array contains:" << endl;
    outputArray(c, c_count);
    return 0;
}


正确运行结果:

img

错误运行结果:

img

长度不够,9后面的没初始化,也就是内存里面的数据没清除,可能是别的内容。字符串以'\0'结束,使用时可以检查遇到这个符号就提前结束输出,后面的是无效数据