O que é falha de segmentação

K

krishna_1980

Guest
o seguinte código está dando erro de execução como "falha de segmentação". quê?

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

mas o seguinte código está trabalhando ............................................ .....

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

 
Eu não sei muito sobre o C , mas eu vi algo em suas funções:

Este é um exemplo para coloca função.
Código:* Coloca exemplo: Olá mundo!
* /

# includeint main ()

(

char string [] = "Olá mundo!";

puts (string);

)

 
Você declarou apenas o ponteiro para um espaço de memória, mas, não declarar uma variável para armazenar a seqüência de leitura, que é o problema.Adicionado após 7 minutos:A falha de segmentação é causada por aceder a um espaço de memória chamado de um segmento que não é permitido ser acessado a partir de algum outro segmento.

 
Oi,

O problema é que ela é necessária para strore o final da string "\ 0".

Durante a impressão utilizando o método 2, loop usando o IE, você é exatamente imprimir apenas o número de caracteres que você ler e imprimir.Isto irá funcionar bem.Mas durante o primeiro método, puts (), que apenas imprime a cadeia lendo caractere por caractere e olhar para o final da cadeia, ou seja, '\ 0' que não é armazenada na cadeia durante a leitura.Exige-se explicitamente a loja "EOS" fim-de-corda senão você terá que usar o primeiro método.

Kars

 
Acho string constante automaticamente denunciado por '\ 0', por isso, eu acho que está OK.

 
Oi,
Ótimo.é necessário alocar memória para "str" antes de usá-lo.

Kars.

 
Não, a memória para o ponteiro foi atribuída, mas ele nunca foi inicializado com o endereço de um local char válido.Neste caso, os valores na memória que foi atribuída a ele é um valor que causou um erro de segmentação.

 

Welcome to EDABoard.com

Sponsor

Back
Top