Solved

# Counting ekement in a array

Posted on 2000-04-20
166 Views
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
Question by:David MacDonald
• 4
• 2
• 2
• +5

LVL 4

Expert Comment

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

ID: 2734959
For pointers ,using strlen...
0

LVL 1

Expert Comment

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

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

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

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

LVL 5

Expert Comment

ID: 2737951
LOL:-)
0

LVL 1

Author Comment

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

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

Expert Comment

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

LVL 1

Author Comment

ID: 2748371
Say?

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

LVL 3

Expert Comment

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

ID: 2758589
it is also what LucHoltkamp said

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

0

LVL 1

Author Comment

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

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their waâ€¦
Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more â€¦
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relatâ€¦
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.