| re: how to allocate memory for this
raju wrote:[color=blue]
> hello all,
>
> i want to know about dynamically allocating for
> char **ptr
>
> and in problem
> #include<stdio.h>
> main()
> {
> char **p={"hello","world"};
>
> printf("%s",*ptr);
> printf("%c",**ptr);
> printf("%s",*(ptr+1));
>
> }
>
> i wann to print "hello" , "h", "world"
>
> is this correct code , is ther any problem with this code;
>
> well i know while initializing tha 2d char array
> char *p[]={"hello","world"};
> but i want to know to how i can initialize using pointer to ponter;;
>[/color]
Maybe this code will help?
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(void)
{
char** p;
/* First of all we need memory to store the two pointers */
if( (p = malloc(sizeof *p * 2)) == NULL)
return EXIT_FAILURE;
/* Now we need memory to store the actual strings.
* There are two strings, "hello" and "world".
* We just allocate 100 bytes to each string, to keep things simple.
*/
if( (*p = malloc(100)) == NULL
|| (*(p + 1) = malloc(100)) == NULL)
return EXIT_FAILURE;
/* Now copy some values to the strings */
strcpy(p[0], "hello");
strcpy(p[1], "world");
/* And print the contents */
printf("%s\n", *p);
printf("%c\n", **p);
printf("%s\n", *(p + 1));
/* Free mem and exit */
free(p[0]);
free(p[1]);
free(p);
return EXIT_SUCCESS;
} |