【发布时间】:2011-08-25 14:18:06
【问题描述】:
我有一个代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
typedef struct NOTE
{
char NAME[50],
TELE[30];
int BDAY[3];
} NOTE;
void AddNote(NOTE * Notes, int NotesCount, NOTE * Temp)
{
Notes = (struct NOTE *) realloc(Notes, (NotesCount + 1) * sizeof(struct NOTE));
memcpy(Notes + NotesCount, Temp, sizeof(struct NOTE));
}
void main()
{
int NotesCount = 0, i = 0, f = 0;
int a;
NOTE * BLOC_NOTE, * Temp;
Temp = (struct NOTE *) malloc(sizeof(struct NOTE));
BLOC_NOTE = (struct NOTE *) calloc(0, sizeof(struct NOTE));
for(i = 0; i < 4; i++)
{
ShowInputDialog(Temp);
AddNote(BLOC_NOTE, NotesCount++, Temp);
}
}
在 BLOC_NOTE 的第三个元素上,程序在
处崩溃Notes = (struct NOTE *) realloc(Notes, (NotesCount + 1) * sizeof(struct NOTE));
VS 告诉我操作系统 Windows 启动了断点...
怎么了?
编辑
将代码从评论移到这里
void ShowInputDialog(NOTE * Temp)
{
printf("Name: ");
scanf("%s", (*Temp).NAME);
printf("Telephone: ");
scanf("%s", (*Temp).TELE);
printf("Birthday: ");
scanf("%d\.%d\.\%d", (*Temp).BDAY, ((*Temp).BDAY + 1), ((*Temp).BDAY + 2));
}
【问题讨论】:
-
看起来没问题,所以错误肯定在其他地方,比如
ShowInputDialog。那有什么作用? -
void ShowInputDialog(NOTE * Temp) { printf("Name: "); scanf("%s", (*Temp).NAME); printf("Telephone: "); scanf("%s", (*Temp).TELE); printf("Birthday: "); scanf("%d\.%d\.\%d", (*Temp).BDAY, ((*Temp).BDAY + 1), ((*Temp).BDAY + 2)); } -
我不确定我能否破译您的日期格式字符串。它究竟应该是什么意思?如果输入不完全符合预期会发生什么?
-
我的编译器抱怨 \.也!它可能应该是“%d/%d/%d”或“%d.%d.%d”,这取决于你如何写日期。
标签: c visual-studio struct realloc