Anfänger braucht kleine Hilfe



  • hi leute,
    ich fange gerade erst an mit c++. nu steh ich schon vor meinem ersten prob!!
    ich hab nen code von nem kumpel bekommen, der es in c geschrieben hat, ich möchte dies nun in c++ schreiben.

    hier is der code in c:

    // test.cpp
    #include "stdafx.h"
    #include <string.h>
    
    int main (void)
    {
    int i=0;
    char source[255];
    char string[255];
    char tempstring[85];
    char ip[16];
    
    printf("Pfad der Logfile:  ");
    gets(source);
    
    FILE *pfile;
    FILE *pfile2;
    FILE *pfile3;
    pfile = fopen(source, "r"); //logfile wird zum lesen geöffnet
    
    pfile3=fopen("6129.txt", "w");
    pfile2=fopen("1433.txt", "w");
    
    do 
    {
    fgets(tempstring, 80, pfile);
    if (tempstring[0] == '$')      // Bei Durchlaufen des letzten Blocks steht
    { // am Zeilenanfang 
    
    /ein $ - Zeichen
    printf("\n\nParsed!\n\n");     // Das Programm speichert die Dateien
    fclose(pfile);   // und wird geschlossen.
    fclose(pfile2);
    fclose(pfile3);
    return 0;
    }
    //Überprüfung, ob Suchstring in Zeile enthalten ist
    if (strstr(tempstring, "1433") != NULL) 
    {    
    fprintf(pfile2, "blub ");    
    for (i=0; i<16; i++) 
    { 
    ip[i] = tempstring[i];
    fprintf(pfile2, "%c", ip[i]);
    }
    fprintf(pfile2, "\n");
    }
    
    else
    {
    for (i=0; i<16; i++)  
    {      
    
    ip[i] = tempstring[i];           
    fprintf(pfile3, "%c", ip[i]);         
    }                                      
    fprintf(pfile3, "Port 6129 open\n");
    }
    
    }
    while (1);
    
    return 0;
    }
    

    ich komme bis zu diesem

    gets(source);
    

    oben aber weiss dann nich wie ich es machen kann, dass ich dort dann einen pfad eingeben kann.

    bitte um hilfe 😕



  • für gets (source) kannst du einfach cin >> source schreiben.
    Du solltest alls Char-Arrays durch Strings ersetzen, damit es schönes c++ wird 🙂



  • #include <iostream>
    #include <string>

    using namespace std;

    int main (void)
    {
    string source;

    cout<<"Pfad der Logfile: ";
    cin>>source;
    [...]
    }



  • Suchst du vielleicht getline?

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main () {
       string pfad;
       getline (cin, pfad);
       cout << pfad << '\n';
    }
    

    Oder

    char buffer[20];
    cin.getline(buffer,20); //19 Zeichen + \0 einlesen
    


  • SirLant schrieb:

    cin >> source

    operator>> liest nur Wörter ein, also hört bei whitespace auf.



  • Sorry, ich ging davon aus, dass keine WHitespaces in den namen auftreten, weil ich
    das immer vermeide.
    Dann ist getline natürlich das richtige.



  • Wenn er MS VC++ 6.0 hat braucht er für getline aber Humes STL Fix.

    Welche Version hast du?

    MfG Max



  • also ich benutze Dev-C++ 4.9.8.0

    ich werde es nachher mal mit dem getline versuchen, muss nu leider weg.
    außerdem wollt ich mich mal für eure schnelle un gute hilfe bedanken, ihr seid echt cool!!!



  • Ok, dann wirst du kein Problem mit getline bekommen, ich kam blos darauf dar du den Header stdafax.h eingebunden hast und der gehört soweit ich weis zur MFC,
    ich dachte dein Freund hat dir auch gleich die IDE mitgegeben.

    Dev-C++ ist eine gute Wahl.

    MfG Max



  • stdafax.h ist ein Header den VC++ anlegt wenn man ein Projekt erstellt, da stehen
    nur einige DInge drin, wie z.B. #include <windows.h> , der ist dazu gedacht, dass
    man standard-includes usw. da rein schreiben kann und es nicht in jeder Datei neu
    schreiben muss, sondern nur diesen Header einzubinden braucht.



  • Achso, danke.

    MfG Max


Anmelden zum Antworten