כותב |
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 05 April 2005 בשעה 22:52 | | IP רשוּם
|
|
|
|
הקוד הבא שאמור להגדיר מבנה לא מתקמפל לי
קוד:
#include <stdio.h>
#include <conio.h>
int main()
{
struct dora;
{
char name;
char stream;
char religion;
int estimated_age;
};
struct zand;
{
char name;
char stream;
char religion;
int estimated_age;
};
struct dora;
{
char name;
char stream;
char religion;
int estimated_age;
};
struct zaudrobsky;
{
char name;
char stream;
char religion;
int estimated_age;
};
struct lena;
{
char name;
char stream;
char religion;
int estimated_age;
};
struct dora = {"dora","realizem","jewish","40"};
struct zand = {"zand","not-yet","jewish","40"};
struct zaudrobsky = {"zaudrobsky","romanticism","Christian","60"};
struct lena = {"lena","unknown","jewish","20"};
return 0;
}
|
|
|
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 06 April 2005 בשעה 01:19 | | IP רשוּם
|
|
|
|
הקוד ממש ממש בעייתי:
הגדרת structs היא מחוץ ל-main
בהגדרת של struct אתה לא שם נקודה פסיק אחרי ה struct lena למשל.
אתה הגדרת בכל struct משתנה מסוג char, אבל אתה מנסה להכניס לתוכו מחרוזת.
אחרי זה אתה מנסה ליצור משתנים:
קוד:
struct dora = {"dora","realizem","jewish","40"}; |
|
|
כשמשהו יותר נכון אם כבר היה:
קוד:
struct dora mydora = {"dora","realizem","jewish","40"}; |
|
|
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 07:49 | | IP רשוּם
|
|
|
|
מצויין, תודה
אני יודע שאני מתחיל, אבל ככה לומדים לא?
ואת הדבר האחרון ראיתי באתר לימוד C
לא הבנתי למה צריך mydora?
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 06 April 2005 בשעה 08:17 | | IP רשוּם
|
|
|
|
אתה מצהיר על מבנה בשם dora ולכן כשאתה רוצה להכריז על "משתנה" מיוחד מסוג struct dora אתה צריך לתת לו שם כמו לכל משתנה רגיל.
אתה תיגש לערכים של struct dora mydora על ידי אופרטור הנקודה.
לדוגמה:
struct dora mydora;
mydora.name = 'f';
my dora.stream = 'g';
וכו'
זאת אומרת, כשאתה מצהיר על מבנה (struct) זה כמו להצהיר על משתנה מסוג חדש (לא ממש אבל דומה מספיק)
כשאתה מצהיר על מבנה בשם dora אתה לא יכול לגעת בו !
אתה צריך להצהיר על "משתנים" מסוג מבנה דורה (struct dora)
זה כמו שאתה מצהיר על פונקציה, אתה לא יכול לכתוב:
function bla = 25;
והצהרת על שני מבנים מסוג dora שזה אסור!!!
וכל המבנים שלך אותו הדבר, ואני מניח שכתבת את כולם מפני שחשבת שהם עצמים משל עצמם וכל אחד מהם מכיל ערכים שונים.
יכולת פשוט לעשות:
להשאיר רק struct אחד, לדוגמה dora ולעשות מערך של מבנים מהסוג הזה:
struct dora mydora[6];
לדוגמה.
הצהרה על מבנה היא רק תוכניות (blueprints)
זה כמו שתגדיר למשל מבנה מסוג "פרי"
ואז תגדיר עצמים למבנה הזה, למשל:
תפוז, אשכולית, ועוד.
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 13:48 | | IP רשוּם
|
|
|
|
אההה עכשיו הבנתי!!!
מצויין!
אתם אדירים!
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 17:57 | | IP רשוּם
|
|
|
|
או קיי...
הקובץ הזה התקמפל:
קוד:
/* start file "saphrut.c" */
#include <stdio.h>
#include <conio.h>
struct person
{
char name;
char stream;
char religion;
int estimated_age;
};
int main()
{
struct person dora = {"dora","realizem","jewish","40"};
struct person zand = {"zand","not-yet","jewish","40"};
struct person zaudrobsky = {"zaudrobsky","romanticism","Christian","60"};
struct person lena = {"lena","unknown","jewish","20"};
return 0;
}
|
|
|
עכשיו...
איך אני מציג נגיד, את ה name של zand?
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 06 April 2005 בשעה 18:00 | | IP רשוּם
|
|
|
|
אתה עדיין שומר את המשתנים בתור תווים ולא בתור מחרוזות...
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 18:04 | | IP רשוּם
|
|
|
|
אתה יכול לסדר לי את זה?
אני לא מבין איך...
אולי אתה יכול להעתיק את הקוד ולתקן לי אותו?
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 06 April 2005 בשעה 18:10 | | IP רשוּם
|
|
|
|
אה, ויש לך עוד בעיה: אתה מגדיר int אבל משתמש בו במחרוזת. הפכתי את המחרוזת לint:
קוד:
/* start file "saphrut.c" */
#include <stdio.h>
#include <conio.h>
#define MAX_LEN (50)
struct person
{
char name[MAX_LEN];
char stream[MAX_LEN];
char religion[MAX_LEN];
int estimated_age;
};
int main()
{
struct person dora = {"dora","realizem","jewish",40};
struct person zand = {"zand","not-yet","jewish",40};
struct person zaudrobsky = {"zaudrobsky","romanticism","Christian",60};
struct person lena = {"lena","unknown","jewish",20};
printf("%s\n", dora.name);
return 0;
} |
|
|
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר
הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 06 April 2005 בשעה 18:34 | | IP רשוּם
|
|
|
|
חחח "בעלת הארמון" ?!
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 18:48 | | IP רשוּם
|
|
|
|
כן...
אל תדאג, לא אהבתי את הספר
אני פשוט עושה "עבודה יצירתית" אז רציתי לכתוב למורה תוכנה
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 18:53 | | IP רשוּם
|
|
|
|
UnderWarrior כתב:
áìé ì÷îôì, àæ ÷ç áòøáåï îåâáì:
|
|
|
מה רשמת פה?
אני רואה ג'יבריש...
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 06 April 2005 בשעה 19:00 | | IP רשוּם
|
|
|
|
ShadowBeast כתב:
UnderWarrior כתב:
áìé ì÷îôì, àæ ÷ç áòøáåï îåâáì:
|
|
|
מה רשמת פה?
אני רואה ג'יבריש...
|
|
|
לא ממש חשוב - סתם עשיתי חלק מהתיקונים שמה. מחקתי את הפוסט ההוא והשארתי את הסופי
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 19:13 | | IP רשוּם
|
|
|
|
עכשיו גרסה 2 לא מתקמפלת...
קוד:
/* start file "saphrut.c" */
#include <stdio.h>
#include <conio.h>
#define MAX_LEN (50)
struct person
{
char name[MAX_LEN];
char stream[MAX_LEN];
char religion[MAX_LEN];
int estimated_age;
};
int main()
{
char x;
struct person dora = {"dora","realizem","jewish",40};
struct person zand = {"zand","not-yet","jewish",40};
struct person zaudrobsky = {"zaudrobsky","romanticism","Christian",60};
struct person lena = {"lena","unknown","jewish",20};
printf("Please enter the name of one of the main characters of the play:\n");
scanf("%s", &x);
if (x == dora)
{
printf("Name: %s\n", dora.name);
printf("Stream: %s\n", dora.stream);
printf("Religin: %s\n", dora.religion);
printf("Estimated Age: %d", dora.estimated_age);
};
else if (x == zand)
{
printf("Name: %s\n", zand.name);
printf("Stream: %s\n", zand.stream);
printf("Religin: %s\n", zand.religion);
printf("Estimated Age: %d", zand.estimated_age);
};
else if (x == lena)
{
printf("Name: %s\n", lena.name);
printf("Stream: %s\n", lena.stream);
printf("Religin: %s\n", lena.religion);
printf("Estimated Age: %d", lena.estimated_age);
};
else if (x == zaudrobsky)
{
printf("Name: %s\n", zaudrobsky.name);
printf("Stream: %s\n", zaudrobsky.stream);
printf("Religin: %s\n", zaudrobsky.religion);
printf("Estimated Age: %d", zaudrobsky.estimated_age);
};
}
|
|
|
סליחה על ההטרדה, באמת שאני מנסה 7 פעמים לפני שאני פונה לכאן
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 06 April 2005 בשעה 19:25 | | IP רשוּם
|
|
|
|
תלמד מחרוזות - אתה פשוט לא עובד נכון עם מחרוזות...
קוד:
/* start file "saphrut.c" */
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAX_LEN (50)
struct person
{
char name[MAX_LEN];
char stream[MAX_LEN];
char religion[MAX_LEN];
int estimated_age;
};
int main()
{
char x[MAX_LEN];
struct person dora = {"dora","realizem","jewish",40};
struct person zand = {"zand","not-yet","jewish",40};
struct person zaudrobsky = {"zaudrobsky","romanticism","Christian",60};
struct person lena = {"lena","unknown","jewish",20};
printf("Please enter the name of one of the main characters of the play:\n");
scanf("%s", &x);
if (strcmp(x, dora) == 0)
{
printf("Name: %s\n", dora.name);
printf("Stream: %s\n", dora.stream);
printf("Religin: %s\n", dora.religion);
printf("Estimated Age: %d", dora.estimated_age);
}
else if (strcmp(x, "zand") == 0)
{
printf("Name: %s\n", zand.name);
printf("Stream: %s\n", zand.stream);
printf("Religin: %s\n", zand.religion);
printf("Estimated Age: %d", zand.estimated_age);
}
else if (strcmp(x, "lena") == 0)
{
printf("Name: %s\n", lena.name);
printf("Stream: %s\n", lena.stream);
printf("Religin: %s\n", lena.religion);
printf("Estimated Age: %d", lena.estimated_age);
}
else if (strcmp(x, "zaudrobsky") == 0)
{
printf("Name: %s\n", zaudrobsky.name);
printf("Stream: %s\n", zaudrobsky.stream);
printf("Religin: %s\n", zaudrobsky.religion);
printf("Estimated Age: %d", zaudrobsky.estimated_age);
}
return 0;
} |
|
|
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר
הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 06 April 2005 בשעה 19:30 | | IP רשוּם
|
|
|
|
הבעיה שאתה רושם הרבה פעמים לא מתקמפל מבלי לרשום על איזו שורה מצביע הקומפיילר ואיזו הערה הוא רושם לך... זה יכול לחסוך הרבה זמן ומאמץ באיתור הבעיה.
scanf("%s", &x);
בשורה הזאת אתה לא צריך את ה-& כי אתה קולט מחרוזת.
scanf("%s", x);
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 19:39 | | IP רשוּם
|
|
|
|
תודה!!!
איך אני עושה שהתוכנית תחזור להתחלה?
חייבים להשתמש ברקוסיה?
כי רק היום למדתי ואני לא מומחה בזה(וגם לא במחרוזות כפי שראית, אבל זה סיפור אחר)
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 06 April 2005 בשעה 19:49 | | IP רשוּם
|
|
|
|
לולאה
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 20:49 | | IP רשוּם
|
|
|
|
שמתחילה מתחילת הבגדרות של ה struct ועד סוף ה ifים?
או שפשוט לולאה בסוף?
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 06 April 2005 בשעה 21:09 | | IP רשוּם
|
|
|
|
מה-printf
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 06 April 2005 בשעה 22:06 | | IP רשוּם
|
|
|
|
ותצמצם את כל משפטי ה printf
למשל:
printf("Name: %s\n", dora.name);
printf("Stream: %s\n", dora.stream);
printf("Religin: %s\n", dora.religion);
printf("Estimated Age: %d", dora.estimated_age);
למצמם ל:
printf("Name: %s\nStream: %s\nReligin: %s\nEstimated Age: %d", dora.name, dora.stream, dora.religin, dora.estimated_age);
אומרים שלא מומלץ להשתמש בפונקציית scanf לקליטת מחרוזת.
תשתמש ב gets()
שנראה לי ב string.h
התחביר הוא ככה:
gets(stringVar);
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר
הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 06 April 2005 בשעה 22:08 | | IP רשוּם
|
|
|
|
אולי עדיף שקודם תלמד מאתרים\טקסטים את הנושאים העיקריים ותעבוד איתם במקביל. אחרי שתכסה את הנושאים העיקריים, תנסה שוב לבנות את אותה תוכנית שאתה מנסה כרגע ותראה שילך לך הרבה יותר מהר ונוח, מאשר שכל פעם תתקע בכל נושא חדש שאתה מגיע אליו במהלך בניית התוכנית.
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 22:09 | | IP רשוּם
|
|
|
|
תגובה ל Nameless
בקשר ל printf אני מודע לזה פשוט יותר נוח לי ככה
בקשר לשני, יש לי רק שאלה אחת: למה?
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 06 April 2005 בשעה 22:11 | | IP רשוּם
|
|
|
|
נראה לי שאמרו לי שב scanf המשתמש לא יכול להשתמש ברווחים., אני לא זוכר ולכן בודק את זה עכשיו במהדר.
עריכה:
בדקתי את זה במהדר, ובפונקציית scanf אי אפשר להשתמש ברווח, כי כשתלחץ על רווח זה יפסיק.
פונקציית gets נמצאת ב string.h והתחביר שלמעלה שכתבתי נכון (בדקתי את זה במהדר).
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 22:15 | | IP רשוּם
|
|
|
|
אני לא ממש צריך שהוא ישתמש ברווחים...
אני גם מכיר כבר את scanf...
אז אני מעדיף להמשיך להשתמש בו בינתיים
תודה על העצה בכל זאת!
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר
הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 06 April 2005 בשעה 22:21 | | IP רשוּם
|
|
|
|
בלי סיבה מיוחדת... פשוט ככה לדעתי יותר נוח.
זאת רק עצה אתה יכול לקבל אותה או לא לקבל...
תחשוב נגיד אתה לומד רק מחרוזות ובונה כל מיני תוכניות שמשתשות במחרוזות תוך חצי שעה אתה יודע את זה חלק, אתה עובר לנושא הבא נגיד לולאות+תנאים אתה לומד את זה אחר כך בונה תוכניות עם לולאות תנאים ומחרוזות... וכך הלאה.
אני מאמין שתוך יומיים כאלה יהיה לך את הבסיס ןתןכל לבנות את התוכנית הזאת בפחות משעה.
והיתרון הוא שתוכל לבנות עוד הרבה תוכניות גם בנושאים אחרים שלמדת, אם אתה לומד רק מה שאתה צריך לתוכנית הזאת אתה מפספס נושאים אחרים.
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 06 April 2005 בשעה 22:22 | | IP רשוּם
|
|
|
|
לא היו לי בעיות תחביריות כשכתבתי עכשיו תוכנית עם
scanf וקליטה למחרוזת אבל בלי אופרטור ה & לפני שם המשתנה, אבל
כשהפעלתי את התוכנית ועשיתי כמה פעולות והיא הגיעה לקטע הזה של scanf היא
קרסה....
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 22:24 | | IP רשוּם
|
|
|
|
לא השתמשת ב & לפני המשתנה?
למה?
אמורים להשתמש...
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 06 April 2005 בשעה 22:30 | | IP רשוּם
|
|
|
|
לפני דף אחד היה מישהו שכתב שלא צריכים להשתמש ב & והחלטתי לבדוק את זה.
זה קרס בגלל הטיפשות שלי (שכחתי לעשות מערך של תווים).
עכשיו התוכנית לא קורסת אבל היא מתנהגת מוזר.
יש לי תיאוריה למה, אני בודק את זה עכשיו.
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 22:33 | | IP רשוּם
|
|
|
|
מה בדיוק התוכנית עושה?
|
חזרה לתחילת העמוד |
|
|
ShadowBeast אחראי פורומים
הצטרף / הצטרפה: 22 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1073
|
נשלח בתאריך: 06 April 2005 בשעה 22:34 | | IP רשוּם
|
|
|
|
Alias כתב:
אולי עדיף שקודם תלמד מאתרים\טקסטים את הנושאים העיקריים
ותעבוד איתם במקביל. אחרי שתכסה את הנושאים העיקריים, תנסה שוב לבנות את
אותה תוכנית שאתה מנסה כרגע ותראה שילך לך הרבה יותר מהר ונוח, מאשר שכל
פעם תתקע בכל נושא חדש שאתה מגיע אליו במהלך בניית התוכנית. |
|
|
התגובה שלי הייתה ל Nameless
את התגובה שלך ראיתי כעצה מאוד חכמה, אבל די מובנת מאליו
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר
הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 06 April 2005 בשעה 22:37 | | IP רשוּם
|
|
|
|
&- מסמן כתובת של תא בזיכרון.
מחרוזת היא לא תא אלא בלוק לכן לא אמורים להשים &.
אבל אם שמת בטעות זה לא אמור לגרום לקריסת התוכנית או משהו כזה זה ישלח את הכתובת של התא הראשון של המחרוזת.
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 06 April 2005 בשעה 22:42 | | IP רשוּם
|
|
|
|
הקריסה לא קרתה בגלל זה (תקרא דף אחד אחורה)
התוכנית:
#include <stdio.h>
int main(void)
{
char abc[25];
scanf("%s\n", &abc);
printf("%s\n", abc);
scanf("%s\n", abc);
printf("%s\n", abc);
return 0;
}
זה נותן לי להכניס קלט, אני מכניס למשל:
asd
זה נותן לי להכניס עוד קלט, אני רושם adf, וזה רושם את הקלט הראשון, ונותן לי לרשום עוד קלט, ואני רושם fg וזה רושם את הקלט השני.
למה זה מתנהג ככה?
זה אמור לקלוט רק פעמיים (אני אנסה את זה עכשיו עם & ב scanf ובלי, לא מעורב ונראה מה יהיה)
עריכה:
ניסיתי עם & לגמרי ובלי & לגמרי, וזה עדיין קורה, לא יועד למה.
ניסיתי גם להחליף את printf ב puts שנמצא ב string.h וזה לא עזר.
בכל מקרה אני מעדיף gets התחביר יותר פשוט ויש פחות בעיות ואפשר להכניס רווחים.
מישהו יודע למה הקוד לא עובד?
(תזכרו שניסיתי גם עם & בכל ה scanf וגם בלי & בכל ה scanf(
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר
הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 07 April 2005 בשעה 14:18 | | IP רשוּם
|
|
|
|
כמובן...
כשאתה עושה SCANF אתה לא צריך לרדת שורה כי במילא אתה לוחץ אנטר בסיום הכנסת הקלט.
לכן אתה לא צריך '\n' ב-SCANF
קוד:
int main(void)
{
char abc[25];
scanf("%s", abc);
printf("%s\n", abc);
scanf("%s", abc);
printf("%s\n", abc);
return 0;
}
|
|
|
יכולת גם להשתמש ב-flushall() אבל זה סתם ללכת עם ראש בקיר... (לקלוט עוד שורה ואז למחוק אותה)
|
חזרה לתחילת העמוד |
|
|
Nameless אחראי פורומים
הצטרף / הצטרפה: 08 March 2005 מדינה: Armenia
משתמש: מנותק/ת הודעות: 69
|
נשלח בתאריך: 07 April 2005 בשעה 20:26 | | IP רשוּם
|
|
|
|
ניסיתי להשתמש ב flushall() לפני שכתבתי כאן את הקוד אבל זה גרם לי בעיות משום מה....
אני אנסה את הקוד הזה, רק תשים לב שצריך לכתוב את ה \n ב printf לפני %s
כי אחרת זה יהיה ככה:
256256
|
ה | זה הסימן המהבהב (להראות שעברת שורה
והמשתמש הכניס 256, המחשב פלט את אותו המערך ורק אז ירד שורה (לפי הקוד שלך)
|
חזרה לתחילת העמוד |
|
|