• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

filipemm

Warning de string --> %s

4 mensagens neste tópico

Boas..

Tenho o seguinte código:

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

main ()
{
int n;
printf ("Valor: ");
scanf ("%d", &n);

char string[1000];
printf ("String inicial: ");
scanf ("%s", string);

int x, asciiVal[1000], stringAux[1000];
for (x = 0; x < strlen (string); x++)
{
	asciiVal[x] = (int) string[x];
	asciiVal[x] += n;
	stringAux[x] = (char) asciiVal[x];
}
printf ("Resultado intermedio: %s\n", stringAux);

return 0;
}

O meu problema está no warning que dá no último printf:

4encriptacao.c:45: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int *’

E só apresenta o primeiro char da stringAux, ou seja só imprime o stringAux[0]...

O que eu pretendo é que imprima toda a string sem ser necessário fazer um for para imprimir caracter a caracter...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é porque stringAux é um int*, e o seu valor é obtido através de um cast de um int* para char.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lê o warning... %s expects type char* but argument 2 has type int *. Não é evidente? Queres mostrar uma string e estás a dar-lhe um array de inteiros...

Tens que declarar stringAux como vector de char e não te podes esquecer de colocar um caracter de terminação na última posição (i.e. '\0').

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é porque stringAux é um int*, e o seu valor é obtido através de um cast de um int* para char.

Ui... que nabo!! Como é que não reparei nisso?!!?

Obrigado!!

Desculpem a confusão...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora