24-05-2007, 14:51
|
|
|
|
חבר מתאריך: 17.09.05
הודעות: 6,023
|
|
בעייה בקריאה עד feof
שלום
בניתי תוכנית שנתנו לי ויש לי בעייה איתה,זאת המשימה :
שאלה מס' 5 (20 נק')
כתוב תוכנית המקבלת כארגומנט בשורת הפקודה שם קובץ טקסט.
קובץ הטקסט מכיל מידע על מוצרים בחברה סלולרית. לכל מוצר יש מספר קטלוגי (מסוג long) ומחרוזת המכילה סדרת תוצאות ניסויי בקרת איכות שנערכו במוצר. ציון כל ניסוי הוא אות קטנה מהא"ב האנגלי (a-z). אורכה של המחרוזת אינו ידוע והיא מסתיימת בתו '\n'.נתון כי במחרוזת לא תופיע אף אות יותר מ 15 פעמים.
מספר המוצרים בקובץ אינו ידוע מראש.
על התוכנית לקרוא את הקובץ וליצור ממנו קובץ טקסט חדש בשם newFile.txt שיכיל את האינפורמציה הבאה עבור כל מוצר:
מספרו הקטלוגי של המוצר ומחרוזת דחוסה לפי אלגוריתם הדחיסה המתואר בהמשך ומסתיימת ב '\n' .
אלגוריתם הדחיסה: המחרוזת הדחוסה תכיל לסירוגין אות ומספר מופעיה ברציפות.
לדוגמא המחרוזת aabbacccccb תיכתב בצורה הדחוסה: a2b2a1c5b1.
לדוגמא:
תוכן קובץ הטקסט שהתקבל כקלט:
43523 aabcccddxxa
2536 abbbccee
12545 aabbfffzz
36458 wwwccaaa
4587 cfffddxxxx
תוכן קובץ הטקסט newFile.txt
43523 a2b1c3d2x2a1
2536 a1b3c2e2
12545 a2b2f3z2
36458 w3c2a3
4587 c1f3d2x4
זאת התוכנית שלי , ויש לי איתה בעייה, בדיבאגר היא עובדת פרפקט, עברתי עליה 100 פעם ולא מצאתי שום בעייה ! מה שקורה זה שהתוכנית כאילו ולא מסתיימת ושום דבר לא מודפס לקובץ newFile.txt
התוכנית :
קוד PHP:
int main(int argv,char *argu[]) { FILE *fp1=fopen(argu[1],"rt"); FILE *fp2=fopen("c:\\newFile.txt","wt"); int Letters[26]={0},i,ID=0,j; char ch=0;
if(fp1==NULL || fp2==NULL) { printf("File open or creating Error!"); return 0; } for(i=0;!feof(fp1);i++,ID=0) { for(j=0;j<26;j++) { Letters[j]=0; } ch=fgetc(fp1); while(ch!=' ') { ID=ID*10; ID=ID+ch-'0'; ch=fgetc(fp1); } ch=fgetc(fp1); for(j=0;ch!='\n';j++) { Letters[ch-'a']++; ch=fgetc(fp1); } fprintf(fp2,"%d ",ID); for(j=0;j<26;j++) { if(Letters[j]!=0) { fprintf(fp2,"%c%d",j+'a',Letters[j]); } } fprintf(fp2,"\n"); } fclose(fp1); fclose(fp2); return 1; }
תודה רבה, תשובות במהרה בבקשה, יש לי מבחן על החומר הזה מחר וזאת בעייה דיי מוזרה
_____________________________________
נערך לאחרונה ע"י fcf בתאריך 24-05-2007 בשעה 14:54.
|