שפת 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