_
toggle menu eXmatrikulationsamt.de
online: 394 gäste

> C frage

Themen Layout: Standard · Linear · [Outline] Thema abonnieren | Thema versenden | Thema drucken
post 15 Apr 2008, 23:17
avatar
Vordiplom
*****

Punkte: 739
seit: 22.06.2005

Hallo

habe hier eine Frage hoffe es kann mir jemand helfen:
Ich habe einfach ein

char *array[MAX];

jetzt möchte ich jeweils ein string einlesen und jeweils einem Zeiger aus array zuordnen so dass ich am Ende
einen Array mit Zeigern habe die jeweils auf ein String Zeigen.

Wie würde man es am besten machen?
Was eignet sich eigentlich besser zum einlesen eines strings: scanf oder fgets? oder gibt es eine bessere
Möglichkeit?
Muss ich für jeden String dass ich einlese extra Speicher anfordern? also wäre zb dies korrekt
array=(char *)malloc(MAX*sizof(char)) ?

könnte ich dann praktisch *(array+i)=string machen und hätte somit einem Zeiger die adresse des Strings
zugewiesen ? oder habe ich hier was durcheinander gebracht?

Wäre Dankbar für die Hilfe.
ProfilPM
AntwortenZitierenTOP
 
Antworten
post 16 Apr 2008, 09:41
avatar
der vierkonsonantige
*********

Punkte: 3812
seit: 12.12.2003

char * array[MAXANZSTRINGS];

mach dir nen ausreichend großen Puffer...

char * puffer = (char*) malloc(1024);

beliebig oft:
{
lies da nen string rein (fgets oder scanf ist egal, da gibt es widersprüchliche Aussagen)

eleminiere den Zeilenumbruch im String, der evtl drinne ist von der eingabe

puffer[strlen(puffer) - <LÄNGE DES ZEILENUMBRUCH (1 oder 2)>] = '\0';

dann miss den string mit strlen aus und erzeuge nen neues feld

array[i] = (char*) malloc(strlen(puffer) + 1);

und kopiere den Puffer rein strcpy(array[i], puffer);
}
und zuletzt einmal:

den puffer freigeben

free(puffer);

Dieser Beitrag wurde von stth: 16 Apr 2008, 09:44 bearbeitet


--------------------
jeden tag einen dummen kommentar!
hab ich bei den fadfindern gelernt.
bild kann nicht angezeigt werden

bild kann nicht angezeigt werden bild kann nicht angezeigt werden bild kann nicht angezeigt werden bild kann nicht angezeigt werden
"if you have a hammer, every problem looks like a nail"
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 13:41
avatar
Vordiplom
*****

Punkte: 739
seit: 22.06.2005

Vielen Dank stth das hat mir sehr geholfen.

Ich musste allerdings bei (mit scanf) eingelesenen String nichts abschneiden irgendwie bzw. mit der Zeile puffer[strlen(puffer)-1]='\0'; schnitt ich immer den letzen Buchstaben ab.
also habe ich es weggelassen.

Vielen Dank nochmals und grüße.
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 16:59
avatar
der vierkonsonantige
*********

Punkte: 3812
seit: 12.12.2003

dann passierte das bei fgets
ProfilPM
AntwortenZitierenTOP
Beiträge
Dr_NickRiviera   C frage   15 Apr 2008, 23:17
stth   zitat != edit   16 Apr 2008, 09:44
Dr_NickRiviera   Vielen Dank stth das hat mir sehr geholfen. Ich m...   16 Apr 2008, 13:41
stth   dann passierte das bei fgets   16 Apr 2008, 16:59
stth   und nicht vor '\n' bzw "\r...   16 Apr 2008, 17:05
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: