char array ??



  • Hi
    ich hab ein kleines programm des aus einem txt file bestimte zeilen raussucht und in ein anderes file schreibt allerdings muss ich die zeilen auch noch abändern Bsp.:

    Connecting to pop.web.de...
    USER user @web.de

    From: "WEB.DE informiert" <neu @web.de>
    Date: Wed, 21 Jun 2006 15:09:44 +0200

    ich will aber nur

    pop.web.de...
    user @web.de

    neu @web.de
    Wed, 21 Jun 2006 15:09:44

    jetzt ist das problemm das ich keine ahnung hab wie ich das mache wenn die zeilen in char arrays sind???
    hier mal der code.

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main() {
    
       char inhalt[100];
       char *temp;
    
       FILE *f;
       FILE *f_n;
    
       f_n = fopen("new.txt", "r+");
       f = fopen("test.txt", "r");
    
       if(f == NULL) {
          printf("Fehler bei fopen()... \n");
          return EXIT_FAILURE;
       }
       fgets(inhalt, BUFSIZ, f);
    
    //bis ende datei  
    while(!feof(f)) {
    
       //schleife für einen account
       while(1){   
    
               //suche ">Connecting"
               do {
                  fgets(inhalt, BUFSIZ, f);   
                  if(strstr(inhalt, ">Connecting") != NULL){
                      //temp = strcspn( inhalt, "\t" );
    
                      printf(inhalt);
                      fputs(inhalt, f_n);
    
                  }              
               }while(strstr(inhalt, ">Connecting") == NULL);
               //suche ">USER"
               do {
                  fgets(inhalt, BUFSIZ, f);   
                  if(strstr(inhalt, ">USER") != NULL){
                      printf(inhalt);
                      fputs(inhalt, f_n);
    
                  }              
               } while(strstr(inhalt, ">USER") == NULL);
    
           while(strstr(inhalt, "successful") == NULL){
               char temp[100] = "";                
               //suche "*******"
               while(1) {
                   fgets(inhalt, BUFSIZ, f);   
                   if(strstr(inhalt, "successful") != NULL) break; 
                   if(strstr(inhalt, "*************") != NULL){
                        printf(inhalt);
    
                        break;
                   }
    
               } 
    
               if(strstr(inhalt, "successful") != NULL) break; 
    
               //suche "From:"
               while(1) {
                   fgets(inhalt, BUFSIZ, f);
                   if(strstr(inhalt, "successful") != NULL) break; 
                   if(strstr(inhalt, "From:") != NULL){
                        //strcat(temp, inhalt);
                        temp = strrchr(string, '>');
                        *temp = '';
                        printf(inhalt);
                        fputs(inhalt, f_n);
                        break;
                   }              
    
               } 
    
               if(strstr(inhalt, "successful") != NULL) break; 
    
               //suche "Date:"
               while(1) {
                   fgets(inhalt, BUFSIZ, f);   
                   if(strstr(inhalt, "successful") != NULL) break; 
                   if(strstr(inhalt, "Date:") != NULL){
                        strcat(temp, inhalt);
                      //  strcat(temp, inhalt);
                        printf(inhalt);
                        fputs(inhalt, f_n);
                        break;
                   }     
    
               } 
    
           }
    
       }
    /* TODO (#1#): csv datei schreiben */
    
       printf("ender der ersten account schleife");
    
    }
       system ("pause");
       return EXIT_SUCCESS;
    }
     //if(strstr(inhalt, "The operation was successful") != NULL) break;
    


  • Die Zeichen des char-Arrays stehen einfach hintereinander im Speicher (wobei die meisten String-Funktionen so lange weiterlesen, bis sie auf ein '\0' treffen). Also kannst du mit einfacher Zeiger-Arithmetik weiterkommen - z.B. beginnt der Name des Servers in der ersten Eingabezeile bei inhalt+15 .

    PS: Und eventuell solltest du auf C++ Mittel umsteigen und fstream und string verwenden.



  • kennst du zufälig die syntax von fstream oder ne page auf der die steht???



  • bolu schrieb:

    kennst du zufälig die syntax von fstream oder ne page auf der die steht???

    also bei mir hat google soviele gute seiten gefunden, und da habe ich nur fstream eingegeben...



  • Schau mal ins Magazin, dort habe ich einen recht ausführlichen Artikel über IO-Streams geschrieben - eventuell hilft der dir weiter. (und einen über den Umgang mit Strings)



  • danke für eure schnellen antworten und jetzt wieder an die arbeit sonst giebts ärger vom chef 🙂


Anmelden zum Antworten