עבור לתוכן

בעיית מחרוזות בC

Featured Replies

פורסם

שלום יש לי תרגיל ב-C לקליטת מחרוזות, ואסור שהמחרוזת תכיל מספרים.

קליטת המחרוזת אני עושה בעזרת gets והבעיה היא שאני לא יודע איך אני נותן תנאי שלא יכיל מספרים.

אשמח מאוד לעזרה, בברכה שי.

פורסם

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

פורסם
  • מחבר

אני מנסה לעשות את זה ותראה מה קורה, אף פעם לא השתמשתי בפונקציה הזאת.

והוספתי את התיקיות <ctype.h> ו<stdlib.h>

[attachment deleted by admin]

פורסם

למה הלולאה שלך רצה מ-0 עד 9? הלולאה צריכה לרוץ על המחרוזת.

פורסם
  • מחבר

הבעיה היא שאני לא יודע מה הגודל של המחרוזת, מדובר במחרוזת בגודל אין סופי של מילים כאשר כל מילה מוגבלת בכמות מסוימת של אותיות.

כל ההתחלה שלי בכלל דפוקה שאני לא מצליח להקצות מחרוזת בגודל אין סופי.

פורסם

האם מחייבים אותך להשתמש בgets?

הפונקציה הזאת מוגדרת כ-deprecated בסטנדרד החדש של C ולא מומלץ להשתמש מסיבות של אבטחת תוכנה (דריסות זיכרון, חריגה ממה שהוקצה וכו')

תשתמשת בgetchar ולולאה ותבדוק תו-תו אם הוא ספרה או לא.

פורסם
  • מחבר

לא , אני לא מחויב, ניסיתי את gets כי זה מה שאני מכיר חוץ מscanf שאני מבין שלא עוזר לי כאן.

הבעיה שלי היא ההתחלה של כל התרגיל, איך אני מקצה מחרוזת של מספר אין סופי של מילים כאשר כל מילה מוגבלת במספר אותיות הידוע לי?

פורסם

בבירור אין כזה דבר מחרוזת אינסופית. המחשב הוא דבר סופי.

אתה יכול להקצות מערך בגודל התחלתי כלשהו, ואז להקצות מחדש את את המערך בגודל כפול (באמצעות realloc) כל פעם שנגמר לך המקום.

ולגבי הלולאה שלך: אתה רוצה שהלולאה תעבור מתחילת המחרוזת ועד סופה. ב-C, מחרוזות הן null-terminated, כלומר סוף המחרוזת מצוין ע"י התו '0\'.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים