» HILFE beim einlesen in C

State machine in CNeuen Thread eröffnenNeue Antwort erstellenHilfe bei C-Programm / Zahlen aus einer Datei in ein Array einlesen.
AutorNachricht
Beobachter 
Anmeldedatum: 06.01.2022
Beiträge: 3
06.05.2022, 20:37
zitieren

hallo und zwar möchte ich einzelne buchstaben einlesen jedoch klappt es für meinen zweiten buchtstaben nicht mehr das programm überspringt immer mein scanf, weiß jemand wieso und wie man das ansonsten machen könnte?
-----------------------------------------------------------------------
#include <stdio.h>

int main()
{
int gesucht = 4;
int i = 0;
char zeichen[7] = {'A', 'G', 'E', 'W', 'I', 'W', 'O', 'L'};
int counter;

printf("Folgende Buchstaben stehen zur Verfügung:\n");
printf("A | G | E | W | I | W | O | L\n");

printf("Gesucht werden %d Buchstaben:\n", gesucht);
for(i = 1; i<=gesucht; i++) {
printf("_ ");
}
printf("\n");

char first;
char first2;

printf("Geben Sie den 1. Buchstaben ein: ");
// first = getchar();
scanf("%c", &first);

printf("%c %c test \n", first, zeichen[1]);

if(first == zeichen[1]) {
printf("Stimmt überein\n");
printf("%c " , zeichen[1]);
for(i = 2; i<=gesucht; i++) {
printf("_ ");
counter = counter + 1;
}
} else {
printf("Stimmt nicht überein\n");
printf("%c " , first);
for(i = 2; i<=gesucht; i++) {
printf("_ ");
}
}
//------------------------------------------------------------



printf("Geben Sie den 2. Buchstaben ein: ");
scanf("%c", &first2); // Wieso klappt das hier nicht?

printf("%c %c test \n", first2, zeichen[2]);
return 0;
}


pn
Trainee 

Name: Mirko
Geschlecht:
Anmeldedatum: 06.12.2019
Beiträge: 46
Wohnort: Weingarten
07.05.2022, 07:18
zitieren

Hi,

um wirklich nur ein "einzelnes" Zeichen einzulesen, verwende am besten die Standardfunktion getchar(). In C gibt es leider zuviel undefiniertes Verhalten.

int zeichen;
zeichen = getchar();
printf("%c", zeichen);

Um nun die Frage zu beantworten, warum die zweite Eingabeaufforderung übersprungen wird, musst Du verstehen, dass auch das Drücken der ENTER-Taste als ein Zeichen interpretiert wird (Schau Dir mal die ASCII-Tabelle an). Und dieses Zeichen befindet sich im Puffer und wird sozusagen der zweiten scanf-Funktion übergeben.
Es gibt nun mehrere Wege dies abzufangen. Da gibt es Funktionen in der Standardbibliothek, die in jeder Hinsicht besser funktionieren als scanf. Da musst Du dich leider ein wenig durchwühlen. Aber mit der Zeit wirst Du die alle kennenlernen.
Zu diesem Zeitpunkt kann ich Dir zu folgender Lösung raten.

int zeichen;
zeichen = getchar();
getchar(); /* faengt ENTER ab */
printf("%c", zeichen);

Außerdem solltest Du dir auch das Prinzip von Arrays noch einmal anschauen.
Du reservierst 7 Byte aber möchtest darin 8 Buchstaben speichern. Tu das bitte nicht. Für 8 Buchstaben reservierst Du bitte auch 8 Byte. :)
...
char zeichen[7] = {'A', 'G', 'E', 'W', 'I', 'W', 'O', 'L'}; /* FEHLER!!! */
...

Es gibt noch den einen oder anderen Fallstrick in deinem Code, aber da musst Du durch. :P


 1x  bearbeitet
pn
Beobachter 
Anmeldedatum: 06.01.2022
Beiträge: 3
07.05.2022, 13:00
zitieren

vielen dank für deinen kommentar, hat mir weitergeholfen dass alles etwas besser zu verstehen, da werde ich wohl noch etwas zeit investieren müsse :P

pn
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
01.05.2023, 14:02
zitieren

Du solltest den Tastatureingabepuffer löschen sonst werden bei der zweiten Eingabe eines einzelnen char sofort die alten restlichen Zeichen eingelesen.


void clpuf(void)
{
while (getc(stdin) != '\n')
;
}
Zudem hast du acht anstatt sieben Zeichen.


