By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,245 Members | 1,118 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,245 IT Pros & Developers. It's quick & easy.

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

P: n/a
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[i] = (char *) malloc (255 * sizeof(char));
strcpy (myString[i],"List Item");
}
return myString;
}

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

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

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

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

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

Sep 1 '06 #1
Share this Question
Share on Google+
6 Replies


P: n/a
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;
};

--

Frederick Gotham
Sep 1 '06 #2

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

Thank you,
David

Frederick Gotham schrieb:
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;
};

--

Frederick Gotham
Sep 1 '06 #3

P: n/a
Frederick Gotham posted:
size_t len;

std::size_t len;

--

Frederick Gotham
Sep 1 '06 #4

P: n/a
davidb schrieb:
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[i] = (char *) malloc (255 * sizeof(char));
strcpy (myString[i],"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::stringmyList;
list.push_back("Item 1");
list.push_back("Item 2");

int length = myList.size();

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

return 0;
}

--
Thomas
Sep 1 '06 #5

P: n/a
In article <ed**********@newsreader2.netcologne.de>,
Ph*************@gmx.de says...

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

for (int i = 0; i < length; i++)
std::cout << myList[i] << std::endl;
std::copy(myList.begin(), myList.end(),
std::ostream_iterator(std::cout, "\n"));

--
Later,
Jerry.

The universe is a figment of its own imagination.
Sep 1 '06 #6

P: n/a
davidb wrote:
Hi,

Please don't top-post. Your replies belong following or interspersed
with properly trimmed quotes. See the majority of other posts in the
newsgroup, or the group FAQ list:
<http://www.parashift.com/c++-faq-lite/how-to-post.html>


Brian
Sep 1 '06 #7

This discussion thread is closed

Replies have been disabled for this discussion.