我正在尝试创建一个指向char的指针数组。 我决定使用typedef definicion,但我不知道我做错了什么......
typedef struct _pp{
char* a[10];
int b;
}pp;
int main(){
pp *taa = (pp* )malloc(sizeof(pp));
taa->b = 2;
printf("%d\n", taa->b);
taa->a[1]=(char* )malloc(strlen("Peter")+1);
strcpy((taa->*a[1]), "Peter");
printf("%s\n", taa->*(a[1]));
/*
/ 有效 /
int i;
int* a[5];
for(i=0;i<5;i++){
a[i]=(int* )malloc(sizeof(int));
**(a+i)=i+100;
printf("%d\n", **(a+i));
*/}
EDITED
这是好的做法吗?
for(i=0;i<10;i++){
taa->a[i]=(char* )malloc(strlen("Peter")+1);
strncpy((taa->a[i]), "Peter", strlen("Peter"));
}
for(i=0;i<10;i++){
printf("%s\n", taa->a[i]);
}
问题3)taa->*a[1]
相当于ta.***(a + i)
?
printf("%c",*taa->a[1]); It dereference 'P' character, how i can get acces to 'e'?
printf("%c",*(taa->a[1]+0));
printf("%c",*(taa->a[1]+1));
这就是......
答案 0 :(得分:1)
尝试:
strcpy((taa->a[1]), "Peter");
另请注意[1]
正在访问数组中的第二个元素;首先使用[0]
。最好使用strncpy
或者你传递char缓冲区(字符串)长度的“安全”来阻止内存被抄写是好的。
修改强>
非标准的安全字符串函数:
答案 1 :(得分:0)
strcpy
函数需要第一个参数的char*
类型。
在您的pp struct
中,您有十char*
秒。您使用char*
访问了第二个taa->a[1]
。因此,在*
之后移除->
会为您提供所需内容。
这很好用:
strcpy((taa->a[1]), "Peter");