pn
Gast 
01.05.2023, 14:02
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "HILFE beim einlesen in C" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Fehlermeldung beim Einlesen eines Buchstabens mit scanf
hi, ich habe ein problem in meiner Funktion "Spaltenabfrage"... wenn ich ungültige Zahlen eingebe, ist es kein Problem, da spuckt er schön brav die Fehlermeldung aus. Wenn ich jetzt allerdings nen Buchstaben statt ner Zahl einlese, kommt ne...
[C]von mones333
1
191
28.02.2021, 12:13
mgutt
Hilfe bei C-Programm / Zahlen aus einer Datei in ein Array einlesen.
Hallo, ich bräuchte mal eure Hilfe für ein kleines C-Programm: - in einer TXT-Datei befinden sich als Beispiel 3 Zahlenreihen mit jeweil 6 Zahlen in 1 Reihe: BSP: Test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Die Zahlen sind durch ein...
[C]von Vision73
0
160
15.05.2023, 16:28
Vision73
CSV in C einlesen
hallo! ich bin neu auf dem Forum und suche antworten... ich schreibe ein Programm für mein Job wo ich Autos einlesen und ausgeben muss die bei einer Werkstatt waren, aber mein Compiler sagt immer "Floating point not loaded" und ich weiß nicht...
[C]von Johnathan Frakes
1
205
15.02.2022, 17:12
steinsgate
Daten einlesen
Hallo! Ich möchte Daten aus einer Textdatei einlesen. Dazu habe ich folgendes programmiert: #include <stdio.h> #include <stdlib.h> int main&#40;void&#41; &#123; FILE * file; char line&#91;10&#93;; file =...
[C]von DrususIngbert
1
441
15.08.2012, 15:59
Guiseppe
EDIT: Hilfe beim Bremsenswap beim EJ9 Facelift. bitte PN
EDIT: Ich bitte die um Hilfe, die schon einem einen Scheibenbremsenswap HA beim EJ9 Facelift gemacht haben. Bitte nehmt per PN kontakt mit mir auf. Es ist dringend. Das Problem immer noch das gleich wie unten beschrieben. also ich habe...
von albiknalltuete
37
1.724
14.08.2015, 04:47
BlackCivic86
Nochmal Hilfe!!! beim Bremsen wechseln beim Del Sol
Ich wollte gerade meine Bremsscheiben wechseln, da sind mir die Kruzschrauben rund gegangen beim aufmachen. Also die 2 schrauben, die die Bremsscheibe festhalten. Wie bekomme ich die jetzt...
von freakyboy
32
5.495
27.02.2009, 00:15
Wick3d
Programm zum Einlesen von Dateien
Hallo, ich bin im Bereich der Programmierung (bis auf Access) komplett unerfahren, daher suche ich hier Hilfe. Folgende Aufgabenstellung: Ich speichere Emails (Anzahl unbekannt) aus einem Emailprogramm heraus in einen bestimmten Ordner. Die Daten...
[Allgemein]von Maik6464
1
357
27.02.2011, 15:07
Maik6464
Brauche dringent hilfe beim Verstärker/Autospeakers !!! Bitte hilfe mich !!!
Hallo allerseits, P.s. Ich bin Hollander, wohne in Deutschland, bitte verzeih mein grammatik!! Ich bin total neu hier und bin eigentlich nur auf der suche nach hilfe/antwort auf ein frage und hoffe jemanden kan mich hilfen? Vorraus gesagt muss...
von Amsatff.Amy
2
717
18.04.2012, 19:33
Ralf
Hilfe beim Einbau von E-fensterhebern beim EJ9
Hallo, habe vor meine manuellen fensterheber durch elektrische fensterheber zu ersetzen. habe auch schon alles zusammen : - beide Fensterheber - beide Schalter - beide Türkabelbäume - beide Türpappen - Kabelbaum vom Sicherungskasten .......
von nightmover29
5
428
23.09.2011, 10:01
nightmover29
Hilfe Swap auf D15Z6 beim Ej2 Kabelbaumprobleme! HILFE
Guten Tag erstmal Ich habe bei meinem ej2 den D15Z6 eingebaut alles lief ohne probleme doch jetzt habe ich Probleme beim Kabelbaum! Habe steuergerät und kabelstrang vom ek3 hier aber keine ahnung wie ich das belegen soll viele stecker passen einfach...
von Patrick_EJ2
39
1.189
16.07.2016, 15:31
Patrick_EJ2
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |