נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: עבודה עם קבצים ומחרוזות בC

(נושא נעול נושא נעול)
שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
Inj3ction
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 29 December 2005 בשעה 22:36 | IP רשוּם
 

אוקיי לפני כמה ימים כשhts חזר, נכנסתי אליו והתחלתי לפתור בו אתגרים. נתקעתי באתגר אחד של תכנות. המטרה של האתגר היא לבנות תוכנית שלוקחת 10 מילים מתוך קובץ טקסט שהאותיות שלהן מעורבבות ולסדר אותן בעזרת קובץ טקסט עם אוצר מילים. אוקיי בינתיים נשמע קל.. התחלתי לבנות את התוכנית והכל היה טוב, עד שנתקעתי בשלב קטן. בניתי בינתיים תוכנית שלוקחת מילה אחת מהקובץ טקסט עם המילים המבולגנות ובודקת אותה מול כמה מילים מהקובץ אוצר המילים ומסדרת  את האותיות במילה(לפי סכום האסקיי של התוים). הכל עובד והכל טוב. עכשיו מה שאני רוצה בעצם לעשות זה שהתוכנית תסדר ישר כמה מילים ולא רק מילה אחת. בעיקרון הבעיה היא שאני מנסה לעשות שהפונקציה fgets() תרד רק שורה אחת בקובץ בדיקה, ותרד כמה שורות בקובץ האוצר מילים... טוב הנה הקוד של התוכנית:
קוד:


#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int c=0;
int ascii(char *a) {
    c=0;
     int i;
     for (i=0;i<strlen(a) && i<20;++i) { c+=a; }
     return c;
     }
main() {
       int n;
       char a[20];
       char b[20];
       FILE *fp;
       FILE *fp2;
       fp=fopen("tmp.txt", "r");
       fp2=fopen("wordlist.txt", "r");
       if (fp==NULL||fp2==NULL) { printf("ErRoR"); getch(); abort(); }
       printf("working...\n");
       start:
       {
       fgets(a,20,fp);
       ascii(a);
       n=c;
       fgets(b,20,fp2);
       ascii(b);
       if (n==c) { printf("%s,", b); }
       else { goto start; }
       }
       getch();
       }

עכשיו תריצו את התוכנית ותיצרו שתי קבצים באותה התיקייה: tmp.txt ו wordlist.txt שימו לדוגמא ב tmp.txt
קוד:

ohlel

וב wordlist.txt
קוד:

blablabla
jjj
nanana
hello

הפלט של התוכנית יהיה: hello. אני רוצה שהוא יבדוק יותר ממילה אחת ולא הצלחתי לפתור את זה עם לולאה פשוטה.
תודה מראש
חזרה לתחילת העמוד הצג את כרטיס החבר של Inj3ction חפש הודעות אחרות של Inj3ction
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 30 December 2005 בשעה 08:54 | IP רשוּם
 

הערה קטנה - תגדיר שמות משמעותיים למשתנים. באתי לקרוא אבל בגלל שהכל זה a, b וכו' וצריך זמן (שאין לי) כדי להבין מה קורה כאן, אני ממשיך הלאה להודעות הבאות. נסה, גם בתור הרגל בשבילך, וגם בשביל לעזור לקוראים, לתת תמיד שמות משמעותיים למשתנים.



__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
SDX
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת
הודעות: 106
נשלח בתאריך: 31 December 2005 בשעה 01:00 | IP רשוּם
 

גם אני כמו ניר לא קראתי את התוכנית.
אבל בשביל מה שאתה רוצה לעשות תקרא עד הסוף השורה מהקובץ של השמות המבולבלים
ותעשה לולאה שקוראת ככה עד סוף הקובץ
ותעשה את אותו חיפוש :/
ורואים שלא למדת מספר מסודר, אלא מהאינטרנט
הקוד שלך לא יעיל ומגעיל.. (no offence).


__________________
Smoke weed evryday
~-===-~

חזרה לתחילת העמוד הצג את כרטיס החבר של SDX חפש הודעות אחרות של SDX
 
Inj3ction
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 31 December 2005 בשעה 01:41 | IP רשוּם
 

תודה פתרתי כבר. פשוט הכנסתי את כל המילים מהקובץ הראשון למערך ושלפתי מילה מילה עד שהוא יסדר אותה.. וSDX לא שאלתי אם זה קוד טוב או לא, כי לא השקעתי בלעשות אותו יעיל אלא רק העיקר היה בשבילי לפתור את האתגר.
אפשר לנעול
חזרה לתחילת העמוד הצג את כרטיס החבר של Inj3ction חפש הודעות אחרות של Inj3ction
 
SDX
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת
הודעות: 106
נשלח בתאריך: 31 December 2005 בשעה 01:53 | IP רשוּם
 

