viciado Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 1) Como receber uma frase e imprimir cada palavra da frase em uma linha diferente2) Como retirar os espaço excedentes no início e no fim da frase e entre as palavras Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 1. Troque os espaços por '\n'2. Crie uma nova string. Faça um loop que percorra a string inicial e copie para a nova string todos os caracteres diferentes de espaço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 10, 2008 Autor Denunciar Share Postado Dezembro 10, 2008 Como posso trocar os espaços por \n ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 Percorra a string, caractere por caractere, e troque por '\n' se o caractere corrente for um espaço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 10, 2008 Autor Denunciar Share Postado Dezembro 10, 2008 não entendi bem eu fiz assim mais imprime a mesma frase que digito#include <stdio.h> #include <stdlib.h> int main(void) { char frase[50]; printf("Digite uma frase\n"); gets(frase); int i; for(i=0;i<50;i++){ if(frase[i] == ' '){ printf("\n"); } } printf("\n %s \n",frase); system("PAUSE"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 Não use gets(). Use fgets()O contador não vai até 50. Vai somente até (strlen(frase) - 1)#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char frase[50]; int i, tam; printf("Digite uma frase\n"); fgets(frase, 50, stdin); tam = strlen(frase); for(i=0;i<tam;i++){ if(frase[i] == ' ') { frase[i] = '\n'; } } printf("\n %s \n",frase); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wendell93 Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char frase[50]; //variavel q vai recebe o tamanho da string int a; int i; printf("Digite uma frase\n"); gets(frase); //pega o tamanho... a=strlen(frase); for(i=0;i<=a;i++){ //ele ve se a frase[i] tem espaço em branco se tiver então ele coloka no espaço o '\n' if(frase[i] == ' ') { frase[i]='\n'; } printf("%c",frase[i]);}//como ele vai percorre a string caracter por caracter... system("PAUSE"); return 0; }Uma dica em vez do gets use fgets...t+ ae. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 10, 2008 Autor Denunciar Share Postado Dezembro 10, 2008 Obrigado pela ajuda.Tentei fazer o outro mais a resposta que eu obtenho são uns caracteres muito estranhos#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char frase[30]; printf("Digite uma frase \n"); fgets(frase, 30, stdin); char correcao[30]; int i; int tam = strlen(frase); for(i=0;i<tam;i++){ if(frase[i] != ' '){ frase[i] = correcao[i]; } } printf(" \n %s \n",correcao); system("PAUSE"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 Note que "frase" e "correcao" não podem usar o mesmo contador, uma vez que nem todos os caracteres de "farse" constarão em "correcao"#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char frase[30]; printf("Digite uma frase \n"); fgets(frase, 30, stdin); char correcao[30]; int i = 0, j = 0; int tam = strlen(frase); while(i < tam) { if(frase[i] != ' '){ correcao[j] = frase[i]; j++; } i++; } correcao[j] = ''; printf(" \n %s \n",correcao); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 10, 2008 Autor Denunciar Share Postado Dezembro 10, 2008 Obrigado. Tem como tirar os espaços excedentes no inicio e no fim da frase, só que entre as palavras manter apenas 1 espaço ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 Verifique se o primrio e o último caractere são espaços. Se for, desconsidere-osPara retirar o espaços excedentes entre palavras, faça assim: ao encontrar um espaço, verifique se o próximo é espaço também. Se for, desconsidere-o e incremente o contador que percorre a string Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 10, 2008 Autor Denunciar Share Postado Dezembro 10, 2008 Tentei esse codigo, a resposta que obtive foi uns caracteres estranhos denovo#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char frase[30]; printf("Digite uma frase \n"); fgets(frase, 30, stdin); char correcao[30]; int i; int tam = strlen(frase); for(i=0;i<tam;i++){ if(frase[i] = ' '){ i++; if(frase[i] != ' '){ frase[i] = correcao[i]; } } } printf(" \n %s \n",correcao); system("PAUSE"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 10, 2008 Denunciar Share Postado Dezembro 10, 2008 De novo, use contadores diferentes para cada string#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char frase[100], correcao[100]; int i = 0, j = 0, tam; fgets(frase, 100, stdin); tam = strlen(frase); while ( i < tam ) { correcao[j] = frase[i]; if ( frase[i] == ' ') { while (frase[i] == ' ') i++; } else { i++; } j++; } correcao[j] = ''; printf("%s\n", correcao); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 10, 2008 Autor Denunciar Share Postado Dezembro 10, 2008 Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 10, 2008 Autor Denunciar Share Postado Dezembro 10, 2008 Tentei fazer um que inverter a frase com a função strrev() mais o programa finaliza a tarefa antes de imprimir a frase invertida#include <stdio.h> #include <stdlib.h> int main() { char frase[50]; char inverter[50]; int i; int j = 0; printf("Digite uma frase \n"); fgets(frase, 50, stdin); int tam = strlen(frase); for(i=0;i<tam;i++){ inverter[j] = strrev(frase[i]); j++; } printf("\n \n %s \n \n",inverter); system("PAUSE"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
viciado
1) Como receber uma frase e imprimir cada palavra da frase em uma linha diferente
2) Como retirar os espaço excedentes no início e no fim da frase e entre as palavras
Link para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.