char recebe char

1. char recebe char

Guilherme de Matos Battista
root@guilherme

(usa Ubuntu)

Enviado em 11/08/2010 - 01:46h

Estou estudando C e não consigo fazer uma variável char receber uma constante char.

#include <stdio.h>
#define A "Teste"

int main()
{
char x;
x=A;
printf ("%s", x);
return 0;
}


Isso me retorna um monte de erros na hora da compilação. Como eu posso fazer para, nesse caso, fazer "x" retornar o valor inserido na constante "A", que nesse caso, seria a palavra "Teste"?

Notem que, se eu escrever algo como:

#include <stdio.h>
#define A "Teste"

int main()
{
printf ("%s", A);
return 0;
}


Ele compila liso e sem erros, e me retorna a palavra "Teste" ao ser executado.

Ficaria imensamente agradecido se puderem me ajudar.


  


2. Já descobri.

Guilherme de Matos Battista
root@guilherme

(usa Ubuntu)

Enviado em 11/08/2010 - 01:59h

O erro estava na hora de declarar a variável x.

Errado:

#include <stdio.h>
#define A "Teste"

int main()
{
char x;
x=A;
printf ("%s", x);
return 0;
}



Certo:

#include <stdio.h>
#define A "Teste"


int main()
{
char * x;
x=A;
printf ("%s", x);
return 0;
}


Notem o maldito asterisco entre o "char" e o "x".


3. Resposta

Lucas Lira Gomes
llg

(usa Arch Linux)

Enviado em 11/08/2010 - 02:08h

O problema é que você estava atribuindo uma string à um char, lembrando que um "nome" para uma string. é na verdade, um ponteiro para um array de chars. Para resolver, basta colocar assim:

int main()
{
char *x; // String em C nada mais é do que um ponteiro para um array de chars que termina em '{TTEXTO}'
...

Dica: Evite #define var algumacoisa, prefira usar const para deixar o código mais légivel.

Espero ter ajudado, Lucas Lira Gomes




4. Re: char recebe char

André
andrezc

(usa Debian)

Enviado em 11/08/2010 - 08:46h

O que você procura chama-se ponteiro! O que um ponteiro faz é apontar para outra variável.

http://www.cplusplus.com/doc/tutorial/pointers/





5. Re: char recebe char

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 17/08/2010 - 17:18h

Prefira fazer declarações do tipo

char A[]="Teste";

No momento de copiar conteúdo de variáveis, faça da seguinte maneira:

char *cp;//Ponteiro para cópia do endereço da primeira posição de "A"
while(*cp!= '{TTEXTO}')
{
printf("%c", *cp);
cp++
}

Embraces!





6. Re: char recebe char

Tadzio Buscácio
Tadzio

(usa Linux Mint)

Enviado em 17/08/2010 - 18:25h

cuidado pois vocês estão misturando C com C++;

string em C termina com '{TTEXTO}'. na classe String, depende de como for implementada.
não adianta citar referencia de cplusplus...

@Ezequias Rocha, você não alocou memória pro *cp.
e faltou cp = a.
repito, C não é C++...

@root@guilherme: pra fazer o que você basta:
#include <stdio.h>
#define A "Teste"
int main() {
char x[]=A;
// x=A; é inválido pois não existe atribuição direta com strings. aliás operação nenhuma. (C é C, não tem sobrecarga de operador).
printf ("%s", x);
return 0;
}



7. Re: char recebe char

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 18/08/2010 - 08:28h

Refazendo..., o programa anterior estava imcompleto

#include <stdio.h>

void main(){
char A[] = {"Teste"};
char *cp;
cp = A;

while(*cp != '{TTEXTO}')
{
printf("%c", *cp);
cp++;
}
}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts