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.

Einlesen mehrer Befehle aus einer Zeile ohne Zeiger in C

Empfohlene Antworten

Hallo

ich hab ein kleines Problem und

komme einfach nicht weiter.

Mein Programm steht soweit schon,

nur hält es sich noch nicht an alle Vorgaben.

Dazu gehört das alle Befehle aus

einer Eingabzeile eingelesen werden sollen,

und wir keine Zeiger verwenden dürfen außer *FILE.

Also erst Programmaufruf mit Dateiname der zu lesenden daten und einer

Optionalen Zahl zur bestimmung der Anzahl der aus der Datei zu lesenden

Zeilen.

<Programmname> <Dateiname> [<Zahl>]

Danach sollen einzelne Programmfunktionen auch so aufrufbar sein.

(Wobei die Datei feste Strukturierte Datentypen enthält)

Z.B Addiere Zeile eins mit Zeile zwei.

<Funktionsname> <Zeilenid1> <Zeilenid2>

Diese Eingaben sollen immer in nur einer Zeile geschehen.

Da scanf ja immer nur einen Typ einlesen kann oder zwischen jeder eingabe

auch ein Enter zulässt fällt das ja schonmal weg. Drum dachte ich mit fgets()

aber ohne zeiger bekommt man die einzelnen teile ja nicht mehr raus aus

dem string.

Auf nachfrage ob wir strtok() benutzen dürfen wurde mir gesagt dafür sollten

wir eine eigene Funktion schreiben. Und scanf() erst benutzen nachdem die

Korrektheit der eingabe geprüft wurde.

Ich hab schon einiges ausprobiert aber nichts funktioniert.

Hat evtl. jmd einen tip für mich womit das am besten zu realisieren ist?

Ganz wichtig is halt ,dass das alles ohne Zeiger ist.

MfG

Schmurgel

Hallo nochmal.

Ich habe mir jetzt die Zeile mit fgets() geholt und lasse in einer Schleife jedes einzelne

Zeichen auf ein Leerzeichen prüfen bis das ende des Strings erreicht ist.

Die jeweiligen Leerzeichenstellen merke ich mir in einem extra array.

Nun muss ich noch die einzelnen teile in ihre jeweiligen Variablen packen.

An welcher stelle diese jeweils anfangen weiß ich ja nu schon aber ich komm einfach nicht

drauf wie das zu bewerkstelligen wäre.

Hier mal mein code der Eingabe bei laufendem Prgramm:

int k=0;

int i=0;

int i2=0;

int r=0;

int bsz[3]; //beinhaltet die Zahl der jewiligen Leerzeichenstellen

char test[100]; //beinhaltet den String

char funktion;

fgets(test, 100, stdin);

printf("%s\n",test);

while(test!='\0') //solange bis String zu ende

{

for (i2;test[i2]!=' ';++i2) //solange bis Leerzeichen

{

k = i2+2;

//printf("k: %d, i: %d\n",k,i);

bsz[r]=i;

}

r++;

i=k-1;

i++;

i2=k;

//printf("%s\n",&test[k]);

}

r=0;

while(r!=3)

{

printf("%d\n",bsz[r]);

r++;

}

/* An dieser stelle habe ich nun versucht über die jeweils voher bestimmte stelle zumindest erstmal den funktionsnamen zu extrahieren... leider ohne erfolg

ich weiß auch leider garnicht ob getchar und putchar hier angebracht ist und ob man das so verwenden kann... */

int bsz1 = bsz[0];

int bsz2 = bsz[1];

int bsz3 = bsz[2];

while (bsz1;funktion=fgetc(test[bsz1])!=' ';bsz++)

{

putchar(funktion);

//funktion = getchar();

}

nochmal zu dem tip mit isdigit() den kann ich leider nicht verwenden da die zeilenid aus beliebiegen zeichen besteht.

Wäre also echt super wenn mir da jemand helfen könnte. Wie ich die zeichen aus dem string von einer bestimmten stelle bis zum Leerzeichen in eine extra Variable packen kann.

Mh hab irgendwie zu kompliziert gedacht :)

Eigentlich doch ganz einfach...

Zuerst per fgets die Zeile geholt.

Dann nur die Anzahl der Leerzeichen gezählt.

Und dann je nach Anzahl der Leerzeichen

einfach mit sscanf die einzelteile geholt...

... Demzufolge gelöst :D

Grüße ...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

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.