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

Informatiker Board » Themengebiete » übergreifende Themen » programm in c header » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen programm in c header
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
hammala
Grünschnabel


Dabei seit: 10.01.2014
Beiträge: 3

programm in c header Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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*/
10.01.2014 22:59 hammala ist offline E-Mail an hammala senden Beiträge von hammala suchen Nehmen Sie hammala in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 11.01.2014 08:42.

11.01.2014 08:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Gast
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

omg ich glaubs nicht, es lag am &-Operator,
Danke!
11.01.2014 09:49
hammala
Grünschnabel


Dabei seit: 10.01.2014
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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)
11.01.2014 12:42 hammala ist offline E-Mail an hammala senden Beiträge von hammala suchen Nehmen Sie hammala in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
}


__________________
Syntax Highlighting fürs Board (Link)
11.01.2014 13:49 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
hammala
Grünschnabel


Dabei seit: 10.01.2014
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

danke! mein problem hat sich jetzt auch gekärt
11.01.2014 16:07 hammala ist offline E-Mail an hammala senden Beiträge von hammala suchen Nehmen Sie hammala in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » übergreifende Themen » programm in c header