Filterprogramme (mit _zeilenweiser_ Abarbeitung)

seriously

Mitglied
Code:
int main (void)
{
    char *rs;
    char zeile[20];
    int i;
    int neue_z;

    rs = fgets(zeile, 20, stdin);
    i=0;
    neue_z=0;
    while ( rs != NULL){
          if ( rs == '\n')
             neue_z++;
          rs = fgets(zeile, 20, stdin);
          i++;
   }

   printf ("Von der Standardeingabe wurden %d Zeilen und %d  Zeichen gelesen", i, neue_z);

   getchar();
   return 0;


}

Das soll die Anzahl der Zeichen und die Anzahl der Zeilen ausgeben ..

Was ist hier bitte falsch ****
Die Fehlermeldung lautet : cannot convert char to char*
 
Hallo,

diese Abfrage
Code:
if ( rs == '\n')
passt nicht, weil du ein Zeichen mit einem Zeiger vergleichst. Um das Zeichen am Anfang der Zeichenkette zu bekommen, musst du stattdessen
Code:
if ( *rs == '\n')
schreiben.

Gruß
MCoder
 
Nicht ungeduldig werden :-)

Eigentlich solltest du gar keine Ausgabe bekommen, weil du mit " while ( rs != NULL)" eine Endlosschleife gebaut hast, da 'rs' niemals NULL wird. Du liest fortlaufend eine Zeichenkette ein - dir fehlt noch eine Abbruchbedingung.

Vielleicht könntest du sowas machen:
C++:
int main()
{
    char *rs;
    char zeile[20];
    int  i;
    int  neue_z;
    
    i = 0;
    neue_z = 0;
    
    while( true )
    {
        rs = fgets( zeile, 20, stdin );
        
        if( *rs == '\n' )
        {
            break; // Abbruch mit leerer Zeile
        }
        
        i++; // neue Zeile
        neue_z += ( strlen(rs) - 1 ); // Anzahl der Zeichen ohne \n
   }

   printf ("Von der Standardeingabe wurden %d Zeilen und %d  Zeichen gelesen", i, neue_z);

   getchar();
   return 0;
}


Gruß
MCoder
 
Zurück