2 woerter aus einem string im vektor alphabetisch ausgeben wie?
-
Hallo.
ich versuche einen beliebien text in einem vektor zu speichern. wenn ich eine zahl oder ein sonderzeichen eingebe soll als worttrenner zu verstehen sein. dann wollte ich das alphabetische erste und das letzte wort auszugeben. beispiel:
eingabe: affe44hund9"Zaun\0
ausgabe: alphabetisch erste wort: affe
alphabetisch letzte wort: Zaun
hier mein bisheriges ergebnis:#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define FELDER 256void ausgeben(char cvekt[],int ianz);
void alpha(char cvekt[],int ianz);main(){
char cvektor[FELDER],*cs;
int i,ianz,ibuch;printf("Bitte geben Sie nun einen Text ein:\n"); /* Eingabeaufforderung /
fflush(stdin); / Eingebestrom loeschen /
fgets(cvektor,FELDER,stdin); / liest alles ein /
ianz=strlen(cvektor); / anzahl der vektorelemente /
ausgeben(cvektor,ianz); / aufrufen der funktion ausgeben /
alpha(cvektor,ianz); / aufrufen der funktion alpha */
}void ausgeben(char cvekt[],int ianz){
int ibuch,i;
char *czeiger;czeiger=cvekt;
ibuch=isalpha(*czeiger); /* ungleich null, wenn nur buchstaben */
i=0;
printf("\nAusgabe:\n");
while(i<ianz){while(ibuch!=0){
printf("%c",*czeiger);
czeiger++;
i++;
ibuch=isalpha(*czeiger);
}
while(ibuch==0){
czeiger++;
i++;
ibuch=isalpha(*czeiger);
}
printf("\n");
}
}void alpha(char cvekt[],int ianz){
/* ab hier weiss ich nicht weiter */
}
-
Deine Funktion ausgeben hat einen Fehler, sie gibt jedes Stringstück das aus Zeichen besteht, nicht nur das erste und das letzte wort.
Ich habe dir mal meine Lösung hier dazu gestellt.
Die Ausgaben in den while Schleifen dienen nur dem debuggen, sie sollten auskommentiert sein wenn die Funktion benutzt wird.
Das erste und letzte Wort findest du in den beiden Strings FirstWord, Lastword;? was soll die Funktion alpha den machen ??
int ausgeben(char *Buffer,char *First, char *Last); { #define STRINGLEN 256 char Buffer[STRINGLEN+1];// das +1 ist eine Marotte // von mir um den üblichen Fehler zu vermeiden das für // die schließende Null kein Platz mehr da ist. char FirstWord[STRINGLEN+1]; char LastWord[STRINGLEN+1]; printf("Bitte geben Sie nun einen Text ein:\n"); /* Eingabeaufforderung */ gets(Buffer); /* liest alles ein */ ausgeben(Buffer,FirstWord,LastWord); printf ("\nErgebnis: Erstes Word: %s, Letztes Wort: %s",FirstWord,LastWord); } int ausgeben(char *Buffer,char *First, char *Last) { int i=0; // Index in Eingabestring int j=0; // Hilfsvariable First[0]=0x00; //Die beiden Ausgabestrings als leer definieren Last[0]=0x00; while (0!=Buffer[i]) // Finde erstes Wort { if (0!=isalpha(Buffer[i])) { printf("%c",Buffer[i]); // for debugging only First[j]=Buffer[i]; j++; i++; } else break; } First[j]=0x00; // Schreiben des Stringendes j=0; while (0!=Buffer[i]) { if (0!=isalpha(Buffer[i])) { printf("%c",Buffer[i]); // for debugging only Last[j]=Buffer[i]; // Kopiere in den String Last j++; i++; } else { // Noch ein Trennzeichen gefunden. // Wenn das letzte Zeichen in einem String ein Trennzeichen ist // Ist Last leer i++; // Gehe zum nächsten Zeichen in der Eingabe j=0; // Setze den Index für Last zurück } } Last[j]=0x00;// Schreiben des Stringendes return PASS; }