נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שפת C איך לקלוט בלי שהמשתמש ילחץ ENTER?

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
zoobooboozoo
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 27 November 2005
משתמש: מנותק/ת
הודעות: 80
נשלח בתאריך: 04 December 2005 בשעה 21:56 | IP רשוּם
ציטוט zoobooboozoo

שלום לכולם, כולם מכירים את SCANF(x) כמובן...
אבל אני לא רוצה שהמשתמש יצתרך להקיש ENTER איך אותו דבר שהוא מכניס.

איך אפשר לעשות את זה?
חזרה לתחילת העמוד הצג את כרטיס החבר של zoobooboozoo חפש הודעות אחרות של zoobooboozoo
 
y2cRAck4
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 28 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 437
נשלח בתאריך: 04 December 2005 בשעה 21:58 | IP רשוּם
ציטוט y2cRAck4

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

__________________
? Why to crack for
חזרה לתחילת העמוד הצג את כרטיס החבר של y2cRAck4 חפש הודעות אחרות של y2cRAck4 בקר בדף הבית של y2cRAck4
 
zoobooboozoo
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 27 November 2005
משתמש: מנותק/ת
הודעות: 80
נשלח בתאריך: 04 December 2005 בשעה 22:19 | IP רשוּם
ציטוט zoobooboozoo

חיפשתי בשלושה עמודים האחרונים ואין כלום

עריכה:
לא משנה מצאתי תודה רבה

חזרה לתחילת העמוד הצג את כרטיס החבר של zoobooboozoo חפש הודעות אחרות של zoobooboozoo
 
y2cRAck4
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 28 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 437
נשלח בתאריך: 05 December 2005 בשעה 14:32 | IP רשוּם
ציטוט y2cRAck4

אולי תרשום את הפיתרון כדי שלאחרים בעתיד תהיה כבר את התשובה?

__________________
? Why to crack for
חזרה לתחילת העמוד הצג את כרטיס החבר של y2cRAck4 חפש הודעות אחרות של y2cRAck4 בקר בדף הבית של y2cRAck4
 
אבידור
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 11 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 162
נשלח בתאריך: 05 December 2005 בשעה 17:49 | IP רשוּם
ציטוט אבידור

הנך יכול להשתמש בפקודה getch שקולטת תו אחד.
או אם תרצה מחרוזת שלמה, תוכל לעשות לולאה שתקלוט לתוך המערך את התווים.

חסרונות:
- אין אפשרות מחיקה בטעות
- עליך לדעת את האורך המדוייק של המחרוזת
חזרה לתחילת העמוד הצג את כרטיס החבר של אבידור חפש הודעות אחרות של אבידור
 
pitbull
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 05 December 2005 בשעה 20:04 | IP רשוּם
ציטוט pitbull

אבידור לא מדוייק, במקרה ורוצים לקלוט מחרוזת לא חובה לדעת את גודלה מראש..
דוגמא קטנה:
קוד:

#include <stdio.h>

int main()
{
int c;

while ((c=getchar()) != EOF)
putchar(c);

return 0;
}

אפשר לעשות עם זה דברים נחמדים, זה תחליף ל scanf() הרגיל שהרבה אנשים ומאמרים אומרים שלא טוב להשתמש בו...
חזרה לתחילת העמוד הצג את כרטיס החבר של pitbull חפש הודעות אחרות של pitbull
 
אבידור
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 11 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 162
נשלח בתאריך: 05 December 2005 בשעה 21:21 | IP רשוּם
ציטוט אבידור

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

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 05 December 2005 בשעה 22:59 | IP רשוּם
ציטוט pitbull

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

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 05 December 2005 בשעה 23:19 | IP רשוּם
ציטוט SBD

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

כמובן שאפשר לעשות את זה ע"י מערך דינמי של CHAR...



__________________
~ Nobody Is Perfect, I'm Nobody ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 
Inj3ction
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 06 December 2005 בשעה 00:01 | IP רשוּם
ציטוט Inj3ction

אם אתה רוצה לקלוט תו מהמשתמש בלי שהוא ילחץ אנטר אפשר לעשות ככה:
קוד:

#include <stdio.h>
#include <conio.h>
char c;
main()
{
c=getch();
if (c=='a') printf("%c",c);
else printf("bla");
getch();
}

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

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 06 December 2005 בשעה 16:02 | IP רשוּם
ציטוט pitbull

SBD כתב:

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

כמובן שאפשר לעשות את זה ע"י מערך דינמי של CHAR...


נתתי דוגמא קצרה, כמובן שבמקום ה putchar() אפשר פשוט להכניס את האות שנקלטה למערך [מוגדר מראש, או אם רוצים דינאמי] ואז אפשר לעבוד עם הקלט..
חזרה לתחילת העמוד הצג את כרטיס החבר של pitbull חפש הודעות אחרות של pitbull
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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