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

נושא: הקובץ הבא לא מתקמפל לי

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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 05 April 2005 בשעה 22:52 | IP רשוּם
ציטוט ShadowBeast

הקוד הבא שאמור להגדיר מבנה לא מתקמפל לי
קוד:

#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;
}

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

הצטרף / הצטרפה: 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 רשוּם
ציטוט ShadowBeast

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


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 06 April 2005 בשעה 08:17 | IP רשוּם
ציטוט Nameless

אתה מצהיר על מבנה בשם 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)
זה כמו שתגדיר למשל מבנה מסוג "פרי"
ואז תגדיר עצמים למבנה הזה, למשל:
תפוז, אשכולית, ועוד.


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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 13:48 | IP רשוּם
ציטוט ShadowBeast

אההה עכשיו הבנתי!!!

מצויין!

אתם אדירים!

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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 17:57 | IP רשוּם
ציטוט ShadowBeast

או קיי...
הקובץ הזה התקמפל:

קוד:

/* 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?
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 06 April 2005 בשעה 18:00 | IP רשוּם
ציטוט ניר

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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 18:04 | IP רשוּם
ציטוט ShadowBeast

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

הצטרף / הצטרפה: 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 רשוּם
ציטוט Alias

חחח "בעלת הארמון" ?!
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 18:48 | IP רשוּם
ציטוט ShadowBeast

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


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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 18:53 | IP רשוּם
ציטוט ShadowBeast

UnderWarrior כתב:
áìé ì÷îôì, àæ ÷ç áòøáåï îåâáì:

מה רשמת פה?
אני רואה ג'יבריש...
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 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 רשוּם
ציטוט ShadowBeast

עכשיו גרסה 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 פעמים לפני שאני פונה לכאן
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 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 רשוּם
ציטוט Alias

הבעיה שאתה רושם הרבה פעמים לא מתקמפל מבלי לרשום על איזו שורה מצביע הקומפיילר ואיזו הערה הוא רושם לך... זה יכול לחסוך הרבה זמן ומאמץ באיתור הבעיה.

scanf("%s", &x);
בשורה הזאת אתה לא צריך את ה-& כי אתה קולט מחרוזת.
scanf("%s", x);
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 19:39 | IP רשוּם
ציטוט ShadowBeast

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

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 06 April 2005 בשעה 19:49 | IP רשוּם
ציטוט ניר

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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 20:49 | IP רשוּם
ציטוט ShadowBeast

שמתחילה מתחילת הבגדרות של ה struct ועד סוף ה ifים?
או שפשוט לולאה בסוף?
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 06 April 2005 בשעה 21:09 | IP רשוּם
ציטוט ניר

מה-printf
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
Nameless
אחראי פורומים
אחראי פורומים


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 06 April 2005 בשעה 22:06 | IP רשוּם
ציטוט Nameless

ותצמצם את כל משפטי ה 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);

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

הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת
הודעות: 344
נשלח בתאריך: 06 April 2005 בשעה 22:08 | IP רשוּם
ציטוט Alias

אולי עדיף שקודם תלמד מאתרים\טקסטים את הנושאים העיקריים ותעבוד איתם במקביל. אחרי שתכסה את הנושאים העיקריים, תנסה שוב לבנות את אותה תוכנית שאתה מנסה כרגע ותראה שילך לך הרבה יותר מהר ונוח, מאשר שכל פעם תתקע בכל נושא חדש שאתה מגיע אליו במהלך בניית התוכנית.
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 22:09 | IP רשוּם
ציטוט ShadowBeast

תגובה ל Nameless

בקשר ל printf אני מודע לזה פשוט יותר נוח לי ככה

בקשר לשני, יש לי רק שאלה אחת: למה?

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


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 06 April 2005 בשעה 22:11 | IP רשוּם
ציטוט Nameless

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

עריכה:
בדקתי את זה במהדר, ובפונקציית scanf אי אפשר להשתמש ברווח, כי כשתלחץ על רווח זה יפסיק.

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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 22:15 | IP רשוּם
ציטוט ShadowBeast

אני לא ממש צריך שהוא ישתמש ברווחים...
אני גם מכיר כבר את scanf...
אז אני מעדיף להמשיך להשתמש בו בינתיים
תודה על העצה בכל זאת!
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
Alias
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת
הודעות: 344
נשלח בתאריך: 06 April 2005 בשעה 22:21 | IP רשוּם
ציטוט Alias

בלי סיבה מיוחדת... פשוט ככה לדעתי יותר נוח.
זאת רק עצה אתה יכול לקבל אותה או לא לקבל...
תחשוב נגיד אתה לומד רק מחרוזות ובונה כל מיני תוכניות שמשתשות במחרוזות תוך חצי שעה אתה יודע את זה חלק, אתה עובר לנושא הבא נגיד לולאות+תנאים אתה לומד את זה אחר כך בונה תוכניות עם לולאות תנאים ומחרוזות... וכך הלאה.
אני מאמין שתוך יומיים כאלה יהיה לך את הבסיס ןתןכל לבנות את התוכנית הזאת בפחות משעה.
והיתרון הוא שתוכל לבנות עוד הרבה תוכניות גם בנושאים אחרים שלמדת, אם אתה לומד רק מה שאתה צריך לתוכנית הזאת אתה מפספס נושאים אחרים.
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
Nameless
אחראי פורומים
אחראי פורומים


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 06 April 2005 בשעה 22:22 | IP רשוּם
ציטוט Nameless

לא היו לי בעיות תחביריות כשכתבתי עכשיו תוכנית עם
scanf וקליטה למחרוזת אבל בלי אופרטור ה & לפני שם המשתנה, אבל כשהפעלתי את התוכנית ועשיתי כמה פעולות והיא הגיעה לקטע הזה של scanf היא קרסה....
חזרה לתחילת העמוד הצג את כרטיס החבר של Nameless חפש הודעות אחרות של Nameless
 
ShadowBeast
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 22:24 | IP רשוּם
ציטוט ShadowBeast

לא השתמשת ב & לפני המשתנה?
למה?
אמורים להשתמש...
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
Nameless
אחראי פורומים
אחראי פורומים


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 06 April 2005 בשעה 22:30 | IP רשוּם
ציטוט Nameless

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

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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 22:33 | IP רשוּם
ציטוט ShadowBeast

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

הצטרף / הצטרפה: 22 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1073
נשלח בתאריך: 06 April 2005 בשעה 22:34 | IP רשוּם
ציטוט ShadowBeast

Alias כתב:
אולי עדיף שקודם תלמד מאתרים\טקסטים את הנושאים העיקריים ותעבוד איתם במקביל. אחרי שתכסה את הנושאים העיקריים, תנסה שוב לבנות את אותה תוכנית שאתה מנסה כרגע ותראה שילך לך הרבה יותר מהר ונוח, מאשר שכל פעם תתקע בכל נושא חדש שאתה מגיע אליו במהלך בניית התוכנית.


התגובה שלי הייתה ל Nameless
את התגובה שלך ראיתי כעצה מאוד חכמה, אבל די מובנת מאליו
חזרה לתחילת העמוד הצג את כרטיס החבר של ShadowBeast חפש הודעות אחרות של ShadowBeast
 
Alias
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת
הודעות: 344
נשלח בתאריך: 06 April 2005 בשעה 22:37 | IP רשוּם
ציטוט Alias

&- מסמן כתובת של תא בזיכרון.
מחרוזת היא לא תא אלא בלוק לכן לא אמורים להשים &.
אבל אם שמת בטעות זה לא אמור לגרום לקריסת התוכנית או משהו כזה זה ישלח את הכתובת של התא הראשון של המחרוזת.
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
Nameless
אחראי פורומים
אחראי פורומים


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 06 April 2005 בשעה 22:42 | IP רשוּם
ציטוט Nameless

הקריסה לא קרתה בגלל זה (תקרא דף אחד אחורה)
התוכנית:
#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(
חזרה לתחילת העמוד הצג את כרטיס החבר של Nameless חפש הודעות אחרות של Nameless
 
Alias
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת
הודעות: 344
נשלח בתאריך: 07 April 2005 בשעה 14:18 | IP רשוּם
ציטוט Alias

כמובן...
כשאתה עושה 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() אבל זה סתם ללכת עם ראש בקיר... (לקלוט עוד שורה ואז למחוק אותה)
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
Nameless
אחראי פורומים
אחראי פורומים


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 07 April 2005 בשעה 20:26 | IP רשוּם
ציטוט Nameless

ניסיתי להשתמש ב flushall() לפני שכתבתי כאן את הקוד אבל זה גרם לי בעיות משום מה....
אני אנסה את הקוד הזה, רק תשים לב שצריך לכתוב את ה \n ב printf לפני %s
כי אחרת זה יהיה ככה:
256256
|

ה | זה הסימן המהבהב (להראות שעברת שורה
והמשתמש הכניס 256, המחשב פלט את אותו המערך ורק אז ירד שורה (לפי הקוד שלך)
חזרה לתחילת העמוד הצג את כרטיס החבר של Nameless חפש הודעות אחרות של Nameless
 

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

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

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