Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo, wie kann man folgendes machen

größe des strings muss so wie die int zahl der variable+1 sein,

ich komme nicht dahinter wie ich das zuweisen muss

variable x

string Ein

danke im voraus für die antworten

Strings gibt's in C strenggenommen nicht, nur nullterminierte char-Arrays.

char Ein[x+1];
Das geht so aber nur nach dem C-Standard von 1999, den unterstützt nicht jeder Compiler. Nach dem alten Standard (1990) musst du das mit malloc machen:
char* Ein = malloc(x+1);
// Am Ende free nicht vergessen![/code]

wenn ich Ein[] am anfang eines unterprogramms schon deklariert habe, aber noch keine länge angegeben habe, muss ich also weiter unten im programm, wenn ich weiß wie lang das array sein soll (x+1) muss ich dann mit dem malloc arbeiten?

ist das so richtig

Nach[] = malloc(sizeof(Anzahl+1));

wenn Anzahl meine variable ist

wenn ich Ein[] am anfang eines unterprogramms schon deklariert habe, aber noch keine länge angegeben habe,
Dann musst du Ein mit einem Literal initialisiert haben. Ein hat dann die Länge des Literals, daran kannst du später auch nichts mehr ändern.

Zeig doch mal diese Deklaration.

int Nach[]

hier das programm, das programm hat das ziel alle vocale zu finden und wort für wort die vokal anzahl zu wiedergeben und die anzahl aller worte im text, es können am anfang und am ende leerzeichen auftreten


int *addVocalCount(char *Ein){

    int EinL, i=0, j=1, start, Anzahl=0, Nach[];

    EinL = strlen(Ein);

    while(Ein[i]=' ')&&(i<EinL){

    i=i+1;

    }

    start = i;

    while(i<EinL){

    if(Ein[i]=' '){

    Anzahl = Anzahl+1;

    while(Ein[i]=' '){

    i=i+1;

    }

    i=i+1

    }

    if(strrchr(Ein)=' '){

    Anzahl=Anzahl+1;

    }


    Nach[] = malloc(sizeof(Anzahl+1));

    Nach[0] = Anzahl;

    while(1<=i<Anzahl){

    Nach[i]=0

    }

    while(start<=i<EinL){

    if(isVocal(Ein[i])){

    Nach[j]++

    }

    if(Ein[i]=' '){

    j=j+1;

    while(Ein[i]==' '){

    i=i+1;

    }

    }

    return Nach;

so irgendwo habe ich dinge vergessen oder falsch gemacht, weiß aber net wo genau

expected identifier before '(' token

steht im ersten while

so richtig kenne ich den aunterschied zwischen array und string garnicht, darum sage ich mal das oder das hehe;-)

compi ist devc++

ist das so richtig

Nach[] = malloc(sizeof(Anzahl+1));

wenn Anzahl meine variable ist

Nein.

Erstens musst du einen Zeiger deklarieren, wenn du malloc benutzt, kein Array. Zweitens benutzt du sizeof falsch. sizeof liefert dir die Größe eines Typen. Wenn du ein Array mit malloc dynamisch reservierst, musst du die Anzahl der Arrayelemente mit der Größe eines Arrayelements multiplizieren. Bei char-Arrays kannst du dir letzteres sparen, weil sizeof(char) per Definition 1 ist.


int* Nach = malloc((Anzahl+1)*sizeof(int));[/code]

so richtig kenne ich den aunterschied zwischen array und string garnicht, darum sage ich mal das oder das hehe;-)

Ein Array ist eine Ansammlung von Werten eines Typs mit einer festen Größe.

Ein String ist ein char-Array mit dem Zeichenkettenendekennzeichen ('\0').

ja fällt mir jetzt auch wieder ein das sizeof für die länge des datentyps war, gut ich habe jetzt einfach mal Nach[Anzahl+1] benutzt oben bei der deklaration und habe alles mit malloc & co. weggelassen. es kommt aber immer wieder dieser fehler beim ersten while 8 expected identifier before '(' token

ich komme da einfach nicht weiter

ok vielen dank hat geklappt, nur jetzt noch ein fehler und zwar in

if(strrchr(Ein)=' '){

das es zu lang wäre steht dort?! das soll ja einlesen ob das letzte zeichen ein leerzecihen war

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.