ABA


"הדפסת פונ' MAIN מתוך קובץ C"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7302 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7302
shay_ziv

   12:40   08.11.03   
אל הפורום  
  הדפסת פונ' MAIN מתוך קובץ C  
 
   היי חברים..
הבעיה שלי היא כזאת-התחלנו את הנושא הזה והוא קצת לא ברור לי אז אני יחזור שוב על החומר..השאלה היא כזאת:
"כתוב תוכנית המקבלת שם של קובץ בשפת C ומדפיסה אך ורק את קובץ ה-MAIN שלו."

איך התוכנית יודעת אם זה שם חוקי או לא..
איך היא תדע להדפיס רק את המיין?
רשמתי כמה שורות-מקווה שתוכלו לעזור

#include <stdio.h>
#include <string.h>
typedef char string;


FILE *OpenFile( char *path)
{
FILE *ptrOpen = fopen(path,"r");
if (ptrOpen==NULL)
{
printf("\n Error opening file");
}
return ptrOpen;
}

void GetPath(char *path)
{
printf("enter the file path: ");
gets (path);
}

void CloseFile(FILE *fFile)
{
fclose(fFile);
}

char ReadCurrenLN(FILE *fFile)
{
string temp;
fgets(temp, 17,fFile);
*(strlen(temp)-2) = '\0';
return strdup(temp);
}


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה יכול לעשות משהו כזה: yoash 08.11.03 14:47 1
     אחי כנס בבקשה shay_ziv 08.11.03 15:04 2
         גבר shay_ziv 08.11.03 15:40 3
             בבקשה?!?!?!?!? shay_ziv 08.11.03 17:04 4

       
yoash

   14:47   08.11.03   
אל הפורום  
  1. אתה יכול לעשות משהו כזה:  
בתגובה להודעה מספר 0
 
   אתה קורא שורה שורה עד שאתה פוגש int main() או void main() ואז אתה נכנס לולאה נוספת שקוראת שורה מהקובץ בודקת עם הוא לא מכיל את הסוף של הפונקציה אם לא מכיל אז מדפיסה אותו וממשיכה לשורה הבאה אם הוא מכיל אז מדפיסה ויוצאת.

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shay_ziv

   15:04   08.11.03   
אל הפורום  
  2. אחי כנס בבקשה  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 08.11.03 בשעה 15:21 בברכה, shay_ziv
 
אחי זה מה שעשיתי וזה לא עובר קומפילציה
אתה מוכן לעזור לי???

#include <stdio.h>
#include <string.h>
typedef char string;


FILE *OpenFile( char *path);
void GetPath(char *path);
void CloseFile(FILE *fFile);
char *ReadCurrenLN(FILE *fFile);
char *ReadCurrenChar(FILE *fFile);

void main(void)
{
FILE *ptr;
string path;
char tav;
int flag;

printf ("enter the file's path");
GetPath(path);

while (!feof(ptr) || strcmp(ReadCurrenLN(ptr),"void main(void)")!=0)
{
ReadCurrenLN(ptr++);
}

while (flag >= 0)
{
if(strcmp (ReadCurrenChar(ptr),'{')==0)
{
flag++;
}
else if(strcmp(ReadCurrenChar(ptr),'}')==0)
{
flag--;
}
tav=fgetc(ptr);
printf("%c",tav);
ReadCurrenChar(ptr++);

}
CloseFile(ptr);
}

FILE *OpenFile( char *path)
{
FILE *ptrOpen = fopen(path,"r");
if (ptrOpen==NULL)
{
printf("\n Error opening file");
}
return ptrOpen;
}

void GetPath(char *path)
{
printf("enter the file path: ");
gets (path);
}

void CloseFile(FILE *fFile)
{
fclose(fFile);
}

char *ReadCurrenLN(FILE *fFile)
{
string temp;
fgets(temp,17,fFile);
*(strlen(temp)-2) ='\0';
return strdup(temp);
}
char *ReadCurrenChar(FILE *fFile)
{
char soger;
soger = fgetc(fFile);
return soger;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shay_ziv

   15:40   08.11.03   
אל הפורום  
  3. גבר  
בתגובה להודעה מספר 2
 
   אחי עשיתי מספר שינויים ויש לי רק טעות אחת

#include <stdio.h>
#include <string.h>
typedef char string;


FILE *OpenFile(string path);
void GetPath (string path);
void CloseFile(FILE *fFile);
char *ReadCurrenLN(FILE *fFile);
char *ReadCurrenChar(FILE *fFile);

void main(void)
{
FILE *ptr;
string path;
char tav;
int flag;

printf ("enter the file's path");
GetPath(path);

while (!feof(ptr) || strcmp(ReadCurrenLN(ptr),"void main(void)")!=0)
{
ReadCurrenLN(ptr++);
}

while (flag >= 0)
{
if(strcmp (ReadCurrenChar(ptr),'{')==0)
{
flag++;
}
else if(strcmp(ReadCurrenChar(ptr),'}')==0)
{
flag--;
}
tav=fgetc(ptr);
printf("%c",tav);
ReadCurrenChar(ptr++);

}
CloseFile(ptr);
}

FILE *OpenFile(string path)
{
FILE *ptrOpen = fopen(path,"r");
if (ptrOpen==NULL)
{
printf("\n Error opening file");
}
return ptrOpen;
}

void GetPath(string path)
{
printf("enter the file path: ");
gets (path);
}

void CloseFile(FILE *fFile)
{
fclose(fFile);
}

char *ReadCurrenLN(FILE *fFile)
{
string temp;
string original;
fgets(original,17,fFile);
strncpy(temp,originak,15);
return temp;
}
char *ReadCurrenChar(FILE *fFile)
{
char soger;
soger = fgetc(fFile);
return soger;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shay_ziv

   17:04   08.11.03   
אל הפורום  
  4. בבקשה?!?!?!?!?  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net