Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char* Problematik

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.08.2004, 13:08 Uhr
~kirsche
Gast


Hallo liebes Forum,

habe eine Aufgabe von der Schule bekommen und habe sie größtenteils gelöst bis auf eine Kleinigkeit.
Erst einmal möchte ich die Aufgabe erläutern: Es soll eine Funktion geschrieben werden, die zwei Parameter erwartet: der erste Parameter ist ein Pointer von einem char Array, welches einen Text enthält mit Zeilenumbrüchen. Der zweite Parameter ist ebenso ein Pointer auf ein char Array, worin der Text gespeichert werden soll, jedoch ohne die Zeilenumbrüche ( Zeilenumbrüche sollen durch Blanks ersetzt werden).
Soweit hab ich alles gemacht, nur das Problem ist, dass er zwei Blanks macht, wenn auch zwei Zeilenumbrüche nacheinander kommen. Wie bekomme ich das in den Griff? Hier mal der Code:


C++:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/** Prototyp */
void entferne( char*, char* );

/** MAIN */
int main(int argc, char* argv[])
{
    /** Deklaration und Initialisierung der Variablen */
    char alttext[500] = "Anrede Irgendwas\nTextText\n\nGrussformel";
    char neutext[500] = "";

    /** Aufruf der Funktion */
    entferne( alttext, neutext );
    
    /** Beide char[] ausdrucken */
    printf(" %s \n", alttext );
    printf(" %s ", neutext );
    getch();
    return 0;
}

void entferne( char* _alt, char* _neu ) {
     /** Länge des Textes ermitteln */
     int  len = strlen( _alt );


     for ( int i=0;i<len;i++ ) {
         int c = *_alt;
         int c1 = *_alt++;
         printf( "%c \n", c );
         if ( c == 10 || c == 13 ) {
              /** ---------------
               *  | PROBLEMKIND |
               *  --------------- */

              if ( c1 == 10 || c1 == 13 ) {
                   *_neu = '.';
              }
              else {
                   *_neu = ' ';
              }
         }
         else {
              *_neu = c;
         }

         *_neu++;
     }
     *_neu = '\0';
}



Wäre echt super, wenn ihr mir aus der Sackgasse helfen könntet :-)

Viele Grüße

-- kirsche
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.08.2004, 13:47 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


du musst dir halt merken ob du vorher schonmal ein zeichen weggelassen hast...

C++:
void entferne( char* alt, char* neu ) {
    int x;
    for(x=0;*alt;++alt)
        if(*alt!='\r' && *alt!='\n'){
            x=0;
            *neu++=*alt;
        }
        else if(!x++)*neu++=' ';
    *neu=0;
}



--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: