Avatar billede bjering Nybegynder
11. november 2005 - 13:37 Der er 3 kommentarer og
1 løsning

Nogen der kan se min fejl her? sammenligne 2 linier text.

Hejsa der.

Har den her kode:

    char newsdate[10];
    char testdate[10];

    ofstream newsout("news.txt");
    ifstream newsin("news.txt");

    // if file exsists, compare to see if up 2 date, else download new.
    if (newsout != NULL)
    {
        recv(sock,testdate, 10, 0);
        newsout.write(testdate, 10);
        newsin.read(newsdate, 10);

        if(strcmp(newsdate, testdate) == 0)
        {
            help.WriteStat(hStatusText, "Up2date...");
            Sleep(2000);
            download = 0;
        }
        else
        {
            Sleep(1000);
            download = 1;
        }
    }
    // if file dont exsist, download new
    if(newsout == NULL)
    {
        Sleep(1000);
        newsout.write(testdate, 10);
        download = 1;
    }

    int notify = 1;
    if (type == 1 && download == 1)
    {
        help.WriteStat(hStatusText, "Downloading news...");

-----
news text filen:

[11/10/05]
Her kan man så se nyheden.



* nyt 1

* nyt 2



o.s.v



[01/01/05]
Kunne være en gammel nyhed ingen gider læse.

Men hvad.

------

nå, men den henter altså [11/10/05] fra webserveren til filen, og henter [11/10/05] fra news.txt filen hvis den eksisterer på pc'en, og hvis de ikke passer sammen så skal den hente den nye på webserveren, ellers skal den bare hoppe videre og ikke downloade.

men det gør den ikke, den downloader hele tiden, uanser hvad..

nogen der kan sige min fejl?
Avatar billede bjering Nybegynder
11. november 2005 - 13:39 #1
ups, skulle være dette den gjorde.

[11/10/05] fra webserver til buffer
[11/10/05] fra filen på pc til buffer
sammenlign

hvis ikke passer, hent ny, ellers skip
Avatar billede bertelbrander Novice
11. november 2005 - 23:33 #2
Problemet med at bruge read til at læse en streng er at den ikke putter en 0 terminering ind efter strengen og så ved strcmp ikke hvornår strengen slutter.

Et hurtigt fix kunne være at lave plads til 0 termineringen og selv sætte den ind efter read. Man kunne også vælge at bruge readline

Der er det samme problem med recv.
Avatar billede bertelbrander Novice
12. november 2005 - 12:31 #3
Du kan også bruge memcmp(newsdate, testdate, 10) i stedet for strcmp(newsdate, testdate)
Avatar billede bjering Nybegynder
03. april 2006 - 15:50 #4
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester