עזרה בשפת C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה בשפת C


בלה

Recommended Posts

התחלתי ללמוד היום שפת C כי בבית הספר הדפוק שלי מלמדים רק פסקל שהבנתי שזה לא שימושי בכלל...

אני לומד מכל מיני מדריכים באינטרנט.

כתבתי איזו תוכנית שלא עובדת לי.

מטרת התוכנית היא לכתוב לתוך קובץ טקסט ואחר כך לקרוא ממנו.

למדתי שצריך לכתוב fflash(stdin) לפני כתיבה בקובץ טקסט.

מה זה עושה?

ומישהו יכול להגיד לי מה לא בסדר בקוד הבא?

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

      FILE *ptr;

  char shalom[25];

  char aot;

  void write_to_file (char shalom[])

  {

         ptr = fopen("shalom.txt", "wt");

         if (ptr == NULL)

            exit(1);

         else

{

        printf ("writing to the file %s :\n",shalom);

fflush (stdin);

for (fscanf (stdin,"%aot",&aot);!feof(stdin);fscanf (stdin,"%aot",&aot))

fprintf (ptr,"%aot",&aot);   

     if (fclose(ptr))

               exit (1);

            else

               printf ("\n\rThe file %s has been closed\n\r", shalom);

}

  }

  void read_from_file (char shalom[])

  {

  FILE *ptr;

  printf("Reading from the file %s",shalom);

  ptr = fopen("shalom.txt", "rt");

          if (ptr == NULL)

  {

  printf("Cannot write to the file.\n");

  exit (1);

  }

  else

  {

  printf("Reading from the file %s :\n",shalom);

  for (fscanf(ptr,"%aot",&aot);!feof(ptr);fscanf(ptr,"%aot",&aot))

  fprintf(stdout,"%aot",aot);

  fclose(ptr);

  printf("end of file");

  }

  }

  void main ()

  {

  printf ("enter file name to create");

      scanf ("%s",shalom);

  write_to_file (shalom);

  read_from_file (shalom);

  }

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


FILE *ptr;
char shalom[25];
char aot;

תעביר לתוך הMAIN שלך.


ptr = fopen("shalom.txt", "wt");

צריך להיות


ptr = fopen(shalom, "wt");[/code

for (fscanf (stdin,"%aot",&aot);!feof(stdin);fscanf (stdin,"%aot",&aot))

fprintf (ptr,"%aot",&aot);



תחליף את "%aot" ב- "%s" [b]משהו רשום בעברית כדי שלא תהייה בעיה בפורום[/b].

ותגדיר את aot בתוך הפונ שאתה משתמש בהם(זוכר שהורדת את זה מתחילת הקובץ?(
איפה שרשמת מקודם, ציין שאילו יהיו משתנים גלובלים, ובתכנות מנסים להמנע כמה שיותר ממשתנים גלובאלים.
מחרוזות מקיפים ב- "", אך מכיוון שרצית שהוא יגש לקובץ ששמו נמצא במשתנה SHALOM אז אתה צריך לרשום רק את שם המשתנה, בלי "".
ובקשר לשלישי, אחרי האחוז אתה צריך לרשום לו למה אתה מצפה, לאיזה סוג קלט אתה מצפה, אם זה מספר אז %D, אם מחרוזת %S, ואם מספר עם נק אז %F וכו', ולא את שם המשתנה. וכדי שלא תתבלבל- שמות משתנים לא רושמים בין "".

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

כן איזה טמבל אני.

את ה- txt והקליטה כבר ראיתי.

אח שלי אמר לי שהתוכנית הזאת כתובה בצורה ממש גרועה (העתקתי אותה כמעט שלמה מאתר אחר) והראיתי לו את המקור והוא אמר שהוא גם גרוע בגלל משתנים גלובליים וכל סגנון הכתיבה שלה.

אז מישהו מכיר אתר חינמי ללימוד C? עדיפות לעברית מנוחיות, אבל אם אין אז באנגלית.

כרגע אני אלמד מספר שמצאתי באינטרנט באנגלית שקוראים לו Teach Yourself C in 21 days אבל אם למישהו יש המלצה לדרך לימוד חינמית מהאינטרנט שיגיד לי בבקשה.

תודה על העזרה.

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

סבבה תודה.

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

בתור בסיס, הספר הזה נראה לך בסדר בעיקרון?

אם אני אלמד אותו טוב ואדע הכל שם אחרי שפתרתי את כל התרגילים שם והכל.. אני אוכל לעבור נגיד ל- C++ נכון?

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

אופס, חשבתי שדיברת על teach yourself c++ in 21 days...

למה צריך 21 יום כדי ללמוד C?

לדעתי לא צריך ללמוד C לפני C++, ויש לא מעט ספרים שמלמדים אותך בלי להניח ידע ב- C (למרות שזה כן עוזר קצת).

אגב, אין שום דבר רע בפסקל, גם בשביל שפת לימוד וגם בתור שפה שימושית (סביב פסקל בורלנד בנתה את Delphi)

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

מישהו יודע מה לא בסדר בתוכנית הזו?

#include <stdio.h>

#include <stdlib.h>

main()

{

char *p_chr;

p_chr = malloc(80 * sizeof(char));

if (p_chr== NULL)

{

printf("Insufficient Memmory Space");

exit(1);

}

gets(p_chr);

puts(p_chr);

return 0;

}

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

p_chr = malloc(80 * sizeof(char));

אתה צריך להוסיף CASTING לפני הMALLOC ל- CHAR *.(MALLOC זו פונ משונה שכזו)


p_chr = (char *)malloc(80 * sizeof(char));

ד.א. מומלץ בדרך כלל להקצות מערך בגודל שלא ידוע, למשל, עכשיו ידעת שאורך המחרוזת יהייה מקסימום 79, ולכן הקצאת בגודל 80(ל- \0), היית יכול להשתמש במערך סטטי במקום זה.

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

ארכיון

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

×
  • צור חדש...