שפת C/שימוש בספריות/תרגילים
כדאי לדעת: חלק מתרגילים אלה תוכל לפתור ללא שימוש הספריה הסטנדרטית. עם זאת, ככל שתוכל, נסה להשתמש בפונקציות ממנה ולא בקוד משל עצמך. |
הדפסת הזמן הנוכחי
[עריכה]דרגת קושי: ☆ ☆ ★ ★
כתוב תוכנית המדפיסה את הזמן (על פי שעון המחשב, על כל פנים).
time.h
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
#include <stdio.h>
#include <time.h>
int main(){
const time_t timer = time(NULL);
printf("Now %s\n", ctime(&timer));
}
השוואה בין שתי מחרוזות
[עריכה]כתוב פונקציה המקבלת שתי מחרוזות, ומדפיסה איזו מהן היתה מופיעה לפני איזו על פי סדר לקסיקוגראפי.
string.h
נחפש בקובץ הכותרת string.h, ונראה שישנה פונקציה strcmp המקבלת שתי מחרוזות, ומחזירה -1, 0, או 1, בדיוק לפי הסדר הלקסיקוגראפי ביניהן. כל שנותר הוא לתרגם ערכים אלה להדפסה מתאימה:
#include <string.h>
#include <stdio.h>
void print_lex(const char *lhs, const char *rhs)
{
switch(strcmp(lhs, rhs))
{
case -1:
printf("The string %s goes before %s\n", lhs, rhs);
break;
case 0:
printf("The strings %s and %s are equal\n", lhs, rhs);
break;
case 1:
printf("The string %s goes before %s\n", rhs, lhs);
break;
};
}
הפיכת מחרוזת לשלם
[עריכה]כתוב פונקציה המקבלת מחרוזת, ומחזירה מספר שלם. אם תוכן המחרוזת הוא מספר שלם חיובי, היא מחזירה מספר זה. אחרת היא מחזירה -1.
stdlib.h
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
כתיבת וקריאת מערך לקובץ ומקובץ
[עריכה]כתוב שתי פונקציות, בעלת ההצהרות הבאות:
int array_to_file(FILE *fp, const void *p, unsigned long num, unsigned long size);
int file_to_array(FILE *fp, void *p, unsigned long num, unsigned long size);
שתי הפונקציות מקבלות מצביע לקובץ (fp), ומצביע (p) למשהו לא ידוע לחלוטין. למעשה, p מצביע למערך בעל num איברים, שגודל כל אחד מהם size. על הפונקציה הראשונה לכתוב את המערך לקובץ, ועל השניה לקרוא את המערך מהקובץ. כל אחת מהפונקציות צריכה להחזיר 0 אם הפעולה הצליחה, ו-1 אם לא.
להלן דוגמה לשימוש:
const int a[5] = {1, 3, 4, 5, 2};
FILE *const fp = fopen("test.txt", "wt");
array_to_file(fp, a, 5, sizeof(int));
stdio.h
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
fread
fwrite