עבור לתוכן

עזרה

Featured Replies

פורסם

התוכנית הזאת לא עובדת לי משום מה ולא מזהה אפילו שהיא הגיעה לסוף הקובץ.

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

בתודה מראש

#include <iostream.h>
#include <stdio.h>

void main()
{
int y [50];
unsigned int i=50;
FILE *f;

cout<<"\n";

f=fopen("d:\\d1.txt","r");

while(!(feof(f)))
{
i--;
fscanf(f,"%d ",&y[i]);
}
fclose(f);
f=fopen("D:\\d2.txt","w");
for(;i<=50;i++)
{
fprintf(f,"%d ",y[i]);
}
fclose(f);
}


פורסם

while(!(feof(f)) && i)

פורסם
  • מחבר

למה?

הרי הוא בסה"כ צריך רק לקרוא את המשתנים מתוך הקובץ עד שהוא נגמר...

פורסם

אם יש יותר מ 50 משתנים בקובץ, הוא ימשיך לעשות i-- גם אחרי שהוא הגיע ל 0... מכיוון ש i הוא unsigned כפי שעשית, הוא יהפוך לערך מגבלה עליון, משהו כמו 65536 או יותר, ואז החלק הבא של הקוד לא ירוץ נכון...

פורסם
  • מחבר

אם יש יותר מ 50 משתנים בקובץ, הוא ימשיך לעשות i-- גם אחרי שהוא הגיע ל 0... מכיוון ש i הוא unsigned כפי שעשית, הוא יהפוך לערך מגבלה עליון, משהו כמו 65536 או יותר, ואז החלק הבא של הקוד לא ירוץ נכון...

אה אוקיי תיקנתי ככה:


while(!(feof(f)) && i!=0)

אבל הבעיה היא שבקובץ שלי יש את המתשנים 50 100 80 והוא מוציא:

4104 4050 0 8559 8623 8743 0 8743 9729 13883 8679 8623 14018 8679 9771 900 8567 9796 4104 4050 9796 8653 8679 28699 8631 9736 13587 8631 4104 4050 0 8559 8623 8743 0 8743 9785 13883 8679 8623 14018 8679 9831 24230 8631 -1 4104 4050 -1 8653 1198

למה עדיין זה ממשיך?

פורסם

יש לך שם רווח בFSCANF.

תנסה להוריד אותו.

פורסם

כי לא כל המשתנים מאותחלים כראוי... אתה מגדיר את המערך Y, אבל אתה לא מקצה לכל האיברים ערכים... בלולאת FOR השניה, אתה תמיד מדפיס את כל 50 הערכים של Y, והם לא מאותחלים, ולכן אתה מקבל שטויות...

הנה קוד יותר נורמלי:

#include <stdio.h>

int main(void)

{

int y[50];

unsigned int i = 0, max;

FILE *f;

f=fopen("d1.txt","r");

while(!feof(f))

{

i++;

fscanf(f,"%d ",&y);

}

fclose(f);

max = i;

f=fopen("d2.txt","w");

while (i)

{

fprintf(f,"%d ",y[max-i+1]);

i--;

}

fclose(f);

return 0;

}

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

גם הקוד הזה לא מושלם, אפשר להפוך את ה WHILE ל FOR יורד, ולעשות ERROR CHECKING וכו'...

ארכיון

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

דיונים חדשים