Hva er segmentering feil

K

krishna_1980

Guest
følgende kode gir runtime error som «segmentation fault". hvorfor?

char * str;
fp = fopen ( "f1.txt", "r");
fgets (str, 10, fp);
setter (str);

men følgende kode fungerer ............................................ .....

char * str;
fp = fopen ( "f1.txt", "r");
fgets (str, 10, fp);
for (i = 0; i <10; i )
printf ( "% c", * (str i));

 
JEG dont vite mye om C , men jeg så noe i deres funksjoner:

Dette er et eksempel på setter funksjon.
Code:* Setter eksempel: hello world!
* /

# include <stdio.h>int main ()

(

char string [] = "Hello world!";

setter (string);

)

 
Du erklært rettferdig pekeren til et minne, men ikke deklarere en variabel til å lagre lese strengen, som er problemet.Lagt etter 7 minutter:Segmenteringen feil skyldes tilgang til et minneområde kalt et segment som ikke er lov til å være tilgjengelig fra andre segment.

 
Hei,

Problemet er, er det nødvendig å strore slutten av strengen "\ 0".

Mens utskrift med 2. metoden, dvs. å bruke løkke, du er nøyaktig utskrift bare antall tegn du lese og skrive.Dette vil fungere fint.Men under første metoden, sier (), som bare skriver ut strengen ved å lese tegn for tegn og se på slutten av strengen, dvs. '\ 0' som ikke er lagret i strengen under lesing.Det er nødvendig å eksplisitt lagre "EOS" end-of-streng ellers må du bruke den første metoden.

Kars

 
Jeg tror streng konstant automatisk terminated by '\ 0', så jeg synes det er OK.

 
Hei,
Flott.det er nødvendig å allokere minne for "str" før du bruker den.

Kars.

 
Ingen ble minnet for pekeren er tildelt, men det ble aldri startet med adressen til en gyldig røye plassering.I dette tilfellet er verdiene i minnet som ble allokert til det en verdi som forårsaket en segmentering feil.

 

Welcome to EDABoard.com

Sponsor

Back
Top