Ir ao conteúdo

Posts recomendados

Postado

Olá, estou aprendendo a linguagem em C e não consigo resolver esse problema: preciso verificar se a minha matriz de string está nula para então realizar as outras definições da questão. Não consegui achar alguma dica na internet, se alguém puder me auxiliar, agradeço muito.

 

int opcao, i, j=0;
    char nomes[4][4];

    do
    {
        printf("---------------------------------\n");
        printf("|1 - Digitar nomes para matriz  |\n");
        printf("|2 - Lista em ordem crescente   |\n");
        printf("|3 - Lista em ordem decrescente |\n");
        printf("|4 - Sair                       |\n");
        printf("---------------------------------\n");
        scanf("%d",&opcao);

        //Recebe nomes na matriz
        if (opcao == 1)
        {
            system("cls");
            printf("\n1 - Digitar nomes para matriz na coluna %d: \n",j);
            for (i=0; i<4 ; i++)
            {
                printf("Nome %d: ",i);
                scanf("%s",&nomes[i][j]);
            }
            j++;
        }

        //classifica nomes em ordem alfabética crescente
        if (opcao == 2)
        {
            system("cls");
            printf("2 - Lista em ordem crescente: \n");
            for (i=0; i<4 ; i++)
            {
                for (j=i; j<1; j++)
                {
                    if (nomes[i][j] != NULL)
                    {
                        printf("MATRIZ COM CONTEUDO\n");
                        break;
                    }
                    else
                    {
                        printf("\nERRO - MATRIZ SEM CONTEUDO\n");

                        break;
                    }
                    break;

                }
                break;
            }

        }
   }
    while (opcao != 4);

 

  • Obrigado 1
Postado

@Sarah Kanadani    não existe matriz vazia na Linguagem , pois o compilador dessa Linguagem não inicializa automaticamente nem matrizes nem vetores , e nem qualquer tipo de variável ,  ele apenas reserva uma área na memória para receber dados referente a tal variável , e ali com certeza haverá algum valor armazenado , que seja de 0 até 255 , que se diz que é Lixo de memória , e  assim você pode até definir por conta própria que o zero seja considerado como vazio ,  ou outro valor qualquer , nessa faixa , que atenda seus objetivos .  mas na verdade não estará vazio , então seria melhor você inicializar a matriz com valores que você queira , e seu código poderia ser assim  :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    int opcao, i, j=0;
    char nomes[4][4];  // matriz de char que pode armazenar 16 caracteres
                       // ou
                       // 4 nomes que tenha no máximo tres caracteres + o último
                       // que é para o \0 finalizador de strings
    do
    {
        printf("---------------------------------\n");
        printf("|1 - Digitar nomes para matriz  |\n");
        printf("|2 - Lista em ordem crescente   |\n");
        printf("|3 - Lista em ordem decrescente |\n");
        printf("|4 - Sair                       |\n");
        printf("---------------------------------\n");
        scanf("%d",&opcao);

        //Recebe nomes na matriz
        if (opcao == 1)
        {
            system("cls");
            printf("\n1 - Digitar nomes para matriz na coluna %d: \n",j);
            for (i=0; i<4 ; i++)
            {
                printf("Nome %d: ",i);
                scanf("%s",&nomes[i][j]);
            }
            j++;
        }

        //classifica nomes em ordem alfabética crescente
        if (opcao == 2)
        {
            system("cls");
            printf("2 - Lista em ordem crescente: \n");
            printf("Olha o que tem na matriz nao inicalizada , Lixo de memoria\n");
            for(i=0;i<4; i++)
            {
                printf("Nome %d  %s\n",i,nomes[i]);
            }
            printf("Inicializar a matriz , existem muitos Modos\naqui hum\n");
            strcpy(nomes[0],"hum");//tres caracteres e + hum finalizador de string \0
            strcpy(nomes[0],"doi");//tres caracteres e + hum finalizador de string \0
            strcpy(nomes[0],"tre");//tres caracteres e + hum finalizador de string \0
            strcpy(nomes[0],"Qua");//tres caracteres e + hum finalizador de string \0
            // se Quiser uma matriz vazia , coloque o caracteres espaço ,
            // cujo ASCII é 32 , ou simplesmente digite um espaço entre aspas simples
            for (i=0; i<4 ; i++)
            {
                for (j=i; j<1; j++)
                {
                    if (nomes[i][j] != ' ')
                    {
                        printf("MATRIZ COM CONTEUDO\n");
                        break;
                    }
                    else
                    {
                        printf("\nERRO - MATRIZ SEM CONTEUDO\n");
                        break;
                    }
                    break;
                }
                break;
            }
        }
   }
    while (opcao != 4);
    return 16;
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!