עבור לתוכן

לא מצליח לשלוח EOF תחת ווינדוס 7

Featured Replies

פורסם

גילוי נאות: התלבטתי רבות אם לפתוח את האשכול בפורום תכנות או בפורום זה, והחלטתי בסוף שזו בעיה במערכת ההפעלה ולא בשפה

ולכן אתייעץ אתכם :-)

אני לומד לתכנת בשפת C בסביבת העבודה של Microsoft Visual C++ Express '10

ואני לא מצליח לדמות שליחה של EOF בתוכניות שאני כותב.

שלחתי את הקוד לחבר אחר שאצלו הכל עובד פיקס.

יש למישהו מושג איך אפשר לטפל או להתחיל לאבחן את הבעיה?

תודה.

פורסם
  • מחבר

ממש כך,

הפעלת התוכנית הבאה:



#include <stdio.h>


main() {


int c, i, j, k;
int length[20];


for (i = 0; i <= 20; i++)
length[i] = 0;


for (j = 0; j <= 20; ++j) {
while ((c = getchar()) != EOF) {
if (c != ' ' || c != '\n' || c != '\t')
++length[j];
if (c == EOF) break;
}
}

for (k = 0; k <= 20; k++)
printf("Word %d : %d", k+1, length[k]);


printf("All good baby...");


return 0;
}

נראית כך:

nWwSG.png

פורסם

יש לך באגים בתכנית. לדוגמה, אתה חורג מגבולות המערך.

חוץ מזה, ניסית לדבג את התכנית כדי לראות מה היא עושה בדיוק?

פורסם
  • מחבר

ובכל זאת, גם בתוכניות פשוטות הרבה יותר אני לא מצליח לשלוח EOF.


#include <stdio.h>
main() {
int c;

while ((c = getchar()) != EOF) {
putchar(c);
}
return 0;
}

פורסם

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

תנסה לרדת שורה ואז לעשות ctrl+Z (זה לא פתרון מושלם, אבל אנשים טוענים שזה עובד).

פורסם
  • מחבר

כלום... זה ממש מתסכל :s07:

פורסם
  • מחבר

מישהו? :kopfpatsch:

פורסם
  • מחבר

שום דבר מיוחד... פשוט לא מקבל EOF

פורסם

מה זאת אומרת?

מה אתה כן מקבל? כשאתה לוחץ על ctrl+Z לא מתקבל שום תו?

פורסם

אצלי הZ^ מזוהה כEOF אם ורק אם הוא מתחיל שורה. אחרת הוא מודפס כחץ ימינה.

פורסם

בגלל זה הצעתי את זה:

תנסה לרדת שורה ואז לעשות ctrl+Z (זה לא פתרון מושלם, אבל אנשים טוענים שזה עובד).

פורסם

אגב, בויסטה אותה ההתנהגות.

  • 2 שבועות מאוחר יותר...
פורסם
  • מחבר

מתנצל על ההעלמות,

הקשת CTRL+Z בשורה חדשה נותנת את התוצאה הבאה,

nH59a.png

שהיא כמובן לא ה-OUTPUT שאמור להופיע בעת קבלת EOF.

אני ממש ממש טירון בתכנות בכלל ו-C בפרט, למה התכוונת כשהצעת

לדבג את התוכנית?

ארכיון

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

דיונים חדשים