Просмотр полной версии : [Вопрос] strmid
Почему если не указывать последний аргумент strmid (хотя он ведь необязателен), то введенный текст просто не записывается?
strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext));
Так в переменную ничего не записывается, но если же в конец добавить размер, то все прекрасно работает
strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext), 24);
Почему так происходит?
И еще вопрос, почему нельзя использовать следующую размерность:
strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext), sizeof(PlayerInfo[playerid][pPass]));
Выдаёт ошибку, хотя размер массива в enum указан
Daniel_Cortez
12.07.2019, 00:28
Почему если не указывать последний аргумент strmid (хотя он ведь необязателен), то введенный текст просто не записывается?
strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext));
Так в переменную ничего не записывается, но если же в конец добавить размер, то все прекрасно работает
strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext), 24);
Почему так происходит?
Понятия не имею. Пробовал воспроизвести на пустом скрипте, без последнего аргумента всё записывается.
#include <a_samp>
enum ePlayerInfo
{
pLevel,
pPassword[24]
};
new player_info[2][ePlayerInfo];
main()
{
new inputtext[] = "1234567890";
new playerid = 1;
strmid(player_info[playerid][pPassword], inputtext, 0, strlen(inputtext));
printf("player_info[playerid][pPassword]: %s", player_info[playerid][pPassword]);
}
player_info[playerid][pPassword]: 1234567890
И еще вопрос, почему нельзя использовать следующую размерность:
strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext), sizeof(PlayerInfo[playerid][pPass]));
Выдаёт ошибку, хотя размер массива в enum указан
Потому что в sizeof нельзя ничего указывать внутри измерений (т.е. внутри квадратных скобок). Можно использовать вот так:
new arr[2][3][24];
// ...
printf("%d", sizeof(arr)); // 2
printf("%d", sizeof(arr[])); // 3
printf("%d", sizeof(arr[][])); // 24
execution
12.07.2019, 11:50
new arr[2][3][24];
// ...
printf("%d", sizeof(arr[])); // 24
Забыл указать ещё квадратные скобки:
printf("%d", sizeof(arr[][])); // 24
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot