logo

הפונקציה fgets() ב-C

בתכנות C, טיפול קֶלֶט ו תְפוּקָה פעילות חיונית. Fgets() היא אחת מהפונקציות הרבות הזמינות עבור קֶלֶט . בעזרת פונקציה חזקה זו, מפתחים עשויים לקרוא מידע מאובטח ומדויק מזרם נתון. במאמר זה נבחן את אינס ו אאוט שֶׁל fgets() , עובר על שלה תחביר, יישום, קוד לדוגמה , ו תוצאות צפויות .

ה הפונקציה fgets(). , קיצור ל 'קובץ קבל מחרוזת' , משמש לעתים קרובות לקריאת מחרוזת מזרם קבצים או קלט סטנדרטי (stdin) . היא מספקת תחליף בטוח יותר למוצר שהוצא משימוש gets() פונקציה , שהיה בשימוש בעבר אך כעת מהווה דאגה ביטחונית. הפונקציה fgets() מציע אמצעי להגביל את מספר התווים הנקראים ומטפל ביעילות בתווים בשורה חדשה.

התחביר עבור fgets() הוא כדלקמן:

 char *fgets(char *str, int size, FILE *stream); 

הפרמטרים מחולקים באופן הבא:

str: זוהי הפניה למערך התווים (מחרוזת) שתשמש לאחסון הקלט.

גודל: המספר הכולל של התווים (כולל ה תו אפס '0' ) שניתן לקרוא.

זרם: התקן ההצבעה לזרם קובץ הקלט או סטדין זֶה fgets() יקרא מתוך.

על מנת להבין טוב יותר כיצד fgets() פועל, הבה נסתכל על דוגמה:

דוגמא:

 #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); printf('You entered: %s', input); return 0; } 

תְפוּקָה:

 Enter a string: Hello, World! You entered: Hello, World! Enter a string: This is a very long string that exceeds the limit of the input buffer. You entered: This is a very long string that exceeds the limit of the input buffer. If a user types an empty text by simply pressing the Enter key: Enter a string: You entered: 

הֶסבֵּר:

בדוגמה לעיל, אנו מתחילים בשילוב קובץ הכותרת המתאים, 'stdio.h' . לאחר מכן, מחרוזת הקלט מוגדרת כקלט של מערך תווים בגודל של 100.

באמצעות הפונקציה printf() , התוכנית מבקשת מהמשתמש להזין מחרוזת. אחרי זה, סטדין משמש בתור זרם קלט , ו fgets() משמש עם קלט כמחרוזת היעד, sizeof (קלט) , וגודל מקסימלי לקריאה. לאחר מכן, התוכנית משתמשת printf() כדי להוציא את המחרוזת שהוזנה.

Fgets() פונקציה יכולה לקרוא ו להציל דמות השורה החדשה 'נ' אם הוא מופיע לפני הגעת הגודל המקסימלי. זה מאפשר לדעת אם שורת הקלט נקראה במלואה או קטועה בגלל אילוצי מקום.

מכיל תת מחרוזת java

דוגמא:

באמצעות קטע הקוד שהשתנה, תוכל להשתמש ב- שיטת strcspn() ל לִמְחוֹק ה שורה חדשה תו ממחרוזת הקלט:

 #include #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); input[strcspn(input, '
')] = ''; // Remove the newline character printf('You entered: %s', input); return 0; } 

תְפוּקָה:

 Enter a string: Hello World You entered: Hello World 

הֶסבֵּר:

אורך המחרוזת המשנה המורכבת מתווים שאינם בקבוצת התווים שסופקה נקבע על ידי ה- strcspn() פונקציה . במקרה זה, ה תו אפס '0' משמש להחלפת תו השורה החדשה לאחר ציון 'נ' כקבוצת התווים לחיפוש.

סיכום:

לסיכום, קריאה מחרוזות קלט מזרמי קבצים או קלט רגיל באמצעות ה-C שיטת fgets(). הוא אמין ובטוח. זהו כלי שימושי לעיבוד קלט משתמש באופן מוסדר מכיוון שהוא מאפשר לך לבחור גודל מקסימלי לקלט ומטפל בתווי שורה חדשה.

הפגום gets() פונקציה מוחלף במאובטח יותר הפונקציה fgets(). , אשר מתקן ליקויי אבטחה שנגרמו על ידי חוצץ עולה על גדותיו . זה מוודא שמחרוזת הקלט לא תהפוך לגדולה מהמותר, ומונעת בעיות פוטנציאליות של שחיתות זיכרון.

קוד הדוגמה שסופק מראה כיצד להשתמש fgets() בצורה נכונה כדי ללכוד קלט משתמש ולהסיר את תו השורה החדשה אם היא מופיעה. הוא מדגיש עד כמה חיוני לקחת בחשבון אילוצי קלט ולהתמודד עם תווים בשורה חדשה כדי להבטיח עיבוד מחרוזת מדויק.

מפתחים יכולים לשפר את האבטחה והחוסן של תוכניות ה-C שלהם עם fgets() . הם יכולים להימנע מהתנהגויות בלתי צפויות ומפרצות אבטחה פוטנציאליות הנגרמות כתוצאה מכניסות גדולות על ידי הגדרת גודל מקסימלי לקלט.

מתכנתי C שואפים צריכים להכיר fgets() והוראות השימוש בו כדי להבטיח טיפול בטוח ויעיל בקלט. מפתחים שמודעים לפונקציה הזו יכולים לייצר תוכנה מהימנה ומאובטחת יותר ששומרת מפני פגיעויות הקשורות לקלט שנתקלות בהן לעתים קרובות.