/ Forside/ Teknologi / Udvikling / C/C++ / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
multi dinensionelle arrays
Fra : krogh
Vist : 577 gange
100 point
Dato : 09-05-03 16:40

Jeg skal have lavet et 2 dimensionelt array og har gjort følgende

char database [100][20];
Her brokker compileren sig over en syntaksfejl (jeg bruger borland C)

ellers var planen at opbygge arrayet således
database [0][0] "hund";
database [1][0] "kat";
.
.
osv
Skulle dette ikke kunne fungere, hvilken syntaksfejl er det jeg overser??



 
 
Kommentar
Fra : BertelBrander


Dato : 09-05-03 18:52

Får du en fejl efter char database [100][20]; ? Det burde du ikke, det er ok.

Det er derimod ikke ok at skrive database [0][0] "hund";
database[0][0] er en char, "hund" er en række af char's (en string literal).
Du kan gemme strengen "hund" i database[0] (der er et array af char's) med:
strcpy(database[0], "hund");
eller:
database[0][0] = 'h';
database[0][1] = 'u';
database[0][2] = 'n';
database[0][3] = 'd';
database[0][4] = '\0';


Kommentar
Fra : krogh


Dato : 09-05-03 21:28

jeg har løst "char database[100][20];" problematikken
100 er blevet skiftet ud med #define maxord 100
20 er blevet skiftet ud med #define maxordlangde 20

Så arrayet ser således ud:

#define maxord 100
#define maxordlangde 20

char database[maxord][maxordlangde];

jeg kan godt følge dit løsningsforslag med strcpy(database[0], "hund");
med er det godtnok den nemmeste metode??

Kommentar
Fra : BertelBrander


Dato : 10-05-03 00:01

Jeg kan ikke se hvordan din "løsning" på problematikken har kunnet løse noget som helst.

Hvis du bruger C++ kan du bruge strings:

#include <string>
std::string database[maxord];
database[0] = "Hund";

Om det er nemmere er en smagssag, efter nogle års programmering i C vil du synes char database[100][20]; er den eneste rigtige metode.

Kommentar
Fra : krogh


Dato : 10-05-03 12:31

Hej BertelBrander

jeg har fået arrayet til at virke, og lagt ord ind i den, det virker perfekt nu, jeg takker.

jeg har et ekstra problem jeg håber du kan hjælpe mig med, jeg vælger at lægge det i den samme tråd da jeg fik udemærket hjælp af dig til mit første problem. jeg vil gerne smide nogle ekstra points i hatten, så du får for to spørgsmål.

Problem:
jeg vil gerne lave en pointer der peger på en række i arrayet, jeg har prøvet følgende

int udtraek;// tilfældigt genereret tal vha srand
*char db_ptr;//pointer

db_ptr = &database[udtraek];

Men dd_ptr peger vel kun på det første bogstav i den pågældende række i arrayet, hvordan får jeg den til at pege på hele ordet i rækken??

Accepteret svar
Fra : BertelBrander

Modtaget 100 point
Dato : 10-05-03 21:08

Pointere i C er en lidt svære at forstå, så vi tager det et skridt af gangen:
char *p;
p en pointer til en char eller til en streng af char's, kun programmøren ved om det er det ene eller det andet, p peger ikke på noget endnu.
char a[10] = "hest";
a er et array af 10 char's initialiseret til "hest".
a[0] er en char der indeholder char'en 'h'
p = a;
her sættes p til at pege på array'et a
p[0] (som er det samme som *p) er en char som er det samme som a[0] (som stadig er 'h')
p er en pointer der peger på a som er "hest"
char aa[10][20] =
{ "mis",
"kanin"} ;
aa er et array af array af char.
aa[0] er et array af char (der er initialiseret til "mis");
aa[0][0] er en char (som indeholder 'm')
p = aa[1];
p er en pointer til char som peger på aa[1] som er "kanin"
*p = en en char som indeholder a[1][0] som er 'k'
p[2] er det samme som a[1][2] som er 'n'

DVS: det hedder ikke
*char db_ptr;//pointer
men
char *db_ptr; //pointer
Det hedder ikke
db_ptr = &database[udtraek];
men
db_ptr = database[udtræk];

Kommentar
Fra : krogh


Dato : 10-05-03 22:48

Hej Bertel
Jeg takker for svarene, det er rart at der er nogen der gider skære det ud i pap for én.

mht mit sidste indlæg så mente jeg også "char *db_ptr", der var bare lige sneget sig en tyrkfejl ind.
endnu engang tak for hjælpen
Chr Krogh

Godkendelse af svar
Fra : krogh


Dato : 10-05-03 22:56

Tak for svaret Bertel
jeg smed en stak ekstra point i stakken, tak for hjælpen
MVH
Chr Krogh
                        

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste