Du kører med linux ikke ? Jeg har været ude for det samme når det har været noget med en løkke der skal køre til NULL Det har den ikke kunnet klare , ved ikke hvorfor
er der ikke noget med at man selv skal ligge en null terminering ind (\\0) ved char* streng er der måske ikke nogle NULL terminering så du kan ikke køre en while(x != NULL) for den kommer aldrig. ved et char streng[] array er der automatiske et null terminering måske!! er det noget med det ved ikke helt.
prøv med en while(true)
eller while(x != NULL)
eller en løsning som jeg nogle gange er nødt til at bruge:
lav en tæller som du kan bruge istedet for x!=NULL eller true
fandt sku lige dette -------------------------------------------- segmentation fault n.
[Unix] 1. [techspeak] An error in which a running program attempts to access memory not allocated to it and core dumps with a segmentation violation error. This is often caused by improper usage of pointers in the source code, dereferencing a null pointer, or (in C) inadvertently using a non-pointer variable as a pointer. The classic example is:
int i; scanf (\"%d\", i); /* should have used &i */
2. To lose a train of thought or a line of reasoning. Also uttered as an exclamation at the point of befuddlement.
jpk >> Jo, hvis array\'et er længere end din init-streng, så bliver der indsat karakter \'\\x0\'. Du kan kun tvinge den til at lade være, ved at give init-værdien til hvert enkelt element:
char a[3] = { {\'a\'}, {\'b\'}, {\'c\'} };
Under TC+ 3.0 giver dette her faktisk memory overwrite problemer:
jo jo, hvis arrayet er LÆNGERE end antallet af de chars der sættes ind... Hvis du angiver: char a[10] = \"abc\"; er de uinitialiserede (af bruger, ikke compiler) chars jo ALLE \'\\xo\'
char a[3] = { {\'a\'}, {\'b\'}, {\'c\'} }; giver ikke i sig selv problemer, kun hvis arrayet anvendes forkert... (i en sammenhæng hvor der forventes en null-termineret streng)
mickni33 har ret. En segmentation fejl optræder når et program skriver i noget hukommelse som ikke er ejet af programmet (en vild pointer). F.eks. sker det ofte hvis man laver a) int x; scanf(\"%d\",x); og ikke int x; scanf(\"%d\",&x); eller b) char *p; strcpy(p,\"Hello world\"); hvor hukommelse som p peger på ikke er reserveret af programmet (med en malloc eller new operator).
Synes godt om
Ny brugerNybegynder
Din løsning...
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.