1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda em C

Discussão em 'Programação' iniciada por swz, 10 de Janeiro de 2009. (Respostas: 5; Visualizações: 586)

  1. swz

    swz

    Boas,

    Estou aqui com uma duvida, o programa corre perfeitamente, mas ele nunca me lê o "z5"
    A estrutura esta declarada assim:

    typedef struct s1{
    char name[100];
    int ph;
    char place[7];
    }pessoa;

    pessoa agenda[DIM]

    Código:
    agenda[i].place[0]=="z5";
    	 printf("place=\n", agenda[i].place[0]);
    porque?
     
  2. Aparicio

    Aparicio /dev/mod
    Staff Member

    Primeiro, não se atribui strings com =, muito menos com == que serve para comparar números, tens que utilizar o strcpy para copiar a string.

    strcpy( agenda.place, "z5" );

    Depois, no printf não tens nada na string para que apareça o que queres, terá de ser por exemplo:

    printf("place=%s\n", agenda.place);
     
  3. swz

    swz

    Sim isso do printf foi erro meu, distracção, o das strings não sabia, obrigado.

    mas no entanto surgiu outro problema, sem ser em strings:

    ...
    Código:
    scanf( "%d", &c);
    agenda[i].lugar=c;
    O programa mais uma vez corre, mas da fatal error quando chega ai. Qual é o meu erro desta vez'? :confused:
     
    Última edição: 10 de Janeiro de 2009
  4. Aparicio

    Aparicio /dev/mod
    Staff Member

    Estás a fazer agenda.lugar quando a struct que definiste em cima não têm o inteiro lugar.
     
  5. swz

    swz

    Sim, mas isso eu já tinha colocado na struct

    Código:
    char lugar[DIM2]
     
  6. Aparicio

    Aparicio /dev/mod
    Staff Member

    Então aí está o problema, declaraste o lugar como uma string e estás a tentar por lá um número inteiro.
    Tens que escolher se queres guardar uma string ou um inteiro no lugar.
     

Partilhar esta Página