עבור לתוכן

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

Featured Replies

פורסם

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

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

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

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

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

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 תחפש את זה איפושהו ואז תגיד

if c="התו של ירידת שורה"

}

printf "/n"

{

וזהו

פורסם

לא קיים תו של ירידת שורה, ירידת שורה מוקדדת לשתי תוים ב-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 תוים בכל פעם

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

פורסם

זה בגלל שככה לא קוראים מקובץ

קוראים עם מקובץ עם fgets או עם fscanf

תקרא את ה-help של TC

ארכיון

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

דיונים חדשים