Отладка программы на Си

Вот,что я понаписал:

#define _CRT_SECURE_NO_WARNINGS//для срабатывания strtok
#include<locale.h>
#include<stdio.h>//для printf
main()
{
	setlocale(LC_ALL, "");
	//Массив со строкой для поиска
	char str[100];//[i]
	char words[10][10];//[j][k]
	int i, j, k,a;//i-индекс str;j-индекс слов;k-индекс
	//символов;a-кол-во слов
	printf(" Введите строку:\n");
	fgets(str,100,stdin);

	printf(" Исходная строка: %s\n",str);

	i = 0;
	a = 0;
	for (j = 0; str[i] != '\0'; j++)
	{
		a = a + 1;
		if (str[i] == ' ')
		{
			i++;
		}
		for (k = 0; k<10; k++)
		{
			if (str[i] != ' ')
			{
				if (str[i] != '\0')
				{
					words[j][k] = str[i];
					i++;
				}
			}
		}
	}
	for (j = 0; j <a; j++)
	{
		printf(" \n %d Слово в массиве words:\n", j);
		for (k = 0; k < 10; k++)
		{
			printf(" %c", words[j][k]);
		}
	}
}

Проблема в том, что консоль выводит это:
0 Слово в массиве:
Id1MMMMMMM
1 Слово:
2erem2MMMM
2 слово:
а1MMMMMMMM… И так далее. Я понимаю, что сам указал ограничение символов до 10 элементов, но не могу понять, как избавиться от этих М. Кому не трудно подсказать?)

Нужно после конца слова в words[j][k] (с верным индексом k) положить нуль-терминал, и печатать потом не побуквенно, а просто printf(" %s", words[j]);.

Спасибо, сейчас попробую

Никак не соображу.Нуль-терминал нужно закладывать в конце каждого слова при создании массива слов?Если да, то не соображу как))

Смотря что делать с ними, но да, наверно удобнее чтоб он был.

Можно просто вначале массив нулями заполнить.

char words[10][10] = { 0 };

Браво! И как я не догадался?)

Спасибо большое!