AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Problem with Sizeof (https://forums.alliedmods.net/showthread.php?t=89874)

Sn!ff3r 04-11-2009 13:45

Problem with Sizeof
 
My code
PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"

new array[][] = {
    
"text one",
    
"text two",
    
"text three"    
}

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
}

public function()
{
        new 
size_of_first_strin sizeof array[0] - 1    


Error
Code:

Error: Expected token: "]", but found "-integer value-" on line 22
WTF?! :o

Spunky 04-11-2009 13:59

Re: Problem with Sizeof
 
sizeof is used to find the size in chars of a string in Pawn, I believe.

Bugsy 04-11-2009 14:00

Re: Problem with Sizeof
 
sizeof will not work in that fashion.

You can use strlen( array[0] )

From Pawn language guide:
Code:

• Arrays and the sizeof operator
The sizeof operator returns the size of a variable in “elements”. For a
simple (non-compound) variable, the result of sizeof is always 1, because an
element is a cell for a simple variable.

An array with one dimension holds a number of cells and the sizeof operator
returns that number. The snippet below would therefore print “5” at the
display, because the array “msg” holds four characters (each in one cell) plus
a zero-terminator:

Listing: sizeof operator
new msg[] = "Help"
printf("%d", sizeof msg);

With multi-dimensional arrays, the sizeof operator can return the number
of elements in each dimension. For the last (minor) dimension, an element
will again be a cell, but for the major dimension(s), an element is a sub-array.
In the following code snippet, observe that the syntax sizeof matrix refers
to the major dimension of the two-dimensional array and the syntax sizeof
matrix[] refers to the minor dimension of the array. The values that this
snippet prints are 3 and 2 (for the major and minor dimensions respectively):

Listing: sizeof operator and multidimensional arrays

new matrix[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }
printf("%d %d", sizeof matrix, sizeof matrix[]);


Arkshine 04-11-2009 14:48

Re: Problem with Sizeof
 
sizeof MyArray[] ; if array is : MyArray[][]

[edit] : Ah you want the size of one specific string ? You have to use strlen.

Sn!ff3r 04-11-2009 16:12

Re: Problem with Sizeof
 
Quote:

[edit] : Ah you want the size of one specific string ? You have to use strlen.
Thanks.


All times are GMT -4. The time now is 02:22.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.