In C language, I can not work properly with an array

1

Hello. In a college project to automate the end-to-end encryption process, I encountered some problems when dealing with arrays. NOTE: Sorry for the formatting errors of the code. I have not got the hang of it yet.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>


int main()

{
    //Variaveis
    long int tamanhoM1=0, //Variavel de controle do tamanho da 'matriz1'
        linha=0,          //Variavel para percorrer a 'matriz1'
        coluna=0,         //Variavel para percorrer a 'matriz1'
        x=0,              //Variavel para pecorrer o vetor 'fraseOriginal'
        matrizCodificada[tamanhoM1][tamanhoM1]; //Onde iremos codificar em ASCII nossa 'matriz1'
unsigned char fraseOriginal[x],
    matriz1[tamanhoM1][tamanhoM1];


   //Codigo
    printf("Digite o tamanho da matriz COM LETRAS E ESPAÇOS\n");
    printf("Na duvida,ponha um tamanho maior que será completado com espaços\n");
    scanf("%i",&tamanhoM1);

    printf("Digite a sua frase:\n");
   while ( x != pow(tamanhoM1,2)) //O laço vai ler do teclado um caractere até que encontre o quadrado do 'tamanhoM1'
{                             //Pois uma matriz 2x2 cabe 2^2=4 elementos
    fraseOriginal[x]=getche(); //Guarda na posição x um caractere
    x+=1;

}

x=0;  //Zera o X para percorrer o vetor do começo
printf("\n");

printf("Sua matriz é:\n");
   for (linha=0; linha < tamanhoM1; linha++)  //For aninhados para transformar o vetor 'fraseOriginal' em uma matriz 'matriz1'
{
    printf("\n");  //Quebra a linha
    for(coluna=0; coluna < tamanhoM1; coluna++)
    {
        matriz1[linha][coluna]= fraseOriginal[x];  //A matriz recebe o valor da posição do vetor de forma que percorre o vetor inteiramente

       x+=1;
       printf("%3c",matriz1[linha][coluna]);  //Impressao dentro do mesmo for pois quando se é feita fora do mesmo encontra-se erro


    }

}
printf("\nSua matriz codificada e:\n");

 for (linha=0; linha < tamanhoM1; linha++) //For para transformar a matriz de caractere para char(codigo ASCII)
{
    printf("\n");  //Teste de impressão
    for(coluna=0; coluna < tamanhoM1; coluna++)
    {
        matrizCodificada[linha][coluna]=matriz1[linha][coluna];
       printf("%5i",matrizCodificada[linha][coluna]);  //Impressão da matriz em codigo ASCII que encontra erro


    }

}


return 0;  //Fim
}

When I run the program, I get the following result:

Digite o tamanho da matriz COM LETRAS E ESPACOS
Na duvida,ponha um tamanho maior que serß completado com espaþos
2
Digite a sua frase:
ab c

Sua matriz Ú:

  a b
    c

Sua matriz codificada e:

   32    0
   32    0

The result found in the final array is wrong, as expected is:

97   98
32   99

What could be wrong? Am I manipulating the matrix wrongly? Thank you in advance.

    
asked by anonymous 24.08.2016 / 18:51

1 answer

0

You can not define arrays with zero elements; either with constant values (in C89) or with VLA (in C99).

char a1[0]; // declaracao C89 (C99, C11) invalida

int size = 0;
char a2[size]; // declaracao C99 (C11) invalida

See the Standard C11 6.7.6.2 (in English, the translation is my).

  
    

p1: [For fixed arrays] If the expression is a constant, it must have a value greater than zero.

         

p5: [For VLAs] each time the expression that defines the array size is calculated must have a value greater than zero.

  
    
26.08.2016 / 13:45