freed liefert 0

Dieses Thema im Forum "C/C++" wurde erstellt von djtraumwelt, 12.10.2008.

  1. #1 djtraumwelt, 12.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Ich habe eine Datei geöffnet mit:
    Code:
    fp=fopen(filename,"rb");
    danach versuche ich aus der datei zu lesen mit:
    Code:
    bytes=fread(buffer,1,1000,fp);
    fp ist nicht 0 und auch nicht -1, aber bytes ist immer 0. Warum?

    Hier nochmal der komplette Code (ist aber Win):
    Code:
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <winsock2.h>
    
    HINSTANCE hInst;
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    DWORD WINAPI serverfunc (LPVOID);
    WSADATA wsa;
    HANDLE Hserver;
    HWND glob;
    int endsig=0;
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int nCmdShow) {
     MSG msg;
     BOOL bRet;
     hInst=hInstance;
     HWND hWnd;
     int xwin=0;
     int ywin=0;
    
     char winclass[] = "Fensterklasse";
     WNDCLASS wc;
    
     wc.style = CS_HREDRAW | CS_VREDRAW;
     wc.lpfnWndProc = WndProc;
     wc.cbClsExtra = 0;
     wc.cbWndExtra = 0;
     wc.hInstance = hInstance;
     wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
     wc.hCursor = LoadCursor (NULL, IDC_ARROW);
     wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
     wc.lpszMenuName = NULL;
     wc.lpszClassName = winclass;
    
     RegisterClass (&wc);
    
     xwin=GetSystemMetrics(SM_CXSCREEN);
     ywin=GetSystemMetrics(SM_CYSCREEN);
     xwin /= 2;
     xwin -= 200; //400 Breit
     ywin /= 2;
     ywin -= 50; //100 Hoch
    
     hWnd = CreateWindow (winclass, "WG-Com 1=Alex 2=Ricky 3=Boris", WS_OVERLAPPEDWINDOW, xwin, ywin, 400, 100, NULL, NULL, hInstance, NULL);
     glob=hWnd;
    
     ShowWindow(hWnd, nCmdShow);
     UpdateWindow(hWnd);
    
     while( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
     }
    
     return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
     HDC hdc;
     PAINTSTRUCT ps;
     RECT crect, wrect;
     int xdiff;
     int ydiff;
     char rmsg[100];
     SOCKET sock;
     SOCKADDR_IN addr;
     OPENFILENAME ofn;
     char filter[100];
     char filename[260];
     char filetitle[200];
     char buffer[1024];
     FILE *fp;
     size_t bytes;
    
     if (msg == WM_CREATE) {
      GetWindowRect(hWnd,&wrect);
      GetClientRect(hWnd,&crect);
      xdiff=(wrect.right - wrect.left) - crect.right;
      ydiff=(wrect.bottom - wrect.top) - crect.bottom;
      wrect.left=wrect.left - (xdiff / 2);
      wrect.top=wrect.top - (ydiff / 2);
      xdiff += 400;
      ydiff += 100;
      MoveWindow(hWnd,wrect.left,wrect.top,xdiff,ydiff,TRUE);
    
      WSAStartup(MAKEWORD(2,0),&wsa);
      Hserver=CreateThread(NULL,0,serverfunc,NULL,0,NULL);
     }
     if (msg == WM_KEYDOWN) {
      if (wParam >= 49 && wParam <= 51) {
       ofn.lStructSize=sizeof(OPENFILENAME);
       ofn.hwndOwner=hWnd;
       filter[0]='*';
       filter[1]=0;
       filter[2]='*';
       filter[3]='.';
       filter[4]='*';
       filter[5]=0;
       filter[6]=0;
       ofn.lpstrFilter=filter;
       ofn.lpstrCustomFilter=NULL;
       ofn.nFilterIndex=0;
       filename[0] = 0;
       ofn.lpstrFile=filename;
       ofn.nMaxFile=260;
       ofn.lpstrFileTitle=filetitle;
       ofn.nMaxFileTitle=200;
       ofn.lpstrInitialDir=NULL;
       ofn.lpstrTitle=NULL;
       ofn.Flags=OFN_EXPLORER;
       ofn.lpstrDefExt=NULL;
       GetOpenFileName(&ofn);
    
       memset(&addr,0,sizeof(SOCKADDR_IN));
       addr.sin_family=AF_INET;
       addr.sin_port=htons(5800);
       if (wParam == 49)
        addr.sin_addr.s_addr=inet_addr("192.168.2.101");
       if (wParam == 50)
        addr.sin_addr.s_addr=inet_addr("192.168.2.102");
       if (wParam == 51)
        addr.sin_addr.s_addr=inet_addr("192.168.2.100");
       sock=socket(AF_INET,SOCK_STREAM,0);
       if (connect(sock,(SOCKADDR*)&addr,sizeof(SOCKADDR))==SOCKET_ERROR) {
        MessageBox(hWnd,"Konnte nicht connecten.","Error",MB_OK);
        closesocket(sock);
        return 0;
       }
       send(sock,filetitle,200,0);
       recv(sock,rmsg,3,0);
       fp=fopen(filename,"rb");
    sprintf(rmsg,"%d",fp);
    MessageBox(hWnd,rmsg,"fp",MB_OK);
       while(1) {
        bytes=fread(buffer,1,1000,fp);
        //send(sock,buffer,1000,0);
    sprintf(rmsg,"%d bytes read",bytes),
    MessageBox(hWnd,rmsg,"Filename",MB_OK);
       if (bytes==0)
        break;
       }
       fclose(fp);
       closesocket(sock);
      }
     }
     if (msg == WM_PAINT) {
       hdc=BeginPaint(hWnd,&ps);
       EndPaint(hWnd,&ps);
       return 0;
     }
     if (msg == WM_CLOSE) {
      endsig=1;
      WSACleanup();
     }
     if (msg == WM_DESTROY) {
      PostQuitMessage(0);
      return 0;
     }
    
     return DefWindowProc(hWnd,msg,wParam,lParam);
    }
    
    DWORD WINAPI serverfunc (LPVOID var) {
     SOCKET acceptsock, consock;
     SOCKADDR_IN addr;
     char buffer[1024];
     FILE *fp;
     int bytes;
     acceptsock=socket(AF_INET,SOCK_STREAM,0);
     memset(&addr,0,sizeof(SOCKADDR_IN));
     addr.sin_family=AF_INET;
     addr.sin_port=htons(5800);
     addr.sin_addr.s_addr=ADDR_ANY;
     bind(acceptsock,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
     while(endsig==0) {
      listen(acceptsock,10);
      consock=accept(acceptsock,NULL,NULL);
      if (consock >= 1) {
       recv(consock,buffer,1023,0);
       fp=fopen(buffer,"wb");
       sprintf(buffer,"OK");
       send(consock,buffer,3,0);
       while(bytes=recv(consock,buffer,1023,0) >= 1) {
        fwrite(buffer,1,bytes,fp);
       }
       fclose(fp);
       closesocket(consock);
      }
     }
     closesocket(acceptsock);
     ExitThread(0);
     return 0;
    }
    
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. karru

    karru OSX'ler

    Dabei seit:
    02.05.2006
    Beiträge:
    338
    Zustimmungen:
    0
    Vielleicht weil die Datei leer ist?
    Vielleicht weil "filename" auf etwas ungültiges zeigt?

    Beim nächsten Mal bitte den Quellcode auf die sinnvollen Bestandteil (zB. nur die betreffende Funktion) kürzen!

    Gruß
     
  4. #3 djtraumwelt, 12.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    die Datei ist nicht leer und filename kann nicht auf was ungültiges Zeigen, weil fp größer 1 ist.
     
  5. karru

    karru OSX'ler

    Dabei seit:
    02.05.2006
    Beiträge:
    338
    Zustimmungen:
    0
  6. #5 djtraumwelt, 12.10.2008
    Zuletzt bearbeitet: 12.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Ne, hab ich noch nicht versucht, ich gehe davon aus, dass es sich um einen error handelt.

    -edit-

    Habs mal versucht und es handelt sich nicht um einen error sondern um eof. Warum eof?
     
  7. #6 Blender3D, 12.10.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Weil in der Datei vielleicht nichts steht? Ist sie ein Link?

    Grüße, Blender3D
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

freed liefert 0

Die Seite wird geladen...

freed liefert 0 - Ähnliche Themen

  1. FSF Award 2015 an Werner Koch und Library Freedom Project

    FSF Award 2015 an Werner Koch und Library Freedom Project: Richard Stallman, Vorsitzender der Free Software Foundation (FSF), hat Werner Koch, den Entwickler von GnuPG, sowie das »Library Freedom Project«...
  2. Document Freedom Day 2016

    Document Freedom Day 2016: Die Registrierungsphase für den diesjährigen Document Freedom Day wird in Kürze eröffnet. Der Document Freedom Day ist eine globale Kampagne zur...
  3. Software Freedom Conservancy startet Spendenkampagne

    Software Freedom Conservancy startet Spendenkampagne: Die Software Freedom Conservancy benötigt mindestens 750 Unterstützer, um den Betrieb aufrecht erhalten zu können, und idealerweise über 2500, um...
  4. Freedomvote: Zehn Fragen über digitale Freiheiten für die Schweizer Parlamentswahl

    Freedomvote: Zehn Fragen über digitale Freiheiten für die Schweizer Parlamentswahl: Die FSFE Schweiz und die Swiss Open Systems User Group haben eine Kampagne gestartet, die die Kandidaten zu Themen wie Netzpolitik und freie...
  5. Document Freedom Day 2015 wirbt für Open Document Standards

    Document Freedom Day 2015 wirbt für Open Document Standards: Am 25.3 wird weltweit der diesjährige Document Freedom Day abgehalten. Über 50 Gruppen in 25 Ländern aus Afrika, Asien, Europa sowie Süd- und...