Results 1 to 9 of 9

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Monkey Business poseydon's Avatar
    Join Date: Mar:2004
    Location: Sofia
    Posts: 1,537

    ìàëêî ïîìîù çà Ñ

    Çíà÷è èñêàì äà ñè íàïðàâÿ íåùî êàòî áàçà äàííè íà Ñ. Ñòàâà âúïðîñ çà ñúâñåì åëåìåíòàðíà ïðîãðàìêà, êîÿòî ðàáîòè ñúñ ñòðóêòóðè è çàïèñâà èíôîðìàöèÿòà â òåêñòîâè ôàéë. Åòî êàêâî íàïèñàõ äîñåãà:

    #include <stdio.h>
    #include <stdlib.h>

    struct s {

    char fn[30];
    char ln[30];
    char u[30];
    char p[30];
    };

    struct s e;

    int main(void)
    {
    FILE *fp;
    char tmp[50];

    printf("Enter your first name\n");
    gets( e.fn );

    printf("Enter your last name\n");
    gets( e.ln);

    printf("Enter your username\n");
    gets( e.u);

    printf("Enter your password\n");
    gets( e.p);


    fp = fopen( "database.txt", "wb+" );
    if( fp != NULL ) {
    fwrite( &e, sizeof( struct s ), 1, fp );
    fclose( fp );
    }


    return 0;

    }


    Îáà÷å èìà íÿêîëêî íåùà êîèòî èñêàì äà äîáàâÿ, à íåùî íå ñå ñåùàì êàê, îùå ñúì íà÷èíàåù. Ïúðâîòî íåùî å åäíî ìàëêî ìåíþ ñ äâå îïöèè, åäíàòà Äîáàâÿíå íà èìå êúì áàçàòà äàííè, à äðóãàòà òúðñåíå â áàçàòà. Èäåÿòà áåøå äà ñå ñòàðòèðà ìåíþòî ïúðâî ñúñ ñòàðòèðàíåòî íà ïðîãðàìàòà è îòòàì âå÷å äà ñå ïðàâè èçáîð ñúîòâåòíî êîéòî äà ñå ïðåìèíàâà êúì äåéñòâèå, îáà÷å íå çíàì êàê äà ãî íàïðàâÿ. Ïðàâèë ñúì ñè íÿêàêâè åëåìåíòàðíè ìåíþòà ñ if êîíñòðóêöèÿ îáà÷å íå ìîãà äà ñå ñåòÿ êàê ùå ñòàíå òóê. Äðóãèÿ ïðîáëåì êîéòî çàáåëÿçâàì å ÷å ïðè âñÿêî ñòàðòèðàíå ïðîãðàìàòà overwrite-âà ôàéëà çà çàïèñ, ÿñíî ìè å ÷å "wb+" òðÿáâà äà ñå ïðîìåíè ïî íÿêàêúâ íà÷èí, ïðîáâàõ äà ãî ïîñòàâÿ "àb+" îáà÷å ïàê íå ñòàíà, çàòîâà ñè ìèñëåõ äàëè å âúçìîæíî ïúðâî äà ñúçäàì âúïðîñíèÿ ôàéë, ñëåä êîåòî ïðåäè çàïèñâàíå íà èíôî òîé äà áúäå îòâàðÿí îò ïðîãðàìàòà, çà äà ñå èçáåãíå òîâà ïîñòîÿííî ïðåçàïèñâàíå...Àêî èìàòå èäåè ïî-ãîðíèòå âúïðîñè ìîëÿ ïîìîãíåòå ìè, íàäÿâàì ñå ÷å íÿìà äà èìà õîðà êîèòî äà ñå ïðèñìèâàò è äà ïðàâÿò ÿçâèòåëíè êîìåíòàðè îòíîñíî âúçìîæíîñòèòå ìè, â êðàéíà ñìåòêà íå ñå çàíèìàâàì îò ãîäèíè ñúñ Ñ, èìàì êíèãè âêúùè, ÷åòà, ó÷à ñå è ñå íàäÿâàì äà ìè ïîìîãíåòå ïîíå ìàëêî...

    Ïîçäðàâè!
    Ad astra per aspera - To the stars through difficulties
    Nvidia - The way you are meant to be played!
    Blog - http://poseyd0n.blogspot.com/

  2. #2
    Ïàòëàäæàí! Rostislao's Avatar
    Join Date: Feb:2005
    Location: Bulgaria
    Posts: 822
    Îòíîñíî ìåíþòî ìîæåø äà ãî íàïðàâèø êàòî øàáëîííî ñ èçáèðàíå íà îïöèè ... ñàìî äà âìåòíà, ÷å çâåðñêè ñúì çàáðàâèë ñèíòàêñèñà ...

    Ïðèìåðíî ìåíþ:

    1) Àëà áàëà
    2) Áàëà àëà
    3) Àëàäèí
    4) Ëàìïàòà ìó

    Òîâà âñè÷êîòî ñ cout ìîæåø äà ãî íàïèøåø ïî ñúâñåì ñòàíäàðòåí íà÷èí. Îò òàì èçïèñâàø (ïàê ñ cout) "Èçáåðåòå íåùî ñè : " è ÷åòåø ñëåäâàùîòî íàïèñàíî ... ìàé ñ cin áåøå(ìíîãî ñúì çàáðàâèë ñèíòàêñèñà) è ïðàâèø íàé-íàé ïðîñòè÷êà êîíñòðóêöèéêà ... if(StringaDetoSiGoProchel=="1") {...} è òàêà çà âñÿêî åäíî ... (åòî íà íå ñå ñåùàì çà ñèíòàêñèñà íà case). Íèùî ñëîæíî íÿìà â òàêîâà ìåíþ. Èíà÷å ìîæåø ñëåä êàòî ãî íàïðàâèø òàêà äà ñè ïîèãðàåø äà ÷åòåø íàòèñíàò êëàâèø ñ getche()(ìàé òàêà áåøå) è àêî å ìåæäó 1 è 4 äà ñòàâà ñúîòâåòíîòî äåéñòâèå è òàêà. Ïðîñòî èäåè äà èñêàø. Âèíàãè ìîæåø è äà ñè íàïðàâèø êâàäðàò÷å, êîåòî äà ìåñòèø ñúñ ñðåëêèòå äà ðå÷åì àìà äà íå ïðåêàëÿâàìå ... íå áÿõ ìíîãî ïîëçîòâîðåí àìà ñúì çàáðàâèë ÿêî Ö-òî.
    "Àå ìîæå ëè äîêàòî ñè ðàáîòèø åé òàêà è äà òè ñå íàïúëíè êîìïþòúðà ñ âèðóñè? Ùîòî àç ãëåäàì ñè íÿêàêâè ïîðíî ñàéòîâå è òîé ñàì ñå ïúëíè ..."

  3. #3
    ɐ-əpoɔᴉu⋂ ɐí íəÔ anrieff's Avatar
    Join Date: Apr:2004
    Location: Sofia
    Posts: 8,448
    Ïúðâîòî ìîæå äà ãî ðåàëèçèðàø òàêà:
    Code:
    int answer;
    ...
    printf("1. Add account\n");
    printf("2. Search for account\n");
    printf("3. Exit\n\n?");
    scanf("%d", &answer);
    if (answer == 1) { .. /* äîáàâÿíå */ }
    else if (answer == 2) { /* òúðñåíå */ }
    else return 0;
    ...
    Îòíîñíî âòîðîòî ñå ñåùàì çà äâà íà÷èíà, 1) Ïðîñòèÿ è 2) Ãîòèíèÿ íà÷èí

    1)  íà÷àëîòî íà ïðîãðàìàòà ïðîâåðÿâàø äàëè ôàéëà ñúùåñòâóâà; àêî íå, ñúçäàâàø ïðàçåí. Àêî îïåðàöèÿòà òè å add, òî ãî îòâàðÿø çà append ("ab" ìèñëÿ, ÷å ùå ñâúðøè ðàáîòà).

    Code:
    .. // somewhere in the beginning:
    FILE *f;
    f = fopen("database.bin", "rb");
    if (!f) {f = fopen("database.bin", "wb");}
    fclose(f);
    ...
    ...
    ... // code for add operation:
    f = fopen("database.bin", "ab");
    fwrite(...)...
    ...
    2) Ãîòèíèÿ íà÷èí: äúðæèø ñè ïðåç öÿëîòî âðåìå áàçàòà â ïàìåòòà Àêî äîáàâÿø íåùî, ãî ïðàâèø â ïàìåòòà, è íà èçëèçàíå ïå÷àòàø âñè÷êî íàâåäíúæ.

    Ïúðâî, êîäà çà ñúçäàâàíå íà ôàéë ñ áàçàòà, àêî òàêúâ íå ñúùåñòâóâà:
    Code:
    FILE *f;
    f = fopen("database.bin", "rb");
    if (!f) {f = fopen("database.bin", "wb");}
    fclose(f);
    Ïîñëå, íàìèðà ñå ãîëåìèíàòà (êîëêî àêàóíòà èìàø â òîÿ ôàéë):
    Code:
    int file_size, n;
    ...
    f = fopen("database.bin", "rb");
    fseek(f, 0, SEEK_END);
    file_size = ftell(f);
    n = file_size / sizeof(s);
    Â ãîðíèÿ êîä, "n" å áðîÿ íà àêàóíòèòå âúâ ôàéëà. Çàäåëÿìå ïàìåò çà n+1 àêàóíòà (òîâà ñå ïðàâè, çà äà íå çàäåëÿìå ïîñëå ïàê ïàìåò ïðè îïåðàöèÿ add):

    Code:
    s *data;
    ...
    data = (s*) malloc((n+1)*sizeof(s));
    Ïðî÷èòàìå öÿëàòà áàçà:
    Code:
    ...
    rewind(f);
    fread(data, sizeof(s), n, f);
    fclose(f);
    ...
    Àêî èìàìå îïåðàöèÿ add, ïðîñòî óâåëè÷àâàìå n, è íà êðàÿ, ïðè èçõîä îò ïðîãðàìàòà ïðàâèì:
    Code:
    f = fopen("database.txt", "wb");
    fwrite(data, sizeof(s), n, f);
    fclose(f);
    free(data);
    Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
    "640K îught to be enough for anybody" - Bill Gates, 1981
    Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel

  4. #4
    Ïàòëàäæàí! Rostislao's Avatar
    Join Date: Feb:2005
    Location: Bulgaria
    Posts: 822
    Ìîæå è íèùî ñìèñëåíî äà íå êàçàõ àìà ïîíå ÿäîñàõ õîðàòà çàíèìàâàùè ñå ïîâå÷å ñúñ Ñ++ îò ìåíå è òå òè êàçàõà
    "Àå ìîæå ëè äîêàòî ñè ðàáîòèø åé òàêà è äà òè ñå íàïúëíè êîìïþòúðà ñ âèðóñè? Ùîòî àç ãëåäàì ñè íÿêàêâè ïîðíî ñàéòîâå è òîé ñàì ñå ïúëíè ..."

  5. #5
    ɐ-əpoɔᴉu⋂ ɐí íəÔ anrieff's Avatar
    Join Date: Apr:2004
    Location: Sofia
    Posts: 8,448
    Íèùî ïîäîáíî, Rostislao, ïðîñòî ñè ïîñòíàë, äîêàòî àç ïèøåõ ìîÿ ïîñò
    Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
    "640K îught to be enough for anybody" - Bill Gates, 1981
    Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel

  6. #6
    Ïàòëàäæàí! Rostislao's Avatar
    Join Date: Feb:2005
    Location: Bulgaria
    Posts: 822
    Òðÿáâà è àç äà ñè "áîäíà" åäíî Ñ++, ÷å ìíîãî ìó ñå êåôÿ íà ñòåãíàòèÿ ñèíòàêñèñ. Èíà÷å äà íå ìó ñïàìÿ ïîâå÷å òåìàòà íà ÷îâåêà êàòî íàïèøà ðàáîòåùîòî ìåíþ â òåêñòîâ ðåæèì(ïðàâèõ ãî åäíî âðåìå íà ïóê íà âñåçíàåùàòà ñè ïðåïîäàâàòåëêà â óíèâåðñèòåòà) ùå òè ãî ïðàòÿ, àìà ñåãà íå ñìåÿ äà ñå èçëàãàì ñëåä òîëêîâà ãîäèíè íåïðàêòèêóâàíå.
    "Àå ìîæå ëè äîêàòî ñè ðàáîòèø åé òàêà è äà òè ñå íàïúëíè êîìïþòúðà ñ âèðóñè? Ùîòî àç ãëåäàì ñè íÿêàêâè ïîðíî ñàéòîâå è òîé ñàì ñå ïúëíè ..."

  7. #7
    Monkey Business poseydon's Avatar
    Join Date: Mar:2004
    Location: Sofia
    Posts: 1,537
    Ìíîãî áëàãîäàðÿ çà ãîòèíèòå èäåè! Îáà÷å íå ðàçáðàõ êàê äà îñúùåñòâÿ òúðñåíå â áàçàòà äàííè, ïðîñòî íå ìîãà äà ñå ñåòÿ, à è ÿâíî îïèòúò ìè å îãðàíè÷åí...ùå ñúì âè áëàãîäàðåí àêî ìè ïîìîãíåòå è çà òîâà ïîñëåäíî íåùî...
    Ad astra per aspera - To the stars through difficulties
    Nvidia - The way you are meant to be played!
    Blog - http://poseyd0n.blogspot.com/

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Copyright © 1999-2011 Õàðäóåð ÁÃ. Âúçìîæíî å ñúäúðæàíèåòî íà òàçè ñòðàíèöà äà å îáåêò íà àâòîðñêè ïðàâà.
iskamPC.com | mobility.BG | Bloody's Techblog | Êðèïòîâàëóòè è ìàéíèíã | 3D Vision Blog | Ìàãàçèí çà åëåêòðîííè öèãàðè