Problemas com entradas de Arrays em C

6 respostas
array
L

Pretendo fazer um simulador de memoria ram em C e preciso manipular strings, de inicio gostaria de usar um array 4x4 para entrada de 4 posições de memoria com 4 bits:

1010
1000
1011
0000

Algo assim.

#include<Stdio.h>
void main(){
    char array[4][5];
    printf("Informe as 4 posicoes:\n");
    int i;
    //leitura
    for(i=0;i<4;i++){      
        scanf("%s", array[i]);
    }
    //impressão
    printf("Imprimindo!\n");
    for(i=0;i<4;i++){
        printf("%s\n", array[i]);
    }
}

https://pastebin.com/xXS6e9Xs

Porém a a impressão desse array vai sair meio confusa, se eu mudar de array[4][4] para array[4][5] a impressão será normal.

6 Respostas

L
  • Se o array é 4x4, por que disso char array[4][5];?
  • Se é 4x4, por quê apenas um for?

for(i=0;i<4;i++){ scanf("%s", array[i]); }
Como ler as demais posições?

E, para a impressão, você está fazendo como? (tirar o código do guj e colocar no pastebin me impede de ver o mesmo)?

L

1 - não consigo identar pelo forum
2 - em C se eu fizer apenas array[4] ele vai ler uma palavra de 4 digitos.
3 - a minha pergunta é para saber por que funciona com 5, então não tenho a resposta da pergunta que você tem sobre a minha pergunta, Pois essa é a minha duvida.

L

1 - Se você prestar atenção, verá que, acima do editor de texto, existem vários botões, um deles é o </>, se você colocar o código, identado com espaços, selecioná-lo e clicar no botão citado, o código fica identado corretamente.
2 - Sim, assim como em qualquer linguagem de programação um vetor de quatro posições vai ser capaz de armazenar apenas 4 elementos do tipo especificado para o vetor, não? Então você precisa de algo como

char *array[4];

Isso te dará um array de 4 posições capaz de armazenar palavras com qualquer tamanho.

3 - Você já imprimiu os valores de um vetor qualquer antes? Como fez?

L

A opção de texto pré formatado não esta funcionando, a mesma tem em outro forum e esta funcionando. peço que se não for ajudar e apenas for ficar questionando, não responda mais, você só está fazendo mais perguntas, então não precisa se preocupar, agradeço de qualquer forma e vou continuar pesquisando o meu problema.

L

Qual o teu conceito de ajudar?
O meu está enquadrado em algumas destas definições
Estou questionando para tentar entender a tua dificuldade. Para tentar te fazer pensar de uma outra maneira.
Mas, se prefere continuar pensando do mesmo ponto de vista que ainda não resolveu teu problema, esteja à vontade.

E só por desencargo, como algo funciona para mim e não funciona para você?

#include
void main(){
    char array[4][5];
    printf("Informe as 4 posicoes:\n");
    int i;
    //leitura
    for(i=0;i<4;i++){    
        scanf("%s", array[i]);
    }
    //impressão
    printf("Imprimindo!\n");
    for(i=0;i<4;i++){
        printf("%s\n", array[i]);
    }
}

Em tempo, quando você declara char vetor[4][5] você está dizendo ao compilador que ele deve reservar memória para alocar 20 posições onde serão armazenados apenas um caractere em cada. Estas posições serão segmentadas em quatro porções, cada qual com 5 posições seguidas, podendo ou não serem sequenciais.

L

não preciso de 20, mas funciona com essas 20.
1010
1000
1011
0000
isso acima é o que eu preciso ler e mostrar(não exatamente esses números).
ex: entrada:
1111
0000
3333
4444
saida:
1111000033334444
000033334444
33334444
4444
isso usando array[4][4]
simplesmente mudando para array[4][5] e lendo novamente a impressao sera:
1111
0000
3333
4444

Criado 31 de março de 2017
Ultima resposta 31 de mar. de 2017
Respostas 6
Participantes 2