02. marts 2002 - 00:33Der er
10 kommentarer og 1 løsning
function stringcat
Hej, Jeg er igang med at lave en function void stringcat(char [], char[]); Mine test cases cases skal teste concatenationen af en null string og kopiere variabler og konstanter. Functionen skal derudover kopiere indeholdet af nummer to character array til slutningen af den foerste.
Er der nogle der kan hjaelpe mig med det? Paa forhaand tak!
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Hej Chries Du har ret i at det betyder at der er plads i den foerste til den samlede streng og at det er det der skal testes for at der bliver kopieret ind i den foerste hvor der bliver taget hensyn til NULL strengen. Haaber du kan hjaelpe med det ;0)
lidt mere tjeck på, desværre kan man ikke bruge sizeof inde i "str" funktionerne, (den siger bare 4 for pointer, mens hvor et array er erklæret siger den 128 for min streng_a)
Hej Chries. Pointen i opgaven er at lave det som du du har skrevet koden paa, men uden brug af strcpy() eller strlen() eller strcat(). Jeg beklager at jeg er daarlig til at forklare mig.
Hej Chries, Det virker jo!! Jeg maa tilstaa at jeg lige er gaaet igang med at programmere i januar og har bevaeget mig laengere frem end jeg har laert med denne funktion (eller du lavede den jo). Er det muligt at jeg kan bede dig om en lille forklaring om processen i functionen, da jeg ikke helt kan genneskue det. Hvorfor ligger int strlen( const char str[] ) og bool strcat( char str_a[], const char str_b[], int a_len )foer main()? Jeg har kun set functioner der ligger efter main og at man laver et function call i main. Haaber du har lyst til at svare - jeg indroemmer at jeg er kraevende. =0)
int strlen( const char str[] ) { int i=0; // start ved nul
while( true ) // i en uendelighed gør { if( str[i] == '\0' ) // test om dette element er en nul terminering { return i; // returner (gå ud af while) i = hvor nul terminering er, hvilket er set samme som størrelsen uden nul terminering }
i++; // test næste element ved at flytte i (i = i + 1) } }
bool strcat( char str_a[], const char str_b[], int a_len ) { int a_size = strlen( str_a ); // længen af streng a minus nul terminering int b_size = strlen( str_b ); // længen af streng b minus nul terminering
int total = a_size + b_size + 1; // total længde af begge strenge + plads til en nul terminerning
if( total > a_len ) // er der plads til begge stenge + nul terminerning i streng a ? { return false; // ikke nok plads }
// for alle elementer i b (alle untagen termintering) for( int i=0; i<b_size; i++ ) { str_a[a_size+i] = str_b[i]; // sæt element fra b ind i a, på a's første frie plads i dens streng }
str_a[a_size+b_size+1] = '\0'; // terminer streng a lige efter streng b
Hej Chries, Du har vaeret en stor hjaelp, jeg har sat point satsen op til 100 da jeg blev ved med at stille dig spoergsmaal. Der er noget med at du skal trykke svar, saa jeg kan acceptere og du faar pointene ikke sandt? Tak for hjaelpen!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.