Ersetzen von Zeichenketten

Schnelle objektorientierte, kompilierende Programmiersprache.
Johnny_Truelove
Beiträge: 9
Registriert: Sa Feb 07, 2015 11:42 am

Re: Ersetzen von Zeichenketten

Beitrag von Johnny_Truelove » Do Feb 12, 2015 10:57 am

'Too few arguments' heißt also, dass man also in Tausche() weitere Parameter angeben muss. Muss ich dann im Hauptprogramm ein weiteres char deklarieren ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Ersetzen von Zeichenketten

Beitrag von Xin » Do Feb 12, 2015 11:53 am

Ich muss hier mal zu meiner eigenen Geduld kurz eingreifen - auch um das Selbstverständnis des Moderators ein wenig zu justieren, damit er mir noch ein Weilchen erhalten bliebt... Helfen bitte ja, aber vom Fragenden darf erwartet werden, dass er sich ernsthaft bemüht - auch und besonders dann, wenn er das nur für sein Studium braucht, es danach nie wieder und deswegen eigentlich keinen Bock hat. Es ist nicht Dein Studium, cloidnerux.
Johnny_Truelove hat geschrieben:'Too few arguments' heißt also, dass man also in Tausche() weitere Parameter angeben muss. Muss ich dann im Hauptprogramm ein weiteres char deklarieren ?
Programmieren ist ganz einfach. Du musst Dir überlegen, was Du programmieren willst und dann musst Du es tun. Hier ist nicht die Frage, wie Du es tust, sondern wie irgendjemand irgendwas was Du schreibst dazu bringt, das zu tun, was man Dir als Aufgabe gegeben hat.

Du willst in einem Text Textteile durch andere Textteile ersetzen. Deine Aufgabe ist, das zu lösen, nicht andere dazu zu bringen, es zu lösen.

Nehmen wir an, Du willst Textteile ersetzen:
Johnny_Truelove hat geschrieben:

Code: Alles auswählen

void tausche(char *text,char *replace)
  {
    int offset=0;
    int i=0;
    for(i=0;i<strlen(replace);i++)
    {
      text[offset+i] = replace[i];
    }
  }
Wofür steht offset? Das hast Du doch bestimmt nicht einfach nur so Dir ausgedacht - da wirst Du doch einen Hintergedanken gehabt haben!? Offset ist aber immer und grundsätzlich 0. Und 0+i ist i. Was immer Du Dir also dabei gedacht hast - Du tust es nicht.
Was war Dein Plan dabei. Schreib einen Kommentar auf deutsch was Du tun musst, damit passiert, was Du willst und dann tu es in C.
Johnny_Truelove hat geschrieben:

Code: Alles auswählen

main()
{
  char text[20];
  printf("\nBitte einen Satz eingeben\n");
  fgets(text,20,stdin);
  tausche(text);
  printf("%s",text);
}
folgende Fehlermeldung erhalte ich:

Code: Alles auswählen

bspl0062.c: In function ‘main’:
bspl0062.c:22:3: error: too few arguments to function ‘tausche’
bspl0062.c:4:6: note: declared here
Du gehst hin, definierst eine Funktion die einen Text mit einem anderen Text austauschen soll. Bzw. eigentlich einen String über einen anderen String kopieren soll. Dafür brauchst Du den String, der überschrieben wird und den String, der kopiert wird. Das hast Du selbst oben so definiert. Und du rufst tausche(test) und bekommst die Meldung, dass Du zuwenig Argumente an tausche übergeben hast.
Und bei aller Liebe... wenn Du nicht weißt, warum Du Deiner eigenen Funktion zwei Argumente verpasst, dann sehe ich nicht, wie Dir hier jemand erklären kann, warum Du programmiert hast, was Du programmiert hast.

Ich möchte Dich bitten die entsprechenden Teile vom C-Kurs zu lesen. Wir haben den C-Kurs, damit sich Leute selbst befähigen können, Aufgaben zu lösen. Das Forum ist dafür da, um Fragen zu stellen, wenn es Schwierigkeiten dabei gibt, sich selbst zu befähigen. Eine Einzelbetreuung, um jemandem C anhand der von ihm gewünschten Beispiele zu befähigen, lässt sich gegen Geld eventuell machen. Aber dann kläre das mit cloidnerux bitte ab, was er für's Händchenhalten haben möchte, damit Du Dir das konzentrierte Auseinandersetzen mit dem C-Kurs sparen kannst.
Aber solange das kostenlos ist, bedarf es etwas mehr Eigeninitiative.

Hier geht's zum C Kurs.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Froschmeister
Beiträge: 5
Registriert: So Jun 14, 2015 11:27 am

Re: Ersetzen von Zeichenketten

Beitrag von Froschmeister » So Jun 14, 2015 2:34 pm

Meine Lösung:

Code: Alles auswählen

#include <stdio.h>
#include <string.h>

#define CHECK_MOD(a,b,c,d)          \
      if(str[i]==a && str[i+1]==b)  \
	 {					            \
	  str[i]=c;		                \
	  str[i+1]=d;	                \
	  cnt++;			            \
	 }

int modify(char *str);


int main()
{

    char string[1024]="Gnu_au_Linux_Au_Is_aU_very_AU_Cool_UaAxu-Au"; // <----- EINGABE-ZEICHENKETTE HIER
    printf("%d %s\n",modify(&string),string);

}

int modify(char *str)
{
    int i=0, cnt=0;
    while(1)
    {
        CHECK_MOD('a','u','e','i');
        CHECK_MOD('A','u','E','i');
        CHECK_MOD('a','U','e','I');
        CHECK_MOD('A','U','E','I');
        i++;
        if(str[i+1]=='\0')break;
    }

    return 2*cnt;
}


Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Ersetzen von Zeichenketten

Beitrag von Xin » Mo Jun 15, 2015 3:11 pm

Hat es einen bestimmten Grund, warum Du aus CHECK_MOD ein Makro gemacht hast?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Froschmeister
Beiträge: 5
Registriert: So Jun 14, 2015 11:27 am

Re: Ersetzen von Zeichenketten

Beitrag von Froschmeister » Mo Jun 15, 2015 8:00 pm

kreative Freiheit ^^

Antworten