שפת C/שימוש בספריות/תרגילים
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
|
כדאי לדעת: חלק מתרגילים אלה תוכל לפתור ללא שימוש הספריה הסטנדרטית. עם זאת, ככל שתוכל, נסה להשתמש בפונקציות ממנה ולא בקוד משל עצמך. |
תוכן עניינים |
[עריכה] הדפסת הזמן הנוכחי
כתוב תוכנית המדפיסה את הזמן (על פי שעון המחשב, על כל פנים).
רמז - קובץ הכותרת המתאים
time.h
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
פתרון
[עריכה] השוואה בין שתי מחרוזות
כתוב פונקציה המקבלת שתי מחרוזות, ומדפיסה איזו מהן היתה מופיעה לפני איזו על פי סדר לקסיקוגראפי.
רמז - קובץ הכותרת המתאים
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