Olá a todos, esse foi uma das maiores dúvidas que tinha, como fazer isso sem a necessidade de usar a função strupr(), que não existe no Linux diga-se de passagem, então resolvi combinar a função toupper(), que converter letras em maiúscula com um loop, para converter letra por letra, criei um código bastante simples abaixo. Salve e compile.
//EXEMPLO DE CONVERSAO DE STRINGS MINUSCULAS EM MAIUSCULAS EM C.
#include <stdio.h>
#include <ctype.h>// necessaria para toupper().
int main()
{
int i;
char palavra[20];
//Recebe a string.
printf("Digite uma palavra: ");
scanf("%19[^\n]", palavra);
//loop que efetua a conversao de letra por letra.
for(i=0;palavra[i]!='\0';i++)
{
palavra[i]=toupper(palavra[i]);
}
//Imprimi o resultado.
printf("%s\n",palavra);
return 0;
}
Saída:


scanf(“%19[^\n]“, palavra);
oque é %19 e [^\n] ?
@Paulo
O %[] indica que o scanf ira pegar um conjunto de caracteres, com o ^\n ele ira pegar todos os caracteres digitados até encontrar um \n(a tecla enter ser pressionada) combinando %[^\n] podemos pegar todos os caracteres digitados incluindo espaços :)
Se colocar um numero após o % ira indicar a quantidade de caracteres que o scanf ira aceitar, pelo vetor de char ter espaço para 19 caracteres, coloco %19[^\n] assim o código fica mais seguro contra possíveis bugs. Caso o usuário digite mais de 19 caracteres, qualquer caractere que vir após o 19º não será capturada pelo scanf.
[]‘s
Entendi, legal, valew!!!
Muito bom, agora deixo a proposta de implementar a função toupper().
Continuação de bom trabalho.
@pem
Hahaha boa xD, vou tentar, mas é uma excelente proposta :D
[]‘s
lo/
muito bom!
Opa, valeu cara!!!
Como converter de maiúsculas pra minúsculas?
@André Lima
Olá André, você pode ver como fazer o processo contrário (converter de maiuscula para minuscula) aqui.
[]‘s
tipow a biblioteca string.h tem uma funcao propria que possibilita converter a string toda sem a necessidade de um for para pesar o programa !!!
Você leu o texto do post?
Caso não tenha lido em resumo: Não existe a função strupr() no Linux.
[]‘s
nao é stupr(); essim strupr(); e sim ela nao existe no linux porem pode ser usada no windows.
Como disse no inicio do artigo, a biblioteca strupr() não existe no Linux.
[]‘s
usei o loop e os caracteres ficaram todos e maiúsculas porem ao gerar um arquivo de texto(.txt)
o programa esta imprimindo(fprintf) caracteres estranhos antes dos caracteres convertidos no loop.
oque poderia ser feito para corrigir isso?
Poste o código no http://pastebin.com/ para que eu passa analisar.
[]‘s
ops..foi mal pelo atrazo..
analisei com mais atenção o meu codigo
e consegui resolver o problema..;
mesmo asiim valeu…
parabens pelo blog..
é um otimo apoio pra quem ta comessado na area…
cara como resolveria isso?
“Fazer um programa para ler uma frase, esta frase
representa o nome completo de uma pessoa separada
por espaços, formatar e escrever esta frase para que
somente a primeira inicial das palavras seja em letra
maiúscula e as demais em letra minúscula.”
Sim, é muito simples, basta fazer um loop percorrer a string, e quando encontrar um caracter em branco (estamos partido do pre-suposto que a string terá o padrão que foi apresentado no comentário), quando encontrar um caracter em branco basta pegar o próximo carácter fique em maiúsculo, e os demais fiquem em minusculo até que encontre outro espaço em branco ou atinga o final da string.
Agora a parte de código fica pro sua conta, já lhe dei o peixe :)
[]‘s
Leia um vetor de 16 posições de inteiros e imprima-os na Tela. Após isto, troque os 08 primeiros valores pelos 08
últimos valores. Repita a impressão do vetor.
int vetor[16];
int i;
int aux;
for(i=0;i<16;n++){ \\lê o vetor
printf("Informe a %d posição do vetor: ",(i+1));
scanf("%d"),vetor[i];
}
printf("\n\n");
for(i=0;i<16;i++){ \\mostra o vetor informado
printf("%d \t",vetor[i];
}
printf("\n\n");
for(i=0;i<8;i++){ \\troca as posições
aux=vetor[i];
vetor[i]=vetor[i+8];
vetor[i+8]=aux;
}
printf("\n\n");
for(i=0;i<16;i++) \\imprime o vetor trocado
printf("%d \t",vetor[i]);
printf("\n\n\n");
**correção
na linha de leitura de valores para o vetor:
scanf(“%d”),vetor[i];
deve ser substituido por:
scanf(“%d”,&vetor[i]);
valeu