我正在處理此考試問題,無法找出用於複製類似內容的內存管理。我是新手,所以這個問題對你來說似乎微不足道。 當從一個結構複製名字和姓氏到另一個時,我會得到錯誤。也許我需要重新分配內存?我嘗試了沒有任何運氣。 預先感謝您。將動態字符串複製到結構中的動態字符串struct
PS:X標誌着錯誤
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
typedef struct zaposleni { int id; char *ime; char *prez; } ZAP;
typedef struct firma { char naziv[20]; int br; ZAP *zap; } FIRMA;
void kopiraj (char *s1, char *s2)
{
while (*s1++ = *s2++);
}
void zaposli(FIRMA *f, ZAP *z)
{
bool x = false; int i;
for (i = 0; f->br > i; i++)
if (f->zap[i].id == z->id) x = true;
if (x==false) {
kopiraj(f->zap[i].ime,z->ime); // X
strcpy(f->zap[i].prez, z->prez);
f->zap[i].id = z->id;
}
}
int main()
{
FIRMA f = { "Lanaco",0, NULL };
ZAP z = { 1,(char*)malloc(4), (char*)malloc(5) };
strcpy(z.ime, "Ana");
strcpy(z.prez, "Anic");
zaposli(&f, &z);
free(z.ime);
free(z.prez);
free(f.zap[0].ime);
free(f.zap[0].prez);
free(f.zap);
return 0;
}
請澄清您的特定問題或添加額外的細節,以確切地突出你所需要的。正如目前所寫,很難確切地說出你在問什麼。請參閱如何問問頁面以獲取幫助以澄清此問題。 – Olaf
@Olaf編輯,謝謝你的消化。 – techno
你在哪裏設置br!= 0?否則你的循環'for(i = 0; f-> i; i ++)'永遠不會執行。 –