PDA

Просмотр полной версии : [Вопрос] Почему не отображается символ, записанный в последней ячейке массива?



_lizard
22.08.2016, 21:50
new salt[8];
for(new i = 0; i < 8; i++)
{
salt[i] = random(122-48)+48;
printf("%d: %c", i, salt[i]);
}
print(salt);

Результат:


0: N
1: G
2: q
3: T
4: ?
5: N
6: k
7: >
NGqT?Nk>† // <- Почему 9 символов? Если в цикле 8: 0 + 1-7 = 8

ziggi
22.08.2016, 23:23
Нужно добавить ещё один символ для обозначения конца строки.

new salt[9];
for(new i = 0; i < 8; i++)
{
salt[i] = random(122-48)+48;
printf("%d: %c", i, salt[i]);
}
salt[8] = '\0';
print(salt);

Хотя я бы написал так, чтобы когда-нибудь случайно не выйти за пределы массива:

new salt[9];
for(new i = 0; i < sizeof(salt) - 1; i++)
{
salt[i] = random(122-48)+48;
printf("%d: %c", i, salt[i]);
}
salt[sizeof(salt) - 1] = '\0';
print(salt);

_lizard
22.08.2016, 23:51
Нужно добавить ещё один символ для обозначения конца строки.

new salt[9];
for(new i = 0; i < 8; i++)
{
salt[i] = random(122-48)+48;
printf("%d: %c", i, salt[i]);
}
salt[8] = '\0';
print(salt);

Хотя я бы написал так, чтобы не выйти за пределы массива:

new salt[9];
for(new i = 0; i < sizeof(salt) - 1; i++)
{
salt[i] = random(122-48)+48;
printf("%d: %c", i, salt[i]);
}
salt[sizeof(salt) - 1] = '\0';
print(salt);

Спасибо, работает