4.4 זכרון דינמי פתרון
תרגיל 1 – הקצאת מערך בגודל קלט מהמשתמש¶
-
כתבו תוכנית ש:
-
שואלת את המשתמש כמה מספרים שלמים הוא רוצה להכניס.
-
מקצה מערך בגודל המתאים בעזרת
malloc. -
קוראת את המספרים מהמשתמש ושומרת אותם במערך.
-
מדפיסה את המספרים אחד אחד.
-
מבצעת
freeבסיום.
-
תרגיל 2 – הקצאה ואיפוס של מערך¶
-
כתבו תוכנית ש:
-
מקצה מערך בגודל 100 מסוג
charבעזרתcalloc. -
ממלא כל תא בערך
'A'באמצעות לולאה. -
מדפיסה את המערך.
-
משחררת את הזיכרון עם
free.
-
פתרונות¶
פתרון 1¶
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("כמה מספרים תרצה להזין? ");
scanf("%d", &n);
int *arr = malloc(n * sizeof(int));
if (arr == NULL) return 1;
for (int i = 0; i < n; i++) {
printf("הכנס מספר %d: ", i + 1);
scanf("%d", &arr[i]);
}
printf("המספרים שהוזנו:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
פתרון 2¶
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *buf = calloc(100, sizeof(char));
if (!buf) return 1;
for (int i = 0; i < 100; i++) {
buf[i] = 'A';
}
buf[99] = '\0'; // נוודא שזה נגמר בתו סיום
printf("%s\n", buf);
free(buf);
return 0;
}