שמע זה עצוב שאתה לא רגיל לכתוב אותו יעיל
וצריך להתאמץ :/


__________________
Smoke weed evryday
~-===-~

חזרה לתחילת העמוד הצג את כרטיס החבר של SDX חפש הודעות אחרות של SDX
 
pitbull
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 31 December 2005 בשעה 15:41 | IP רשוּם
 

SDX, אתה מתכוון שהקוד לא נראה יפה או לא יעיל? אלו דברים שונים..
לפי דעתי הפונקצייה שהוא בנה לחישוב סכום ה ascii יעילה מאוד
הדבר היחיד שלא יעיל זה ה goto ...
חזרה לתחילת העמוד הצג את כרטיס החבר של pitbull חפש הודעות אחרות של pitbull
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 31 December 2005 בשעה 15:48 | IP רשוּם
 

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

צריך עוד משהו?


__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
pitbull
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 31 December 2005 בשעה 16:19 | IP רשוּם
 

אוקי צודק, לא שמתי לב למשתנים גלובליים ולסגירת הקבצים...
חזרה לתחילת העמוד הצג את כרטיס החבר של pitbull חפש הודעות אחרות של pitbull
 
Inj3ction
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 31 December 2005 בשעה 19:43 | IP רשוּם
 

האי סגירת קבצים זה בגלל שכשניר נעל לי את הנושא הקודם פשוט העתקתי את כל מה שהיה בו, ומה שפירסמתי בו היתה התוכנית הישנה שבניתי. תיקנתי את הסגירת קבצים כבר מזמן וגם את הכמה משתנים הגלובליים.
אז ניר כל מה שאמרת מתוקן אצלי כבר מזמן חוץ מהדבר הזה של "הזחה בסגנון לא מקובל"- למה התכוונת?
חזרה לתחילת העמוד הצג את כרטיס החבר של Inj3ction חפש הודעות אחרות של Inj3ction
 
SDX
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת
הודעות: 106
נשלח בתאריך: 31 December 2005 בשעה 21:00 | IP רשוּם
 

חח, אני לא מבין אותך..
אתה ממש מפגר הא, הוא לא בא לריב איתך הוא בא להראות לך, פעם הבאה
איך לכתוב קוד יעיל (ונכון..).


__________________
Smoke weed evryday
~-===-~

חזרה לתחילת העמוד הצג את כרטיס החבר של SDX חפש הודעות אחרות של SDX
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 01 January 2006 בשעה 08:33 | IP רשוּם
 

הפונקציה הראשונה, עם הזחה כמו שצריך:
קוד:
int ascii(char *a) {
    int i;
    c = 0;
    for (i = 0; i < strlen(a) && i < 20; ++i) {
        c+=a;
    }
         return c;
}

שים לב גם שהפכתי לך את הסדר של המשתנים - אסור לעשות פעולות על משתנה לפני הגדרת משתנה לפי שפת C.


__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
Inj3ction
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 01 January 2006 בשעה 10:40 | IP רשוּם
 

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

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 01 January 2006 בשעה 11:49 | IP רשוּם
 

מזה? בזמן האחרון יש פה מלא ריבים
במיוחד בפורום תכנות, תרגעו אנשים :|
חזרה לתחילת העמוד הצג את כרטיס החבר של pitbull חפש הודעות אחרות של pitbull
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 01 January 2006 בשעה 11:56 | IP רשוּם
 

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


מסכים


__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
SDX
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת
הודעות: 106
נשלח בתאריך: 02 January 2006 בשעה 18:10 | IP רשוּם
 

Inj3ction כתב:
תודה ניר. וsdx שתוק נמעסת זה שאתה לא מבין נכון מה אני כותב זה לא אשמתי ואני לא בא לריב עם אף אחד. תנסה לקרוא את מה שאני אומר בטון אחר

"נמעסתי" אוקי.. lol
קודם כל אתה באת "להגן" על עצמך בפוסט שהיה לפני לכן
אני כתבתי את מה שכתבתי..
אדיוט..


__________________
Smoke weed evryday
~-===-~

חזרה לתחילת העמוד הצג את כרטיס החבר של SDX חפש הודעות אחרות של SDX
 
y2cRAck4
אחראי פורומים
אחראי פורומים
סמל אישי

הצטרף / הצטרפה: 28 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 437
נשלח בתאריך: 05 January 2006 בשעה 07:10 | IP רשוּם
 

נעול

__________________
? Why to crack for
חזרה לתחילת העמוד הצג את כרטיס החבר של y2cRAck4 חפש הודעות אחרות של y2cRAck4 בקר בדף הבית של y2cRAck4
 

מצטערים, אינך יכול/ה להגיב לנושא זה.
נושא זה נעול.

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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