Я начал изучать C и немного запутался, когда дело доходит до массивов.
#include <stdio.h>
int main()
{
int i;
char j[5];
for (i = 0; i < 5; i++)
{
j[i] = 'a';
}
printf("%s\n", j);
}
Запуск этого кода выводит
aaaaa♣
Я читал, что charмассив должен быть на один байт длиннее строки, чтобы компилятор мог поместить \0
в конце.Если я заменю код следующим:
#include <stdio.h>
int main()
{
int i;
char j[5];
for (i = 0; i < 4; i++)
{
j[i] = 'a';
}
printf("%s\n", j);
}
Вывод, который я получаю:
aaaaa
Массив char на один байт длиннее, чем я использую.Я подозреваю, что именно поэтому я не вижу этот нечетный символ в конце строки?
Я пытался проверить эту теорию с помощью следующего кода:
#include <stdio.h>
int main()
{
int i;
char j[5];
for (i = 0; i < 4; i++)
{
j[i] = 'a';
}
for (i = 0; i < 4; i++)
{
printf("%d\n", j[i]);
}
}
Но ввывод я не вижу ноль байт.Это потому, что он будет добавлен только в случае вывода в виде строки?
97
97
97
97