Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Mit getchar Text einlesen und prüfen

Empfohlene Antworten

Veröffentlicht

Danke nochmals euch allen.....

@Klotzkopp

Das mit den vielen Fragezeichen ist nur gewohheit.Die Fragezeichen in meinem kopf was programmieren angeht,würde gar nicht hier drauf passen...:confused:

daher habe ich auch schon den nächsten Code für euch.

Ganz wichtig, wie kann ich mit getchar() einen Text einlesen und in einem Array speichern, diesen Text aber auf bestimmte Bedingungen prüfen???

Ich habe folgenden Ansatz.

#include <stdio.h>

#include <stdlib.h>

#define MAXIMUM 60 /*Hoechstens 60 Zeichen*/

#define MINIMUM 20 /*Mindestens 20 zeichen*/

main()

/* Benutzer wird aufgefordert einen Text einzugeben.Dieser Text wird in einen cahr Feld eingabe[65] gespeichert.Der Text darf max. 60 Zeichen und min. 20 Zeichen lang sein.der Text darf Buchstaben, Leerzeichen und Tabulatorzeichen enthalten.Darufhin wird der Benutzer aufgefordert zwei

Buchstaben einzugeben.Das Program soll die Stellen diese zwei Buchstaben

in dem Text, der jetzt in eingabe[] geschrieben ist, vertauschen.Der so

geänderete Text aus eingabe soll ausgegeben werden, ebenso die Anzahl

der Ersetzungen*/

{

char eingabe[65];

char c, ba,bb;

int i;

do{

printf("Geben sie ein Text ein,\n");

printf("Mindestens 20 Zeichen, hoechstens 60 Zeichen lang:");

c = getchar();

if(((65 <= c && c<= 90) || (97 <= c && c <= 122)) && (c == ' ') && (c == '\t')){

eingabe[65] = c;

}

}while(eingabe[65] > MAXIMUM && eingabe[65] < MINIMUM);

printf("\nText :",eingabe[65]);

printf("Geben sie zwei Buchstaben ein:");

scanf("%c",&ba);

scanf("%c",&bb);

for(i = 0; i<= eingabe[i-1];i++){

if(eingabe == ba){

eingabe = bb;

}

}

system("pause");

}

daher habe ich auch schon den nächsten Code für euch.
Dann mach bitte auch einen neuen Thread auf. Ein Thema - ein Thread, ein Thread - ein Thema. Ich hab das mal für dich abgetrennt.

eingabe[65] = c;
Das ist Blödsinn. Damit liest du ins 66. Element deines Feldes ein, das aber nur 65 hat. Du kommst nicht ohne eine weitere Variable aus, in der du mitzählst, wieviele Zeichen du bereits eingelesen hast.
wie kann ich mit getchar() einen Text einlesen

Gar nicht. "getchar" - "kriegeZeichen", nicht "kriegeText".

Ergo: Getchar liefert nur ein Zeichen

und in einem Array speichern, diesen Text aber auf bestimmte Bedingungen prüfen???

Ganz grob: Schleife oder scanf.

main()

Falsche Main Stuktur.

Implizites int, kein argc, kein argv.

(Ja, ich bin penibel, manche Compiler aber auch.)

/* Benutzer wird aufgefordert einen Text einzugeben.Dieser Text wird in einen cahr Feld eingabe[65] gespeichert.

Charfeld = mehrere Zeichen.

eingabe[65] = 1 Zeichen.

Der Text darf max. 60 Zeichen und min. 20 Zeichen lang sein.der Text darf Buchstaben, Leerzeichen und Tabulatorzeichen enthalten.Darufhin wird der Benutzer aufgefordert zwei

Buchstaben einzugeben.

Klar soweit.

Das Program soll die Stellen diese zwei Buchstaben

in dem Text, der jetzt in eingabe[] geschrieben ist, vertauschen.Der so

geänderete Text aus eingabe soll ausgegeben werden, ebenso die Anzahl

der Ersetzungen*/

Was ist wenn Buchstaben mehrmals auftreten?

char eingabe[65];

Deklarierung von max. 64 Zeichen (Zeichenkettenendekennzeichen [\0] abziehen) - gewollt?

eingabe[65] = c;

Bufferüberlauf.

}while(eingabe[65] > MAXIMUM && eingabe[65] < MINIMUM);

Bufferüberlauf.

Sollte vielleicht i verwendet werden? Dann fehlt ein inkrement.

printf("\nText :",eingabe[65]);

Bufferüberlauf. :rolleyes:

for(i = 0; i<= eingabe[i-1];i++){

if(eingabe == ba){

eingabe = bb;

}

}

i = 0

eingabe[i-1] = eingabe[-1] <- geht nicht. Index < 0

Auch das mitm Ersetzen geht so nicht, denn dann wird ba zwar durch bb ersetzt, aber die alten bb (wenn vorhanden) nicht durch ba. (Oder hab ich was falsch verstanden?!)

Man darf die main-Funktion auch ohne Parameter verwenden.

Darf man, ja.

Aber z.B. void main(void) ist meines Wissens nach kein ANSI-Standard.

(Daher nur der Hinweis am Rande. :floet:)

kann mir bitte jemand sagen, wie ich allgemein mit scanf in array's einlesen kann!

/* ACHTUNG: scanf() liest bei der Verwendung der Formatanweisung %s nur bis zum ersten Zwischenraumzeichen ! */

Ich krige in der Ausgabe nur den ersten Wort..

Kann man das Problem irgendwie umgehen oder sollte ich erst gar nicht scanf nehmen?

ungetestet:


char eingabe[MAXIMUM+1];

int i = 0;

for (i = 0; i < MAXIMUM; i++)

[INDENT]scanf( "%c", eingabe[i] );[/INDENT]


eingabe[++i] = '\0';

//ASSERT(i>=MINIMUM);

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.