kleines Prob mit string
-
ich habe volgendes problem:
1. ich möchte einen text einlesen
2. einen Buchstaben einlesen
3. schauen wie oft der Buchstabe vorkommt...und da hab ich beim scanf vom buchstaben ein problem: er wird einfach übersprungen!... hier mal der quelltext:
#include <stdio.h> #include <stdlib.h> #include <string.h> //ev unötig ;) char txt[30]; char b; int x=0; main() { printf("Geben Sie einen Text ein () Zeichen:\n"); scanf("%s",&txt[0]); printf("test txt: %s\n",txt); printf("Geben Sie einen Buchstabenb den Sie suchen moechten ein:\n"); scanf("%c", &b); //dieser schritt wird uebersprungen printf("\nTest b:%c\n",b); system("PAUSE"); return 0; }
man soll mal zeuerst das problem mit dem überspringen des scanf bearbeiten und nicht wie das andere mit dem zähler geht....
-
Das hat nichts mit dem String zu tun - da steht einfach nach dem ersten scanf noch etwas im Eingabepuffer. (und hier findest du schon genug Threads, die sich mit dem Auskehren des Puffers beschäftigen)
-
nach jedem scanf() ein
while(getchar()!='\n');
-
???
ich hab einfach ein
fflush(stdin);
reingetan...
hm geht jetzt auchgut aber jetzt habe ich nach dem buchstaben gesucht wird ein kleines problem: es endet das wort nach einem leerschlag:
while(!txt[x]=='\0'){ /*Kontrollieren ob Buchstabe an stelle gleich gesuchter Buchstabe*/ if(b==txt[x]){ z++; //Den Zaeler um 1 erhoehen } x++; }
-
@Sandmaster: Dies liegt an scanf(), welches nur bis zum nächsten Blank ließt. Wenn du eine Zeile einlesen willst, musst du (iirc) fgets() nehmen.
Gruß Caipi
-
danke... hm ich hätte das doch nehmen sollen, ich hab das einfach mal gesehen auf : http://www.pronix.de/pronix-736.html
-
So wie du fflush() verwendest, führt das zu undefiniertem Verhalten!
Nimm lieber das, was ich oben geschrieben habe.