[C] Probleme beim Auswerten eines Strings

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [C] Probleme beim Auswerten eines Strings

    Original geschrieben von asp2php
    ähm ... ist es nicht besser, dass du deine Fragen in einem C/C++ Forum stellst solche gibts wie Sand am Meer
    Eine letzte Frage...


    Ich hab folgendes Problem. Ich lese einen String von einer Datei in einem proprietären Format, die Bytefolgen kenne ich genau. Ich möchte den String in ein von mir definiertes struct-array umwandeln. Vorher habe ich den String genommen und per TCP an einen anderen Computer geschickt und dort die Umwandlung vorgenommen. Jetzt da ich die Umwanwandlung auf dem Rechner wo die Datei gelesen wird (dem Server) selbst mache, funktioniert es nicht mehr, dabei hab ich den Code gecopy-pasted! Hier der erste Teil:

    Code:
        pFile = fopen ( "artists.txt" , "rb" );
        fseek (pFile , 0 , SEEK_END);
        lSize = ftell (pFile);
        rewind (pFile);
        buffer = (char*) malloc (lSize);
        fread (buffer,1,lSize,pFile);
        fclose (pFile);
    
        memcpy(num_artists_c, &buffer, 5);
        num_artists_c[5]='\0';
        offset = 5;
        printf("%s\n", num_artists_c);
        printf("num artists: %d\n", atoi(num_artists_c));
        num_artists = atoi(num_artists_c);
        artist_entry * artist_list;
        artist_list = (artist_entry *)malloc(num_artists*sizeof(artist_entry));
    Ausgabe:

    êO1
    num artists: 0
    Auf dem Client hat er mir '517' ausgegeben, was richtig war... .

  • #2
    Hi,

    Code:
    memcpy(num_artists_c, &buffer, 5);
    buffer ist vom typ char * richtig ? Jetzt überleg doch mal warum der addressoperator
    an dieser stelle nicht das ist was du willst.

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Luke, du sollst dringend * und & Unterschiede nachholen, mit C kann man sen Rechner ganz schnell zum Stillstand bringen

      Kommentar


      • #4
        Jo danke, aber warum funktioniert der Rest wenn ich & benutze?

        Beispiel:

        Code:
        offset=5;
        memcpy(artist_name_lenght_c, &buffer[offset], 3);
        artist_name_lenght_c[3]='\0';
        artist_name_lenght = atoi(artist_name_lenght_c);
        offset += 3;

        Kommentar

        Lädt...
        X