【发布时间】:2015-12-02 21:04:21
【问题描述】:
我有这个功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct adress Adress;
struct adress {char *num; char *street; char *namestreet; char *city; char *postal;};
int main(void) {
int n = 0;
int i;
struct adress *Adress;
FILE *f = fopen("/home/file.txt","r");
if (!f) {
printf("Impossible to open file\n");
return 1;
}
char line[256];
while (fgets(line,256,f)) {
if (n == 0) {
Adress = malloc(sizeof(struct adress)*(n+1));
}
Adress[n].num = malloc( 256*sizeof( char));
Adress[n].street = malloc( 256*sizeof( char));
Adress[n].namestreet = malloc( 256*sizeof( char));
Adress[n].city = malloc( 256*sizeof( char));
Adress[n].postal = malloc( 256*sizeof( char));
fscanf( f , "%s %s %s %s %s", Adress[n].num, Adress[n].street, Adress[n].namestreet, Adress[n].city ,Adress[n].postal);
n++;
}
for (i = 0; i < n; i++)
{
printf("\nNum : %s \n", Adress[i].num);
printf("\nStreet : %s \n", Adress[i].street);
printf("\nStreet Name :%s \n", Adress[i].namestreet);
printf("\nCity :%s \n", Adress[i].city);
printf("\nPostal Code : %s \n", Adress[i].postal);
}
fclose(f);
return 0;
}
当我尝试编译我的程序时,出现以下错误:
* 检测到 glibc * ./myprog: 损坏的双链表:0x0000000001cd6240
我做错了什么?
以前有人遇到过这种错误吗?
【问题讨论】:
-
对于 typedef 和本地数组指针的名称使用相同的标识符
Adress是相当混乱的。 -
Adress只有一个元素 byAdress = malloc(sizeof(struct adress)*(n+1));。 -
澄清一下,不是编译器提供输出,而是你的程序。
-
我该怎么做才能导致问题?
标签: c