тестовая прога:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define TEST "test string"
struct struct1 {
char *str;
};
struct struct2 {
struct struct1 *stru;
};
void func(char *d, char *s) {
d = (char *)malloc(strlen(s)+1);
strncpy(d,s,strlen(s)+1);
}
void main() {
struct struct2 *s;
s = (struct2 *)malloc(sizeof(struct2));
s->stru = (struct1 *)malloc(sizeof(struct1));
if (!s|!s->stru) printf("malloc() error\n");
memset(s->stru,0,sizeof(struct1));
//s->stru->str = (char *)malloc(sizeof(TEST)); // работает!
//strncpy(s->stru->str,TEST,sizeof(TEST));
func(s->stru->str,TEST); // не работает! (s->stru->str после работы ф-ции равен NULL)
printf("str=%s\n",s->stru->str);
} ---
Почему в функции память не выделилась?
Использую VC++.NET (2002).
|