Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com string


viciado

Pergunta

14 respostass a esta questão

Posts Recomendados

  • 0

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;
}

Link para o comentário
Compartilhar em outros sites

  • 0

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;
}

Link para o comentário
Compartilhar em outros sites

  • 0

#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.

Link para o comentário
Compartilhar em outros sites

  • 0

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;
}

Link para o comentário
Compartilhar em outros sites

  • 0

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;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Verifique se o primrio e o último caractere são espaços. Se for, desconsidere-os

Para 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

Link para o comentário
Compartilhar em outros sites

  • 0

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;
}

Link para o comentário
Compartilhar em outros sites

  • 0

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;
}

Link para o comentário
Compartilhar em outros sites

  • 0

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;
}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...