![]() |
copy array of strings in single pointer
I have double pointer say char **id having the array of strings in ascii like id[0]= "3132" id[1]= "3635" ..etc so when i do printf %s of id[0] and id[1] i get 12 and 65 as output.
I need to store these output values in a char *p pointer so that at later point i can get these values using index p[0],p[1] .. etc. I have tried for(i=0;i<size;i++)sprintf(p+i,"%s",id[i]) but it did not help. Any other ideas. Thanks for the help. |
Re: copy array of strings in single pointer
On 24/08/2012 11:54, raghujindia@gmail.com wrote:
[Aside - gmail's getting worse isn't it?] > I have double pointer say char **id having the array of strings I think you need to learn the terminology, so you can ask your questions clearly. "double pointer" is most likely to be read as a pointer to a double. That's not what you have - you have a pointer to a pointer to char, which in this case seems to be a pointer to the first of an array of pointers, each of which points to the first character of a C string. > in ascii like id[0]= "3132" id[1]= "3635" ..etc so when i do > printf %s of id[0] and id[1] i get 12 and 65 as output. "3132" isn't what you mean, either > I need to store these output values in a char *p pointer Well you can't. All you can store in a char * is one address which is the address of a char. > so that at later point i can get these values using index > p[0],p[1] .. etc. If p is char *, then p[0] is a char. > I have tried for(i=0;i<size;i++)sprintf(p+i,"%s",id[i]) > but it did not help. I'm not surprised. >Any other ideas. Tell us more clearly what you are trying to achieve, and show us real compilable code. http://www.catb.org/esr/faqs/smart-questions.html |
Re: copy array of strings in single pointer
On Friday, August 24, 2012 4:42:43 PM UTC+5:30, Mark Bluemel wrote:
> On 24/08/2012 11:54, wrote: > > [Aside - gmail's getting worse isn't it?] > > > > > I have double pointer say char **id having the array of strings > > > > I think you need to learn the terminology, so you can ask your > > questions clearly. "double pointer" is most likely to be read as > > a pointer to a double. That's not what you have - you have a pointer > > to a pointer to char, which in this case seems to be a pointer to > > the first of an array of pointers, each of which points to the first > > character of a C string. > > > > > in ascii like id[0]= "3132" id[1]= "3635" ..etc so when i do > > > printf %s of id[0] and id[1] i get 12 and 65 as output. > > > > "3132" isn't what you mean, either > > > > > I need to store these output values in a char *p pointer > > > > Well you can't. All you can store in a char * is one address > > which is the address of a char. > > > > > so that at later point i can get these values using index > > > p[0],p[1] .. etc. > > > > If p is char *, then p[0] is a char. > > > > > I have tried for(i=0;i<size;i++)sprintf(p+i,"%s",id[i]) > > > but it did not help. > > > > I'm not surprised. > > > > >Any other ideas. > > > > Tell us more clearly what you are trying to achieve, and > > show us real compilable code. > > > > http://www.catb.org/esr/faqs/smart-questions.html I'm sorry Maybe I did not frame my query correctly. There are ascii stringsstored in a memory and that memory address is stored in a pointer to a double. I need to store these ascii string values in my memory location. Say A = "string1" , B = "string2" where A and B are memory addresses. These A,B are stored in a pointer to double i.e say if char **dp is the pointer to a double, then dp[0] contains A and dp[1] contains B . if char *ptris a pointer pointing my memory location, I need to copy those ascii strings in ptr. Hope I'm clear. thanks for the help. |
Re: copy array of strings in single pointer
raghujindia@gmail.com wrote:
> I have double pointer say char **id having the array of strings in > ascii like id[0]= "3132" id[1]= "3635" ..etc so when i do printf %s > of id[0] and id[1] i get 12 and 65 as output. I need to store these > output values in a char *p pointer so that at later point i can get > these values using index p[0],p[1] .. etc. I have tried > for(i=0;i<size;i++)sprintf(p+i,"%s",id[i]) but it did not help. Any > other ideas. Thanks for the help. > I have a little trouble understanding you, so I will guess at what you want. This ain't tested code. It's whiteboard code. // This is your double pointer thing using array notation // If you try it, try double pointer notation - should work // fine. char *alph[] = { "One", "Two", "Three" }; char bob[4096]; char *p = bob. int main(void) { const int lim = sizeof(alph)/sizeof(alph[0]); // alph[0] is still a pointer assert(lim==3); // sanity check - comment out later. memset(bob,0,sizeof(bob)); for (k=0;k<lim;k++) { strcat(p,alph[k]); p += strlen(p); p++; } // \0 means a null character. // At this point, bob is "One\0Two\0Three\0\0....\0" p = bob[0]; k = 0; while (*p) { printf("%d: %s\n",k,p); p+= strlen(p); p++; // past the null... k++; } return 0; } -- Les Cargill |
Re: copy array of strings in single pointer
<raghujindia@gmail.com> schrieb im Newsbeitrag news:17cd55c9-b1c6-494d-b6fa-6bcd26963d6d@googlegroups.com... I'm sorry Maybe I did not frame my query correctly. There are ascii strings stored in a memory and that memory address is stored in a pointer to a double. I need to store these ascii string values in my memory location. Say A = "string1" , B = "string2" where A and B are memory addresses. These A,B are stored in a pointer to double i.e say if char **dp is the pointer to a double, then dp[0] contains A and dp[1] contains B . if char *ptr is a pointer pointing my memory location, I need to copy those ascii strings in ptr. Hope I'm clear. thanks for the help. ------------------------------------------------------------------ I still can't believe that you mean "pointer to a double". double is a numeric floating point type. Do you mean pointer to a pair of strings? |
Re: copy array of strings in single pointer
On Friday, August 24, 2012 5:36:23 PM UTC+5:30, Heinrich Wolf wrote:
> <> schrieb im Newsbeitrag > > ... > > > > I'm sorry Maybe I did not frame my query correctly. There are ascii strings > > stored in a memory and that memory address is stored in a pointer to a > > double. I need to store these ascii string values in my memory location. > > Say A = "string1" , B = "string2" where A and B are memory addresses. These > > A,B are stored in a pointer to double i.e say if char **dp is the pointer to > > a double, then dp[0] contains A and dp[1] contains B . if char *ptr is a > > pointer pointing my memory location, I need to copy those ascii strings in > > ptr. > > Hope I'm clear. thanks for the help. > > ------------------------------------------------------------------ > > I still can't believe that you mean "pointer to a double". double is a > > numeric floating point type. Do you mean pointer to a pair of strings? Oops.. my bad.. I meant its a pointer to pointer. |
Re: copy array of strings in single pointer
On 08/24/2012 07:31 AM, raghujindia@gmail.com wrote:
.... > I'm sorry Maybe I did not frame my query correctly. There are ascii strings stored in a memory and that memory address is stored in a pointer to a double. I need to store these ascii string values in my memory location. > Say A = "string1" , B = "string2" where A and B are memory addresses. These A,B are stored in a pointer to double i.e say if char **dp is the pointer to a double, then dp[0] contains A and dp[1] contains B . if char *ptr is a pointer pointing my memory location, I need to copy those ascii strings in ptr. > Hope I'm clear. thanks for the help. Since the only things that you describe involving doubles are your pointers to double, I strongly suspect that you should not be using such pointers for this purpose. Wherever you currently have double* (a pointer to double), try replacing it with char** (a pointer to a pointer to char). Without a clearer statement of your problem, it's hard to give more specific advice, but that at least should be a good starting point. The best way to make it clear what you want is to provide a code sample. Preferably a complete working program, as small as possible while demonstrating what you're talking about. If your problem is that you can't get it to work, a complete compilable program is second best. If your problem is that you can't get it to compile, a complete program that doesn't compiler and the associated error messages would be helpful. If you can't even figure out how to start, you at least need to provide a better description of what you're trying to do. It's clear that you don't know how to correctly use words describing C language constructs - it might be better to describe what you want to do in terms of what a user of your program would see, rather than in terms of how your program does it. -- James Kuyper |
Re: copy array of strings in single pointer
On Friday, August 24, 2012 5:16:37 PM UTC+5:30, Les Cargill wrote:
> wrote: > > > I have double pointer say char **id having the array of strings in > > > ascii like id[0]= "3132" id[1]= "3635" ..etc so when i do printf %s > > > of id[0] and id[1] i get 12 and 65 as output. I need to store these > > > output values in a char *p pointer so that at later point i can get > > > these values using index p[0],p[1] .. etc. I have tried > > > for(i=0;i<size;i++)sprintf(p+i,"%s",id[i]) but it did not help. Any > > > other ideas. Thanks for the help. > > > > > > > I have a little trouble understanding you, so I will guess at what you > > want. This ain't tested code. It's whiteboard code. > > > > // This is your double pointer thing using array notation > > // If you try it, try double pointer notation - should work > > // fine. > > > > char *alph[] = { > > "One", > > "Two", > > "Three" > > }; > > > > char bob[4096]; > > > > char *p = bob. > > > > int main(void) > > { > > const int lim = sizeof(alph)/sizeof(alph[0]); > > // alph[0] is still a pointer > > assert(lim==3); // sanity check - comment out later. > > > > memset(bob,0,sizeof(bob)); > > > > for (k=0;k<lim;k++) > > { > > strcat(p,alph[k]); > > p += strlen(p); > > p++; > > } > > // \0 means a null character. > > // At this point, bob is "One\0Two\0Three\0\0....\0" > > > > p = bob[0]; > > > > k = 0; > > while (*p) > > { > > printf("%d: %s\n",k,p); > > p+= strlen(p); > > p++; // past the null... > > k++; > > } > > > > return 0; > > } > > > > -- > > Les Cargill thanks a lot. |
| All times are GMT. The time now is 12:51 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.