Solved

Counting ekement in a array

Posted on 2000-04-20
14
162 Views
Last Modified: 2010-04-02
Could someone tell me if there is a function that return the number of element in an array of char under C/C++??

I could just put a zero at the end of each of my arrays.... but this method would suck a lot......

Thanks
0
Comment
Question by:David MacDonald
  • 4
  • 2
  • 2
  • +5
14 Comments
 
LVL 4

Expert Comment

by:captainkirk
ID: 2734919
If you declared the array like this:

   char a[MAX_ITEMS];

then the size of the array is MAX_ITEMS.

If you declared the array like this:

   char a[] = "some string";

then the size of the array is

   strlen(a);

Let's say you have an 2D array like this:

   char szDataItems[MAX_ITEMS][MAX_LEN];

then the size of the array (#elements) is:
   sizeof(szDataItems) / sizeof szDataItems[0];
0
 
LVL 5

Expert Comment

by:Wyn
ID: 2734959
For pointers ,using strlen...
0
 
LVL 1

Expert Comment

by:Jmccp
ID: 2735047
Sure there is.  It is strlen().

Example:

#include <stdio.h>
#include <string.h>

main()
{

char buf[80];
size_t length;  

puts("Enter a character string: ");
gets(buf);

length = strlen(buf);

if (length != 0)
  printf("\nThe string is %u characters long.", length);
else
  printf("\nThe string is 0 characters long.");
}

Jim
0
 
LVL 9

Expert Comment

by:ShaunWilde
ID: 2735122
NOTE 1: strlen will give you the length of the string not the length of the array that contains the string.

e.g.

char buf[80]; // array length is 80

strcpy(buf,"hello world");

int nLen=strlen(buf); // will return 11 not 80

NOTE 2:
> I could just put a zero at the end of each of my arrays.... but this method would suck a lot

that is how strlen works it :) it counts the number of elements until it reaches '\0' (==0) - you should always make room for this terminator in your string array.

e.g.

to contain the string "hello world" requires an array of 12 not 11.

char buf[11];
strcpy(buf,"hello world"); // probable crash

char buf[12];
strcpy(buf,"hello world"); // okay


0
 
LVL 3

Accepted Solution

by:
LucHoltkamp earned 10 total points
ID: 2737744
If you have an array like:

MyType array[const_expression];

you can find the number of elements like:

unsigned noe = sizeof(array) / sizeof(array[0]);

Luc
0
 
LVL 4

Expert Comment

by:captainkirk
ID: 2737768
guys - all this has been said in my comment above...
0
 
LVL 5

Expert Comment

by:Wyn
ID: 2737951
LOL:-)
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 1

Author Comment

by:David MacDonald
ID: 2741132
Well, I worked it out with the "coyote method" (old inside joke among us) doing it with a loop....

The structure of the array changed a bit since I post the question... it has changed from a char *ptr to a

struct MyStruct **ptr[10][]....

Kind a complicated and there are other arrays that joins to that.... so thanks a lot for your help to you all.....
0
 
LVL 1

Author Comment

by:David MacDonald
ID: 2741139
I'll try to delete the question, so until I find out how, just ignore it...hehehehe....
0
 

Expert Comment

by:GoofyJoe99
ID: 2746375
if your array is a[] then its length is
int aLength = (sizeof a / sizeof *a);
0
 
LVL 1

Author Comment

by:David MacDonald
ID: 2748371
Say?

Why the division of sizeof a and sizeof *a??
0
 
LVL 3

Expert Comment

by:abusimbel
ID: 2758548
GoofyJoe99 it's just on right.

sizeof(array) gives you the memory size in bytes of the array.

sizeof(array[0]) gives you the memory size in bytes of one element of the array.

Goofy wins. ;-)
0
 
LVL 9

Expert Comment

by:ShaunWilde
ID: 2758589
it is also what LucHoltkamp said

> unsigned noe = sizeof(array) / sizeof(array[0]);

0
 
LVL 1

Author Comment

by:David MacDonald
ID: 2761506
Since LucHoltkamp is the first that gave the division method, i'll accept his answer. But thanks to you all....
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now