Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » zeilenweise quelltext

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]
010
16.10.2003, 18:23 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@virtual
Er hat mir nichts von nur Text erzählt, nur irgendwas von Zeichen. Weiss ich was der da in der Datei zu stehen hat?
Deshalb mein sicherer Vorschlag binärmode, der funzt immer.
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 16.10.2003 um 18:23 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
16.10.2003, 18:26 Uhr
typecast
aka loddab
(Operator)


@virutal: Ja es geht aber darum, dass das letzte sichtbare Zeichen bei Texten die mit Linuxprogrammen abgespeichert werden eine andere Position hat, als wenn der Text mit einem Windowsprogramm abgespeichert wird
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
16.10.2003, 18:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


dazu fällt mir folgendes ein
virtual-> virutal -> ... ->viagra
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 16.10.2003 um 18:29 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
17.10.2003, 10:30 Uhr
geissbock



also es wird eine datei ausgelesen die einen quellcode beinnhaltet. sie kann von einer x-beliebigen programmiersprache sein. und diesen dateien gibt es einen versionsheader. damit die versionen verglichen oder zusammengefügt werden können, muss dieser header aus der datei raus. das sollte als erklärung reichen.

aber was bringt mir nun der binärmode?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
17.10.2003, 11:18 Uhr
virtual
Sexiest Bit alive
(Operator)


IMHO Probleme.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
17.10.2003, 11:23 Uhr
geissbock




Zitat:
virtual postete
IMHO Probleme.


muss ich das jetzt verstehen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
17.10.2003, 12:43 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich hatte in Post 009 dieses Threads erwähnt, daß, wenn die Datei im Textmode geöffnet wird, eine automatische Übersetzung der Zeilenümbrüche in das Zeichen '\n' erfolgt. Wenn Du den Binärmode benutzt, wird das nicht gemacht. Je nach Betriebsystem können da nun sehr unterschiedliche Zeichen für einen Zeilenumbruch drin stehen. Das müsstest Du nun alles im Programm abfackeln/abfragen, eine nicht ganz einfache aufgabe, die eben Probleme macht.

Es gibt meiner Meinung keinen nachvollziehbaren Grund, hier irgendwas mit binär Mode zu machen, das geht im Zweifelsfall ins Auge. Du hast eine Sourcecode, also eine Textdatei, zu untersuchen, also nix binär gespeichertes.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
17.10.2003, 13:14 Uhr
geissbock



thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
20.10.2003, 12:12 Uhr
geissbock



komme wiedre nicht weiter.

wie stell ich es am dummsten an um zu vergleichen b diese zeichen vorkommen. es soll überprüft werden ob
/*===...==*/
//*===...==*
;*===...==*/
:*===...==*/
#*===...==*
in einer zeile vorkommen. also müsste ich doch erstmal eine zeile einlesen und mit den strings vergleichen. gibt es auch wie zum bsp in sql sogenannte joker wo ich sagen kann das egal welche und wieviele zeichen dazwischen kommen? so wie ich es mit den punkten versucht hab darzustellen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
20.10.2003, 12:19 Uhr
virtual
Sexiest Bit alive
(Operator)


Da haste aber glück: ich habe grade sowas zufälligerweise grade fertig geschrieben (Igitt, muß grade C machen!) - Vorgefertigt gibt es da aber nichts:
Bisher nicht in die Tiefe getestet:

C++:
/** like_compare
* This compares the a key and a string, whereas the key may contain wildcards:
* '?' - Means one arb. character
* '*' - Means 0-N arb. characters
* @param    <code>key</code>    Key to compare
* @param    <code>str</code>    String to compare
* @return    -1, if mismatch, 0 if exact match. If the value is positive, the
*            match is as better as smaller the result is.
*/

int
like_compare(
    const char* key,
    const char* str)
{
    int match = 0;
    size_t len = 0;

    /*
     * Assert parameters
     */

    if (NULL==key || NULL==str)
    {
        return -1;
    }

    /*
     * Loop to consume the entire key
     */

    len = strlen(str);
    while (*key)
    {
        size_t var_min = 0;
        int var_max = 0;
        size_t fix_len = 0;
        size_t i=0;

        /*
         * analye next portion of key.
         *
         */

        while ('?'==*key || '*'==*key)
        {
            if ('?'==*key++)
                ++var_min;
            else
                var_max = 1;
        }
        while (key[fix_len] && '?'!=key[fix_len] && '*'!=key[fix_len])
        {
            ++fix_len;
        }

        /*
         * Check minimum count of unspecified characters (number of '?')
         */

        if (len<var_min)
        {
            /* str too short */
            return -1;
        }
        str += var_min;
        len -= var_min;
        match += var_min;

        /*
         * Check next fixed part and variable count of unspecified characters
         */

        if (var_max)
        {
            int found = 0;

            /*
             * there is at least one '*' now in key. if no further fixed
             * text follows, we are ready so far, because this must be the
             * end of the key
             */

            if (0==fix_len)
            {
                match += 2*len;
                return match;
            }

            /*
             * Now we have to find the fixed text somewhere in str
             */

            for (i=0; i<len-fix_len && !found; ++i, --len, ++str, match += 2)
            {
                found = 0==strncmp(key, str, fix_len);
                ;
            }
            if (!found)
            {
                /* mismatch */
                return -1;
            }
            key += fix_len;
            str += fix_len-1;
        }else
        {
            /*
             * There is no '*', so the fixed part must match!
             */

            if (len<fix_len)
            {
                /* str too short */
                return -1;
            }
            for(i=0; i<fix_len; ++i, ++key, ++str, --len)
            {
                if (*str != *key)
                {
                    /* mismatch */
                    return -1;
                }
            }
        }
    }

    /*
     * Final check
     */

    if (*str)
    {
        /* Mismatch (key too short) */
        return -1;
    }

    return match;
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: