我在访问dog中包含的checkups结构时遇到了一些问题。由于狗被包含在内,我认为我只是指向来自容器的狗的检查,但这似乎在尝试添加检查日期或替换一个时导致错误。
Sub LoopThroughFiles()
Dim wbk As Workbook
Dim Filename As String
Dim FirstFile As String
Dim FileDirectory As String
Dim x As Workbook
Set x = Workbooks.Open("test.xlsx")
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Please select a folder"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then
MsgBox "You did not select a folder"
Exit Sub
Else
FileDirectory = .SelectedItems(1) & "\"
End If
End With
Set wbk = Workbooks.Add
Filename = Dir(FileDirectory)
FirstFile = Filename
Do Until Filename = ""
Dim new_wb As Workbook
Set new_wb = Workbooks.Open(FileDirectory & Filename)
If FirstFile = Filename Then
x.Sheets("report").UsedRange.Copy
new_wb.Sheets("roster").Range("a1").PasteSpecial
End If
new_wb.Close savechanges:=True
Filename = Dir
Loop
MsgBox "All store totals have been added"
End Sub
以下是我尝试在检查中添加新日期的代码,但是当它尝试将其添加到我的程序崩溃时。关于为什么会发生这种情况的任何方向都将不胜感激。
// used to create a linked list of containers, each contaning a "dog"
struct container {
struct dog *dog;
struct container *next;
} *list = NULL;
// used to hold dog information and linked list of "checkups"
struct dog {
char name[30];
char breed[30];
struct checkup *checkups;
};
// used to create a linked list of checkups containing "dates"
struct checkup {
char date[30];
struct checkup *next;
};
答案 0 :(得分:0)
为什么使用strcpy()
设置struct checkup *
的值?这会尝试将源指针指向的数据复制到假定由目标指针指向的数组,实际上我没有特别的理由认为目标指针是有效的。当然没有理由认为源数据具有char
的以空终止的数组的形式,因此这里的原始代码严重错误。
简单分配更可能是正确的:
tempList->dog->checkups = tempCheck;
但请注意,由于tempList-> dog->检查的先前值丢失,因此存在内存泄漏的严重风险。另请注意,它与函数名称的 add_
部分所暗示的行为不匹配 - 它更像set_
。如果您希望每只狗能够维持一次以上的检查,那么您需要做更多的工作。