mikrocontroller.net

Forum: PC-Programmierung kleines C problem


Autor: holaco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo leute, ich hab folgendes programm der zählen muss wieviele 
buchstaben ein wort enthält, es funktioniert leider nur wenn ich wörter 
eingebe die gerade eine anzahl von buchstaben hat. kann mir mal jemand 
helfen? danke im voraus.

#include<stdio.h>
void main()
{
  char text1[20];
  int i;

  printf("geben sie ein wort ein:\n");
  gets(text1);

  for(i=0;text1[i];i++)
    i++;
  printf("das wort hat %i buchstaben\n",i);
}

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
for(i=0;text1[i];i++)
  i++;

iplussplus doppelt?

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
for(i=0;text1[i];i++)
    i++;

hier wird "i" zweimal incrementiert.

Autor: holaco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mann mann ich habs übersehen, vielen vielen dank.

Autor: Ich (Gast) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> for(i=0;text1[i];i++)
>    i++;
>
> hier wird "i" zweimal incrementiert.

>> mann mann ich habs übersehen, vielen vielen dank.

Das springt doch eigentlich sofort ins Auge.
Was machst du denn bei >10000 Zeilen Code... ;-)

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am besten Du gewöhnst Dir an, die geschweiften Klammern bei Schleifen 
etc. immer zu schreiben. Der Code wird übersichtlicher und man muss 
nicht immer überlegen, ob die nachfolgenden Zeilen ausgeführt werden 
oder nicht. Es sticht einem dann geradezu in die Augen ;-) Wenigstens 
hast Du die zweite Zeile mit dem i++; eingerückt, das ist schon mal ein 
Schritt in die richtige Richtung.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gross-/Kleinschreibung hilft dem Gehirn auch ungemein. Und 
Variablennamen mit mehr als einem Buchstaben...

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso für eine zählervariable mehr als einen Buchstaben nehmen? Ok in 
diesem fall könnte man wirklich count oder so nehmen aber egal. Ich 
hätte es so gemacht:
void main(){
  char text1[20];
  int i=0;

  printf("geben sie ein wort ein:\n");
  gets(text1);

  while(text1[i++]) ;
  printf("das wort hat %i buchstaben\n",i);
}

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und hoffen das das Wort nicht länger als 20 Zeichen ist.
Da wird wohl bald der nächste Patch fällig sein.

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... nicht länger als 19. Die /0 muß ja auch noch reinpassen :-)

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimm für sowas sollte man lieber getch nehmen:
#define COMMAND_BUFFER 20
void main(){
  char debug[COMMAND_BUFFER];  /* Buffer für Debug-Kommando */
  unsigned char   i;
  
  printf("geben sie ein wort ein:\n");
  while(1){
    i = 0;
    do{
       debug[i] = getch();
       putc(debug[i]);      /* Echo */
       if(debug[i] == '\b' && i){  /* Backspace? */
         putc('\b');
         i--;        /* letztes Zeichen löschen */
       }
       else{
         i++;  
       }
       if(i >= COMMAND_BUFFER -1){  /* String zu lang */
         i = 0;
         printf("\nString zu lang!\n");
         continue;  
       }
       /* Schleife bei ENTER verlassen */  
     }while(debug[i-1] != '\r' && debug[i-1] != '\n');
     
     debug[i-1] = '\0';  /* Stringterminierung */
     printf("das Wort hat %i buchstaben\n",i-1);

}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.