• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Localhost

Problemas em Linux

12 mensagens neste tópico

Olá pessoal, bem o Linux está-me a dar alguns problemas em termos de programação e confesso que tinha muitas mais facilidades no Windows...

Ora bem é o seguinte eu estou aqui com um projecto que está a dar mesmo pica  ;), no entanto o Linux não me deixa ver os resultados, eu compilo tudo direitinho mas quando chega a hora de executar aparece o seguinte: Segmentation Fault, alguém me podia ajudar? Obrigado desde já, a todos!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Segmetation fault é sinónimo de que acedeste a memória indevidamente.

Sem ver código não dá para ajudar muito mais. Vê bem o código que tens feito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa esqueci-me do código  :-[

Aí vai:

#include <stdio.h>
#include <string.h>

int main()
{
  int x,i,len=4;
  char str[4];
  char abc[26] = {'a','b','c','d',
                 'e','f','g','h','i','j','l','m','n','o','p','q','r','s',
                 't','u','v','x','z','k','y','\0'};
  while(strlen(str) <= len)
  {
    srand(time(NULL));
    x = rand() % 26 + 1;
    str[i] = abc[x];
    i++;
  }
  printf("%s", str);
  return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá pessoal, ainda um problema com o mesmo código...

Eu pus esse while de maneira a que cada vez que entrasse no laço mudasse o valor de x coisa que não está a acontecer e eu não percebo porquê, era suposto ele mudar o valor certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eheheh, já percebi o problema do meu post anterior só que agora tenho outro...

No final de cada string aparece sempre um simbolo estranho ehhehe, como retiro isto? Já vi se era do nulo mas também não muda...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pronto, já está LOL, já resolvi todos os problemas, obrigado a todos  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei porquê, mas devido ao facto de não teres o str inicializado, o strlen estava a devolver-me o valor 7, pelo que não processava o ciclo.

Isso do símbolo é porque estás a escrever mais caracteres para o array do que aqueles que ele suporta.

EDIT: Já sei o porquê do strlen dar 7. É que este utiliza o '\0' como marca do fim de contagem do número de caracteres, e devido ao facto de não teres inicializado o str, o strlen vai dar um valor diferente que nunca se saberá qual é, depende sempre da existência de um 0 na memória.

The length of a C string is determined by the terminating null-character: A C string is as long as the amount of characters between the beginning of the string and the terminating null character.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o C não põe o nulo no final automaticamente sem ter de inicializar a string?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, aquilo para todos os efeitos é um char *. Existem é funções que os tratam como strings.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ui, eu sempre pensei que ele punha sozinho o terminador nulo LOL, pelo menos nunca tive problemas deste género  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora