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

bertolo

dúvida básica

7 mensagens neste tópico

#include <stdio.h>

char str(char *v){
int i,a;
for(i=0,a=0;v[i]!='\0';i++){
a=v[i];
if(a<=122 && a>=97)
{v[i]=a+32;}
}
printf("Final1:%s\n",v);
}



int main(void){
char v[150];int a;
printf("String:");
gets(v);
printf("String:%s\n",v);
a=v[1];printf("%d\n",a);
str(v);
printf("Final2:%s\n",v);
return 0;
}

era suposto isto por tudo em maiusculas, nao mete nao sei porque. fico à espera das vossa sugestões. [[]] um obrigado adiantado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não fazes nenhum return na função char str(char *v), nem sei como não te deu erro de compilação...

Mete um return do v :D

abraços, HecKel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E a função das duas uma: ou é void (e funciona na mesma pois alteras por referência) ou char * (e não char) e retorna o v.

O teu maior erro é aqui:

if(a<=122 && a>=97)

{v[ i ]=a+32;}

Acabei de acordar, mas se o sono não me trai as letras maiúsculas têm código ASCII mais baixo que as minúsculas, logo devias estar subtrair em vez de somar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu testei o codigo ascii antes com um pequeno programa. Ainda assim ele devia devolver um caracter qq. Acho que nao foi nada das coisas que me disseram pq a funçao pode ser encarada como um procedimento pode nao retornar nada (ainda assim acho q tenho de la por o void, LOL ja vejo ). Mas ela aqui faz logo me*** a=v[1].

lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo o que te dissemos são erros do teu programa sim.

Podes verificar a tabela ASCII aqui, não deves somar mas sim subtrair:

http://game-editor.com/tutorials/images/ascii.jpg

De resto não consigo perceber qual a tua ideia. Final1 e Final2 estão a imprimir a mesma string.

Por último, se não retornas nenhum valor a função devia ser declarada como void.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

void str(char v[]){
int i,a;
for(i=0,a=0;v[i]!='\0';i++){
a=v[i];
if(a<=122 && a>=97)
v[i]=a-32;
}
printf("Final:%s\n",v);
}



int main(void){
char v[150];
printf("String:");
gets(v);
printf("String que gravou:%s\n",v);
str(v);
return 0;
}

EU AMO-VOS!!! Obrigadão mais uma vez.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
int main (void){
char c;
for(c=1;c<=126;c++){
printf("Carac.:%c CodASCI:%d\n",c,c);}
return 0;
}

Este programa dá-vos os codigos ASCI desde o caracter 1 até ao 126. Não dá o zero pq voces ja sabem q o zero é o end of file. [[]] mais uma x obrigado

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