Ir ao conteúdo
  • Cadastre-se
Jessé P. de Melo

C Como usar funções da biblioteca string em uma função sem usar ponteiros?

Recommended Posts

Bom dia.

Estou resolvendo o seguinte exercício:

Escreva uma função que receba um numero inteiro maior do que zero e retorne a soma de todos os seus algarismos. Por exemplo, ao numero 251 corresponder a o valor 8 (2  + 5 + 1). Se o numero lido não for maior do que zero, o programa terminar  a com a  mensagem “Numero invalido”.

Desenvolvi a solução que segue, porém esta dando erro com funções da biblioteca string.

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

int main (void){
    int converte (char a);
    int tam;
    char texto;
    printf("Digite um numero: ");
    scanf("%s",&texto);
    printf("Soma: %i", converte(texto));

}
int converte (char a){
    int tam;
    int num;
    int num_intermediario;
    char intermediario[2];
    tam=strlen(a);
    char texto1[tam];
    strcpy(texto1,a);
    intermediario[1]='\0';

    for (int x=0;x<tam;x++){
        intermediario[0]=texto1[x];
        num_intermediario=atoi(intermediario);
        num=num+num_intermediario;
    }
    return(num);
}

Pois bem! Pensei comigo mesmo é só não usar essas funções, ai modifiquei o a função, e ficou assim:

int converte (char a){
    int num;
    int num_intermediario;
    char intermediario[2];
    intermediario[1]='\0';

    for (int x=0;a[x]!='\0';x++){
        intermediario[0]=a[x];
        num_intermediario=atoi(intermediario);
        num=num+num_intermediario;
    }
    return(num);
}

E agora está me dando um erro falando que "a" não é array, toda char não é um array ate encontrar o limitador de quantidade ou um '\0' ?

E como conserto a função com as bibliotecas strings para funcionar sem usar ponteiros essa é a lista de exercícios 7 - funções ponteiros é a lista 9.  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.. toda string é uma array de char... Char é Char.. apenas um caracter... não um array...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@bngomes Erro da minha parte então, tirei essa conclusão por dedução já char tem tamanho 1 e as vezes ao criar uma string uso: 

char c ="exemplo";

Esse código funciona recebe maior quantidade do que a prevista, e o que termina a string é um '\0'.

Mais enfim sabe consertar o primeiro script com uso da biblioteca string? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para deixar mais claro é char* e não char. A diferença entre um ponteiro a char(char*) e um vetor, é que um vetor pode ser reutilizado, e um ponteiro de char não.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×