Programa não compila!!

1. Programa não compila!!

Hudson Orsine Assumpção
brevleq

(usa Slackware)

Enviado em 23/08/2006 - 16:16h

Tô fazendo um programinha pra imprimir umas frases usando strings de outra função, porém não consigo compilar:

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

int main(){
armazenamento();
return(0);
}

int armazenamento(){
register short int cont;
char resp[10];
for (cont=0;cont<=3;cont++){
if (cont==1){
resp="register";
}
else{
if (cont==2){
resp="static";
}
else{
if (cont==3){
resp="extern";
}
}
}
acesso(resp);
}
return(0);
}
int acesso(char r[10]){
register short int cont2;
for (cont2=0;cont2<=3;cont2++){
if (cont2==1){
printf("%s const\n",r);
}
else{
if (cont2==2){
printf("%s volatile\n",r);
}
else{
if (cont2==3){
printf("%s const volatile\n",r);
}
}
}
}
return(0);
}

segundo o compilador os erros ocorrem nas linhas 14,18 e 22 acusando incompatible types in assignmen. Sou iniciante em c, o q eu estou fazendo de errado??



  


2. Re: Programa não compila!!

Tiago Barcellos Peczenyj
pacman

(usa Ubuntu)

Enviado em 23/08/2006 - 17:11h

em primeiro lugar, vc não pode fazer assim:
resp="register";

resp é um array de caracteres terminados em 'null', logo vc deve usar uma função que manipule strings como a strcpy ou sprintf

ex:
sprintf(resp,"register");

a forma que vc usa pode ser usa APENAS quando vc inicializa uma string.

outra coisa é que vc passa uma string mas faz comparações com uma variavel inteira... acho que deverias repensar o seu programa... ;-)


3. Re: Programa não compila!!

Felipe Abella
FelipeAbella

(usa Debian)

Enviado em 23/08/2006 - 17:36h

Parece que seu problema eh com string.

Por isso eu recomendo que vc baixe um tuto de c, e (re)leia a parte de string, array(já que string é um array de char) e a parte de ponteiros(além de estar bem ligado com array, acho importante para entender bem como funcionam as strings).

Mas um breve resumo:

strings são arrays de char:

char teste[] = "testando";

eu nao coloquei numero entre os [] pq o compilador calcula baseado em "testando"

veja como fica a str na memoria

[t][e][s][t][a][n][d][o][{TTEXTO}]
1 2 3 4 5 6 7 8 9 = 9 chars

todas as str tem um {TTEXTO} para indicar o final dela.

e veja este exemplo:

char* str = "teste";

perfeitamente aceitavel e pode ser usado como qualquer str, por isso vc deve reler ponteiro tb.

este ponteiro acima, vai apontar para uma parte da memoria que é o banco de strings. Por isso deve ter cuidado com strings. Por que pode até corromper esse bando de strings.


UM BOM TUTO:
http://ead1.eee.ufmg.br/cursos/C/home.html

Boa Sorte.


4. Re: Programa não compila!!

Felipe Abella
FelipeAbella

(usa Debian)

Enviado em 23/08/2006 - 17:37h

oxi, esses {TEXTO}, era pra ser "\" "0"!


5. eh isso q vc quer fazer?

Rick
rick2600

(usa Slackware)

Enviado em 23/08/2006 - 23:01h

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

int armazenamento(void);
int acesso(char r[10]);

int main(void) {
armazenamento();
return(0);
}

int armazenamento(void) {
register short int cont;
char resp[10];
for (cont=0;cont<=3;cont++) {
if (cont==1) strcpy(resp,"register");
else if (cont==2) strcpy(resp,"static");
else if (cont==3) strcpy(resp,"extern");
}
acesso(resp);
return(0);
}

int acesso(char r[10]) {

register short int cont2;
for (cont2=0;cont2<=3;cont2++) {
if (cont2==1) printf("%s const\n",r);
else if (cont2==2) printf("%s volatile\n",r);
else if (cont2==3) printf("%s const volatile\n",r);
}
return(0);
}



6. Valeu!!

Hudson Orsine Assumpção
brevleq

(usa Slackware)

Enviado em 24/08/2006 - 12:58h

minha principal dúvida era se eu poderia fazer isso:

resp="joão"

certo não é assim! Usa-se o sprintf!
Obrigado pela ajuda!!

E quanto ao programa é coisa simples só pra exibir todas as maneiras de se declarar uma variável na linguagem C, acontece q meu professor disse q o primeiro a entregar esse exercício vai ganhar 20 pontos e ficará livre da prova!!
Esse é um pequeno trecho, se vcs puderem me dar dicas de como melhorar o programa ficarei agradecido!!

flw






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts