קריאה מקובץ בשפת סי.. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

קריאה מקובץ בשפת סי..


rabbit

Recommended Posts

תראו יש לי קובץ טקסט

אני רוצה לפלוט את כל מה שבקובץ דרך סי

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

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

הנה הפונקציה שבניתי..

void help()

{

FILE *pf;

char s;

pf=fopen("c:\\tc\\bin\\help.txt","rb");

if(pf==NULL)

{

printf("cant open file");

return(-1);

}

fread(&s,sizeof(s),1,pf);

outtext(s);

fclose(pf);

}

קישור לתוכן
שתף באתרים אחרים

אפשר גם ליישר לשמאל, הרבה יותר ברור

void help()

{

FILE *pf;

char s;

pf=fopen("c:\\tc\\bin\\help.txt","rb");

if(pf==NULL)

{

printf("cant open file");

return(-1);

}

fread(&s,sizeof(s),1,pf);

outtext(s);

fclose(pf);

}

הפונקציה הזאת קוראת תו אחד ופולטת אותו, זה לא קורא את כל הקובץ

קישור לתוכן
שתף באתרים אחרים

לא קיים תו של ירידת שורה, ירידת שורה מוקדדת לשתי תוים ב-ASCII

האחד הוא סימן של ירידת שורה והשני סימן של מעבר לתחילת השורה

קישור לתוכן
שתף באתרים אחרים

כל זה מיותר לגמרי

אם הוא רוצה לכתוב את כל מה שהוא קורא הוא יקרא את שני התוים האלה (10 & 13) ויכתוב אותם למסך כמו כל תו אחר

אין שום הגיון לעשות if מיוחד לזה

זה כמו שהוא יקרא את האות a ויבדוק ב-if אם הוא קרא a אז הוא ידפיס a, מיותר לגמרי.

קישור לתוכן
שתף באתרים אחרים

אפשר גם ליישר לשמאל, הרבה יותר ברור

void help()

{

FILE *pf;

char s;

pf=fopen("c:\\tc\\bin\\help.txt","rb");

if(pf==NULL)

{

printf("cant open file");

return(-1);

}

fread(&s,sizeof(s),1,pf);

outtext(s);

fclose(pf);

}

הפונקציה הזאת קוראת תו אחד ופולטת אותו, זה לא קורא את כל הקובץ

תכתוב פונקציה שמתאימה למה שאתה רוצה לעשות

קישור לתוכן
שתף באתרים אחרים

זה פשוט, אתה קורא תו תו מהקובץ ומדפיס

אם התו הוא תו ירידת שורה זה ירד שורה..

וכדי לקרוא את כל התווים תשתמש בלולאה ככה

while (fread(&s,sizeof(s),1,pf) != 0)

   outtext(s);

קישור לתוכן
שתף באתרים אחרים

עשיתי את זה ץץ עכשיו זה בכלל לא מדפיס לי כלום

והפונקציה שלי טובה היא קוראת הכל אבל פשוט מדפיה הכל באותה שורה בלי לרדת שורה...

כל מה שאני צריך זה להגיד לו מתי לרדת שורה איך אני עושה את זה?

קישור לתוכן
שתף באתרים אחרים

היא קוראת הכול? אז יש לך רק תו אחד בקובץ ...

השורה הזאת fread(&s,sizeof(s),1,pf);

קולטת למשתנה S בדיוק תו אחד

יכול להיות שהתבלבלת בפונקציות והבאת פונקצייה אחרת ..<?>

קישור לתוכן
שתף באתרים אחרים

היא קוראת הכל..

ויש לי יותר מתו אחד

ואני גם יסביר לך למה היא קוראת הכל כי S מוגדר כ char s[1000]

יעני מערך של 1000 תוים היא קוראת עד 1000 תוים בכל פעם

השאלה היא איך אני יורד שורה..

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...