如何正确访问此结构中的指针?
How can I properly access the pointers from this structure?
所以我有一个结构列表,我用 malloc()
为它们分配了 space,使用 *p
。现在我想访问每个 ptrletter
元素并使用它。我该怎么做?这是我的代码。
typedef struct Words {
char *ptrletter;
int numbers;
} Word;
int main(){
FILE *f, *g;
char c,d;
int *a;
int nrofline=0;
int elements=0;
char string[2];
int lines=0;
f=fopen("m_in.txt","r");
do{
d=fgetc(f);
if (d=='\n'){
lines++;
}
}while (d!=EOF);
a=(int*)malloc(sizeof(int)*lines);
rewind(f);
lines=0;
do{
d=fgetc(f);
if ((d>='A' && d<='Z') || (d>='a' && d<='z')){
elements++;
}
if (d=='\n'){
a[lines]=elements;
lines++;
elements=0;
}
}while (d!=EOF);
Word *p=(Word*)malloc(sizeof(Word)*lines);
int j=0;
for (j=0; j<lines; j++){
strcpy(p[j].ptrletter,"");
p[j].numbers=0;
}
rewind(f);
}
我在 strcpy()
部分(几乎是最后一个)出现错误,我试图在 google 上搜索错误,但我没有找到任何有用的东西。必须动态分配。
在您的代码中,
strcpy(p[j].ptrletter,"");
p[j].ptrletter
是 也是 一个尚未分配任何内存的指针。如果没有适当的分配,指针指向无效的内存,使用它会导致 undefined behavior.
你可以使用malloc()
或family分配内存给p[j].ptrletter
,然后才能真正使用它。
所以我有一个结构列表,我用 malloc()
为它们分配了 space,使用 *p
。现在我想访问每个 ptrletter
元素并使用它。我该怎么做?这是我的代码。
typedef struct Words {
char *ptrletter;
int numbers;
} Word;
int main(){
FILE *f, *g;
char c,d;
int *a;
int nrofline=0;
int elements=0;
char string[2];
int lines=0;
f=fopen("m_in.txt","r");
do{
d=fgetc(f);
if (d=='\n'){
lines++;
}
}while (d!=EOF);
a=(int*)malloc(sizeof(int)*lines);
rewind(f);
lines=0;
do{
d=fgetc(f);
if ((d>='A' && d<='Z') || (d>='a' && d<='z')){
elements++;
}
if (d=='\n'){
a[lines]=elements;
lines++;
elements=0;
}
}while (d!=EOF);
Word *p=(Word*)malloc(sizeof(Word)*lines);
int j=0;
for (j=0; j<lines; j++){
strcpy(p[j].ptrletter,"");
p[j].numbers=0;
}
rewind(f);
}
我在 strcpy()
部分(几乎是最后一个)出现错误,我试图在 google 上搜索错误,但我没有找到任何有用的东西。必须动态分配。
在您的代码中,
strcpy(p[j].ptrletter,"");
p[j].ptrletter
是 也是 一个尚未分配任何内存的指针。如果没有适当的分配,指针指向无效的内存,使用它会导致 undefined behavior.
你可以使用malloc()
或family分配内存给p[j].ptrletter
,然后才能真正使用它。