无法通过指针创建结构数组。如果您创建全局数组,那么一切正常,但我想学习如何将数组从一个函数传递到另一个函数。
#include <stdlib.h>
#include <stdio.h>
struct Strack{
int amount;
char client[50];
};
void struktura(int *a, char *s, struct Strack *ps){
ps->amount=*a;
strcpy(ps->client, *s);
// for(int c=0;c<5;c++){
// ps[c].amount=a[c];
// strcpy(ps[c].client, s[c]);
// }
}
void Print(int *X, struct Strack *s){
for(int c=0;c<X;c++){
printf("%d \t %s", s[c].amount, s[c].client);
printf("\n");
}
}
int main(){
int X=5;
int a1[]={32154, 123123, 234234, 324234234, 56421};
char *str[]={"Bob", "Vaka-Vaka", "Ron", "Wuka-Wuka", "Tod"};
struct Strack st[5];
// struktura1(a1, str, &s);
for(int c=0;c<5;c++){
struktura(a1[c], str[c], &st[c]);
}
Print(&X, &st);
return 0;
}
我理解这一行:
您打算将字符串复制
s
到ps->client
,但*s
它是一个取消引用运算符,这意味着您正在传递strcpy(char*, char)
.你需要复制这一行:
在函数中,
Print
X
这是一个指向 的指针int
,也就是说,如果您进行X
迭代,那么您再次需要取消引用该指针。在线上:
你传
a1[c]
值,你的函数strukture
把指针作为第一个参数,也就是说,你需要a1[c]
使用&
.似乎仅此而已!:)