Ir para conteúdo
Fórum Script Brasil
  • 0

victorlima7788

Pergunta

eu estou fazendo um c[odigo aonde o us[ario vai me declarar uma letra pra responder uma questao que tem quatro opções de resposta(a,b,c,d), no total são 10 perguntas.

dai eu pensei em fazer a seguinte string:

char questionario[11];

e coloco no final de cada pergunta que eu faço, no caso apos o printf

scanf("%s",questionario[1]);

mas o problema é que nesse caso a letra que o usuário colocou n está sendo atribuida ao questionario[1] e sim a variável questionário, como se n tivesse vetor e sim, só uma variável nomeada quetionário, dai pras outras perguntas quando eu coloco 

scanf("%s",questionario[2]); por exemplo, ele continua considerando a resposta da primeira pergunta. como eu arrumo isso, pfv?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

@victorlima7788Olá!

Primeiro o mais importante, O que é uma string na linguagem de programação C? Para responder essa pergunta de maneira rápida, sem filosofia, resumo que em c uma string é; um segmento de caracteres armazenados em um vetor do tipo com pelo menos 1 byte de tamanho suficiente para 1 caractere nulo. Para ser de fato uma string esse vetor deve ter muita mais que 1 byte e terminar sua sequência com o último elemento igual a '\0' (esse caractere é chamado de caractere nulo, numericamente 0).

 

Vejamos agora a sua variável   char questionario[11]   essa variável é uma matriz unidimensional de elementos do tipo char (1 byte), ou seja, temos aqui um vetor de 11 bytes, como já explanei uma string reserva para si o último caractere nulo, assim sendo, temos aqui uma string com capacidade para 1 palavra de até 10 letras. E nada mais.

 

Com relação a isso:   scanf("%s", questionario[1]);    Temos aqui um erro lógico, pois como já citei acima, uma string é um vetor (uma matriz unidimensional) com pelo menos 1 byte reservado ao seu caractere nulo. Nessa expressão acima você passa um dos elementos do vetor e não o vetor inteiro, consequentemente, isso resulta em erros imprevisíveis, mais com minha experiência diria que o programa para de funcionar com crashed quase que imediatamente, e se o não o fizer, além dos erros lógicos há erros na estrutura do programa.

 

Salva as explicações necessárias, vamos a abordagem correta do seu problema. Então se uma string é um vetor de N tamanho com N > 0, então   questionario   é uma string, ou pelo menos tem os bytes necessário para armazenar uma palavra de no máximo 10 letras e nada mais. Como poderia eu se quisesse armazena mais palavras nesse mesma variável? Basta para isso usar um vetor de vetores, WHATSS ??? Sim um vetor de vetores também conhecido como matrizes multidimensionais, então assim sendo se cada palavra tem no máximo 10 letras basta declara uma matriz com 11 colunas e 10 linhas porque cada linha da matriz é um vetor(string) e contem 11 posições  (10 letras) que são as colunas da string

 

char questionario[10][11];  /* é uma matriz do tipo char com capacidade para 10 palavras de no máximo 10 letras cada */ scanf("%s", questionário[0]);  /* Gravar na primeira string. */

Obrigado.

Editado por britivaldo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...