length of 2D Array >> char **myString= (char **) malloc (sizeof (char *));

D

davidb

Hi,
does someone know how to get the length of a 2 dimensional string
array:
here what i need:

----------------------------------------------------------------

char **getList(void){

char **myString= (char **) malloc (sizeof (char *));

for(int i=0;i<10;i++){
myString= (char **) realloc (myString, (i+1) * sizeof (char *));
myString = (char *) malloc (255 * sizeof(char));
strcpy (myString,"List Item");
}
return myString;
}

void something(void){
char **dataList = getList();

int length = ????? // IDEA ?

for(int i=0;i<length;i++){
printf(dataList);
}
}

----------------------------------------------------------------

i've done several experiments with sizeof like
int length = (sizeof(array)/sizeof(array[0])
but most time i always get length = 1.

sorry, thats a bit simple, but i am cosseted java progger ;)
you know > "my String".length.
So, if you know, please tell me.

best Regards,
David
 
F

Frederick Gotham

davidb posted:
Hi,
does someone know how to get the length of a 2 dimensional string
array:


It's not possible using a pointer alone.

If you're going to be using a pointer (e.g. with dynamic allocation), then
you'll have to keep track of the length yourself -- Standard C++ doesn't
provide such a facility. Even something as simple as:

#include <cstddef>

template<class T>
struct ArrPtr {
T *p;
size_t len;
};
 
D

davidb

Hi,
yes, thats great, i dont thought about returning all that values in one
struct.
Sometimes it is that easy ;)

Thank you,
David
 
T

Thomas J. Gritzan

davidb said:
Hi,
does someone know how to get the length of a 2 dimensional string
array:

It is a one dimensional C-style-string array. Or a 2 dimensional char array.
----------------------------------------------------------------

char **getList(void){

char **myString= (char **) malloc (sizeof (char *));

for(int i=0;i<10;i++){
myString= (char **) realloc (myString, (i+1) * sizeof (char *));
myString = (char *) malloc (255 * sizeof(char));
strcpy (myString,"List Item");
}
return myString;
} [...]
----------------------------------------------------------------

i've done several experiments with sizeof like
int length = (sizeof(array)/sizeof(array[0])
but most time i always get length = 1.

sorry, thats a bit simple, but i am cosseted java progger ;)
you know > "my String".length.
So, if you know, please tell me.


Why don't you use standard C++ classes?

#include <iostream>
#include <string>
#include <vector>

int main()
{
std::vector<std::string> myList;
list.push_back("Item 1");
list.push_back("Item 2");

int length = myList.size();

for (int i = 0; i < length; i++)
std::cout << myList << std::endl;

return 0;
}
 
J

Jerry Coffin

[ ... ]
int length = myList.size();

for (int i = 0; i < length; i++)
std::cout << myList << std::endl;


std::copy(myList.begin(), myList.end(),
std::eek:stream_iterator(std::cout, "\n"));
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top