Lil*_*agy 1 c malloc pointers dynamic-memory-allocation
所以,我有结构的列表和我分配的空间给他们用malloc(),使用*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);
}
Run Code Online (Sandbox Code Playgroud)
我在strcpy()部分(几乎是最后一个)得到错误,我试图在谷歌上搜索错误,但我没有发现任何有用的东西.它必须动态分配.
在你的代码中,
strcpy(p[j].ptrletter,"");
Run Code Online (Sandbox Code Playgroud)
p[j].ptrletter是还尚未分配的任何内存的指针.没有适当的分配,指针指向无效的内存,使用它会导致未定义的行为.
您可以使用malloc()或系列来分配内存,p[j].ptrletter然后才能实际使用它.