Announcement

Collapse
No announcement yet.

fopen mit Variable WinCe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • fopen mit Variable WinCe

    Hallo,

    ich möchte eine Textdatei öffen, wo der Dateiname eine Variable ist.

    das funktioniert:
    Code:
    InputFile=fopen("\\Storage Card\\daten\\dat154.txt","r");

    das geht leider nicht:
    Code:
    TCHAR FileName[80];
    
    wsprintf(FileName, TEXT("%s"), TEXT("\\Storage Card\\daten\\dat154.txt"));
    MessageBox(NULL,FileName,TEXT("Meldung"),MB_OK);
    
    InputFile=fopen(FileName,"r");
    In der Messagebox wird der Dateiname richtig angezeigt...


    das geht leider auch nicht:
    Code:
    TCHAR FileName[80];
    TCHAR Number[80];
    
    //hier wird Number gefüllt...
    
    wsprintf(FileName, TEXT("%s"), TEXT("\\Storage Card\\daten\\dat"));
    _tcscat(FileName, Number);
    _tcscat(FileName, TEXT(".txt"));
    MessageBox(NULL,FileName,TEXT("Meldung"),MB_OK);
    
    InputFile=fopen(FileName,"r");
    In der Messagebox wird der Dateiname wieder richtig angezeigt...


    Was mache ich denn falsch, bin leider nicht der C Experte...

    Vielen Dank

  • #2
    "Geht nicht" ist kein Fehler.

    Was für ein Fehler kommt?

    Vermutlich liegt es daran, dass fopen einen char erwartet und keinen TCHAR

    http://www.cplusplus.com/reference/c...dio/fopen.html
    Christian

    Comment


    • #3
      Hast recht blöd beschrieben, ich dachte dass es so ein trivialer Fehler ist, dass ihr gleich wisst was es ist.

      In beiden nicht funktioneren Fällen findet er die Datei nicht. Also er geht erst garnicht in die while schleife zum auslesen der Datei.

      Ist vom prinzip her die Geschichte so richtig?

      Comment


      • #4
        a) sehe ich keine while Schleife
        b) bleibt immer noch char - TCHAR
        Christian

        Comment


        • #5
          Ok die whileschleife habe ich nicht mit gepostet, da der fehler doch eigentlich nur bei der Parameterübergabe von fopen liegen kann, sonst würde ja Beispiel 1 auch nicht funktionieren...

          Das ist das Endziel:
          Code:
          TCHAR FileName[80];
          TCHAR Number[80];
          
          wsprintf(FileName, TEXT("%s"), TEXT("\\Storage Card\\daten\\dat"));
          _tcscat(FileName, Number);
          _tcscat(FileName, TEXT(".txt"));
          MessageBox(NULL,FileName,TEXT("Meldung"),MB_OK);
          
          InputFile=fopen(FileName,"r");
          while((_ftscanf ( InputFile, TEXT("%s\t%s\n"), KeyStr, ValueStr) != EOF)&&(!found)){
            if(_tcscmp(KeyStr, SearchStr) == 0){
              _tcscpy(foundValueStr, ValueStr);
              found= TRUE;
            }
          }
          fclose(InputFile);
          Ich hab nochmal ein bißchen rum probiert, TCHAR oder char macht keinen Unterschied, in beiden Fällen geht er in die while Schleife, aber nicht wieder raus, also endlos schleife.
          KeyStr, ValueStr sind leer innerhalb der Schleife.

          Wie gesagt wenn ich den pfad direkt mit "" in fopen eintrage geht alle wunderbar...

          Vielen Dank schonmal...

          Comment


          • #6
            Sorry aber das Problem verstehe ich nicht mehr.

            , sonst würde ja Beispiel 1 auch nicht funktionieren...
            und

            geht er in die while Schleife, aber nicht wieder raus, also endlos schleife.
            Was nun Problem mit der Schleife oder mit dem Dateinamen und fopen

            Lässt sich feststellen, in dem man den Rückgabewert von fopen auswertet. Der ist im Falle eines Erfolges !=0.

            Damit wäre nun schon mal geklärt, ob die Datei zu öffnen ist

            Des Weiteren würde ich da dann auch die Unicodevariante _tfopen verwenden. Auch wenn es nach google egal ist


            Und die Endlosschleife musst du durchdebuggen um zu sehen ob und wann der EOF bzw das TRUE erreicht ist
            Christian

            Comment


            • #7
              FILE* fp;
              int count =0;

              fp=_tfopen(_T("Deine Datei"),_T("r"));

              while(feof(fp) == 0){
              _ftscanf( fp, _T("%s\n"), Buffer, &count );
              _tprintf(_T("%s\n"),Buffer);
              }

              fclose(fp);
              Christian

              Comment


              • #8
                Aber in dem Beispiel ist doch der Pfad wieder als text drin.

                Mein Problem ist das der Pfad dynamisch zusammen gesetzt werden muss...

                Comment


                • #9
                  Das Beispiel dient dazu mal korrekt zu zeigen, wie _tfopen genutzt wird, mit Abfrage auf eof und ob das Öffnen geklappt hat.

                  Die Variable wird du ja wohl selbst eintragen können
                  Christian

                  Comment


                  • #10
                    Genau das gleich mit direktem Wert gehts, mit Variable - endlosschleife.

                    Und die schleife ist viel langsamer geworden.

                    Was ist denn das blos. Hab mich auch schon im Netz tot gesucht, alle Beispiele sind immer mit constantem Pfad... zu blöd

                    Comment


                    • #11
                      Und welchen Wert hat fp nach der Zeile mit dem _tfopen?

                      Und was wird ausgegeben? Der Dateiinhalt?
                      Christian

                      Comment


                      • #12
                        Code:
                        FILE *InputFile;
                        
                        InputFile=fopen("\\Storage Card\\daten\\inputVK.txt","r");
                        wsprintf(szMsg, TEXT("%d"), InputFile); 
                        MessageBox(NULL,szMsg,TEXT("InputFile"),MB_OK);
                        196789


                        Code:
                        FILE *InputFile;
                        TCHAR pathStr[80];
                        
                        wsprintf(pathStr, TEXT("%s"), TEXT("\\Storage Card\\daten\\datei.txt"));
                        InputFile=fopen(pathStr,"r");
                        wsprintf(szMsg, TEXT("%d"), InputFile); 
                        MessageBox(NULL,szMsg,TEXT("InputFile"),MB_OK);
                        0

                        Code:
                        FILE *InputFile;
                        char pathStr[80];
                        
                        wsprintf(pathStr, TEXT("%s"), TEXT("\\Storage Card\\daten\\datei.txt"));
                        InputFile=fopen(pathStr,"r");
                        wsprintf(szMsg, TEXT("%d"), InputFile); 
                        MessageBox(NULL,szMsg,TEXT("InputFile"),MB_OK);
                        0

                        wir kommen der sache näher :-)

                        Comment


                        • #13
                          ich werd bekloppt, hab jetzt _tfopen ausprobiert, scheint zu klappen, Moment...

                          Comment


                          • #14
                            UNd nun benutz mal das _tfopen anstatt fopen
                            Christian

                            Comment


                            • #15
                              Code:
                              TCHAR FileName[80];
                              TCHAR Number[80];
                              FILE *InputFile;
                              
                              wsprintf(FileName, TEXT("%s"), TEXT("\\Storage Card\\daten\\dat"));
                              _tcscat(FileName, Number);
                              _tcscat(FileName, TEXT(".txt"));
                              
                              InputFile=_tfopen(FileName,"r");
                              if(InputFile != 0){
                                while((_ftscanf ( InputFile, TEXT("%s\t%s\n"), KeyStr, ValueStr) != EOF)&&(!found)){
                                  if(_tcscmp(KeyStr, SearchStr) == 0){
                                    _tcscpy(foundValueStr, ValueStr);
                                    found= TRUE;
                                  }
                                }
                              }
                              fclose(InputFile);
                              so geht es

                              Man eh vielen vielen vielen Dank.
                              Superklasse und da schlägt man sich dann Tage mit rum :-)

                              Christian DU bist der größte
                              Zuletzt editiert von chevyvan2000; 28.08.2008, 13:33.

                              Comment

                              Working...
                              X