Finding array length

Posted on 2004-08-04
Last Modified: 2011-08-18

I am currently getting frustrated about a problem I have been thinking about for ages.

If I have a function:

void in_array_cp(char *haystack[],char *needle)

which is supposed to find out if an array (haystack) contains a certain element(needle), I need to know the number of elements in the array to be able to scan through it. Is there a way to find the number of elements in the array or do I need to pass it as another parameter?

by the way: I am using GCC3.3.1 on SuSE Linux9
Question by:Professor
LVL 46

Expert Comment

by:Sjef Bosman
ID: 11713153
1. No way
2. Yes, you need another parameter to pass the # of elements.
LVL 45

Accepted Solution

sunnycoder earned 125 total points
ID: 11713162
Hi Professor,

> Is there a way to find the number of elements in the array or do I need to pass it as another
> parameter?

Number of valid elements -> pass another parameter
Array capacity -> if actually declared as array then sizeof(array)/sizeof(element)
               -> if declared as pointer and malloced then again pass another argument

LVL 16

Expert Comment

ID: 11713172
Yes, but only if you make some assumptions.

You could assume that the las entry in the haystack is NULL.

You could assume a fixed number of entries in haystack.

You could assume that haystack has been allocated on-heap.

I cant think of any other reliable way to tell without making assumptions.

The required code should be obvious for each of the above assumptions but if you need help, just ask.

Good luck.


Expert Comment

ID: 14811679
Yes, as PaulCaswell  says, keeping a NULL at the end of your haystack[]  seems to be a better idea to me. this will allow you to determine the length of array by keep counting the number of elements until a NULL occurs.

Featured Post

Give your grad a cloud of their own!

With up to 8TB of storage, give your favorite graduate their own personal cloud to centralize all their photos, videos and music in one safe place. They can save, sync and share all their stuff, and automatic photo backup helps free up space on their smartphone and tablet.

Question has a verified solution.

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

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use nested-loops in the C programming language.

895 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

17 Experts available now in Live!

Get 1:1 Help Now