Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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");

}

Geschrieben
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.
Geschrieben
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?!)

Geschrieben
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:)

Geschrieben
kann mir bitte jemand sagen, wie ich allgemein mit scanf in array's einlesen kann!
Allgemein gar nicht. Es gibt eine Sonderbehandlung für char-Arrays.

Das sieht dann in etwa so aus:

scanf( "%60s", eingabe );
Geschrieben

/* 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?

Geschrieben

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);

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...