Olá Pessoal,
Estou estudando C e estou encontrando o seguinte erro ao compilar meu código:
exercicio2.c: In function maiuscula': exercicio2.c:94: warning: passing arg 1 oftamanho_string’ discards qualifiers from pointer target type
exercicio2.c: In function reverso': exercicio2.c:129: warning: passing arg 1 oftamanho_string’ discards qualifiers from pointer target type
O código é o seguinte:
#include<conio.h>
#include<stdio.h>
#include<string.h>
char caixaalta(char);
char caixabaixa(char);
char *reverso (const char *string);
int tamanho_string (char *string);
int maiuscula (const char *origem, char *destino);
int palindromo (char *string);
int main(void)
{
char string[50];
char *string_reversa, *destino;
int opcao,i,tam_string, num_maiusculo;
do {
printf ("\nDigite a string: ");
gets (string);
printf ("\nCalcule e mostre:\n");
printf ("\n\t1. o tamanho da string.");
printf ("\n\t2. o reverso da string.");
printf ("\n\t3. se a string eh um palindromo.");
printf ("\n\t4. a string lida com todas as letras convertidas para maiusculo");
printf ("\n\t e a quantidade de caracteres modificados.");
printf ("\n\nOpcao: ");
scanf("%d",&opcao);
tam_string=tamanho_string(string);
for(i=0;i<tam_string;i++)
{
destino[i]=caixaalta(string[i]);
}
num_maiusculo=maiuscula(string, destino);
switch(opcao)
{
case 1:
printf("\nO tamanho da string eh igual a %d\n", tamanho_string(string));
break;
case 2:
string_reversa=reverso(string);
printf("\nA String reversa eh: %s\n", string_reversa);
free(string_reversa);
break;
case 3:
if (palindromo(string)==1)
printf("\nA string %s eh um palindromo\n",string);
if (palindromo(string)==0)
printf("\nA string %s nao eh um palindromo\n",string);
free(string_reversa);
break;
case 4:
printf("\nA string em maiusculo eh %s \nE o numero de caracteres modificados eh %d\n", destino, num_maiusculo);
break;
}
printf("\nTecle ESC para sair ou qualquer tecla para continuar");
gets(string);
}while(getch()!=27);
return 0;
}
int palindromo (char *string)
{
int i, tam_string, chave;
char *string_reversa;
string_reversa=reverso(string);
tam_string=tamanho_string(string);
for(i=0;i<tam_string;i++)
{
string[i]=caixabaixa(string[i]);
string_reversa[i]=caixabaixa(string_reversa[i]);
if(string[i]!=string_reversa[i])
chave=0;
else chave=1;
}
if(chave==1) return 1;
else return 0;
}
int maiuscula (const char *origem, char *destino)
{
int i, tam_string, conta=0;
tam_string=tamanho_string(origem);
for (i=0; i<tam_string; i++)
{
if (origem[i]>=‘a’ && origem[i] <=‘z’) conta=conta+1;
}
return conta;
}
char caixaalta(char letra)
{
if (letra>=‘a’ && letra <=‘z’) return(letra+‘A’-‘a’);
return (letra);
}
char caixabaixa(char letra)
{
if (letra>=‘A’ && letra <=‘Z’) return(letra+‘a’-‘A’);
return (letra);
}
int tamanho_string (char *string)
{
int conta;
for (conta = 0; string[conta]; conta++);
return conta;
}
char *reverso (const char *string)
{
int i, tam_string;
char *string_rev;
tam_string=tamanho_string(string);
string_rev=(char *) malloc((tam_string+1)*sizeof(char));
for (i=0;i<tam_string;i++)
{
string_rev[i]=string[tam_string - i - 1];
}
string_rev[i] = ‘\0’;
return string_rev;
}
Alguém poderia me ajudar?