473,320 Members | 1,958 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

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

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
6 14686
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
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
Frederick Gotham posted:
size_t len;

std::size_t len;

--

Frederick Gotham
Sep 1 '06 #4
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
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
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 thread has been closed and replies have been disabled. Please start a new discussion.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.