Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » übergreifende Themen » programm in c header » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 6 Beiträge
hammala

danke! mein problem hat sich jetzt auch gekärt
eulerscheZahl

Was mir mehr Sorgen bereitet: Du liest immer noch eine Zeichenkette ich eine Variable ein, die möglicherweise nicht genug Speicherplatz dafür bietet:
Zitat:
status=scanf("%s",zeichenkette); //zeichenkette hat Länge 10

entsprechend wird die Bedingung
Zitat:
laengeZeichenkette(zeichenkette)>10

nie erfüllt sein - bzw. in deinem Programm funktioniert es bei mir, aber die Funktion laengeZeichenkette kommt in einen Bereich, in dem eigentlich schon etwas ganz anderes steht.

So würde ich es lösen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
int leseZeichenkette(char* zielZeichenkette)
{
	int i = 0; //aktuelle Position/Länge des strings
	char c; //aktuell eingelesenes Zeichen, also zeichenkette[i]
	while(i < MAX_LAENGE) //solange wir die Maximallänge nicht erreicht haben
	{
		c = getchar(); //liest nächstes Zeichen ein
		if(c == '\n') //wenn es ENTER ist, abbrechen
			break;
		zielZeichenkette[i] = c; //schreibe eingelesenen Zeichen in Zeichenkette
		i++; //erhöhe Schreibposition
	}
	if(c != '\n') //Wenn kein ENTER, also wenn die Zeichenkette zu lang war
        {
		i = 0; //setze Position auf 0
		leeren(); //aufräumen, damit der Rest nicht beim nächsten Funktionsaufruf dazukommt
        }
	for(; i < MAX_LAENGE; i++) //leere den String von der letzten Schreibposition (0 bei Überlauf) aus 
		zielZeichenkette[i] = '\0';
	if(c != '\n')
		return -1; //bei Überlauf Fehler zurückgeben
	return 0; //OK zurückgeben
}
hammala

aber leider seh ich grad, dass es nur zu 80% geht, ich lad mal die dateien hoch.
gebe zum beispiel hallo ein als die erste zeichenkette, und dann zum beispiel asdjflajdfjalkdjfakds. Dann musst du die 2. Zeichenkette nochmal eingeben, zum Beispiel allo. Dann steht dran, dass es kein Suffix ist. (war noch Teil der Aufg.) Er guckt anscheinend, ob deine zweite Zeichenkette allo ein Suffix von asdjflajdfjalkdjfakds ist.

Dateianhang:
zip Aufg. 44.zip (997 Byte, 465 mal heruntergeladen)
Gast

omg ich glaubs nicht, es lag am &-Operator,
Danke!
eulerscheZahl

Zitat:
scanf("%s",&zeichenkette)

das & ist dazu da, die Speicheradresse eine Variablen zu bekommen, bei char* ist das nicht nötig, da zeichenkette dann bereits die Adresse ist.

Gleichzeitig liest du hier einen string in Zeichenkette ein, bei dem du herausfinden sollst, ob er da überhaupt hineinpasst. Du brauchst in deiner Funktion eine zweite, größere Zeichenkette, in die du zunächst einliest und dann Zeichen für Zeichen umkopierst oder du liest gleich zeichenweise ein.

Zitat:
laengeZeichenkette(zeichenkette)

hast du die Funktionüberhaupt definiert?
Zitat:
printf("%s",leseZeichenkette(zeichenkette1))

leseZeichenkette gibt aber ein int zurück, keinen string
hammala programm in c header

Meine Frage:
Hallo, ich hab ein Problem und zwar soll ich die Funktion
int leseZeichenkette(char * zeichenkette) programmieren in einer Header-Datei. Die Fkt. soll eine Zeichenkette mit maximal 10 Zeichen einlesen und an zeichenkette schreiben. Ist die eingelesene Zeichenkette zu lang, dann Puffer leeren und -1 zurückgeben, sonst 0.

Es funktioniert einfach nicht!

Meine Ideen:
int leseZeichenkette(char * zeichenkette){
int status;

status=scanf("%s",&zeichenkette);

if(status==0 || (laengeZeichenkette(zeichenkette)>10)){
return -1;
}
return 0;
}

/*habs so probiert und über
main(){
char zeichenkette1[10];
printf("%s",leseZeichenkette(zeichenkette1));
}
in der c-Datei ausgeben wollen*/