Ir ao conteúdo
  • Cadastre-se

C Manipulação com Strings em C


Posts recomendados

Uma maneira seria assim.

#include <stdio.h>

int main(void)
{
    char str[256] = "Imposto", final[256];
    sprintf(final, "%s e roubo!", str);

    printf("\n%s", final);
    getchar();
    return(0);
}

 

Mas se for um trabalho de faculdade creio eu que o certo seria manipular as letras no vetor.

Link para o comentário
Compartilhar em outros sites

@kginsim é mexer com vetores

o que eu estou tentando fazer é uma coisa parecida com isto, mas não me dá o output que eu quero.

estou tentando fazer isso:

r 2 ola tudo bem?

output: 

r2 m?ola tudo be

 

mas o codigo que eu fiz não faz isso, mas sim isso:

r 2 ola tudo bem?

output:

r 2 ola tudo bem?ola tudo bem?

mas n quero isso.

 

#include <stdio.h>
#include <string.h>
#define LETRAS 166
int main ()
{
    char caracter;
    int nCarater;
    char texto[LETRAS];
    char texto_copiado[LETRAS];
    char direita;
    printf(" Insira um carater (r,h,q), depois um numero, depois o texto:\n");
    scanf("%c %d %[^\n]s", &caracter, &nCarater, texto);

    
        if(nCarater>0)
        {
            texto_copiado[LETRAS] = texto[LETRAS] >> nCarater;
            strcpy(texto_copiado, texto);
            printf("%c %d %s %s", caracter, nCarater, texto_copiado,texto);
                
        }else if(nCarater<0)
        {
            texto_copiado[LETRAS] = texto[LETRAS] << nCarater;
            strcpy(texto_copiado, texto);
            printf("%c %d %s %s.", caracter, nCarater, texto_copiado,texto);
        }
    
    return 0;
}

 

@Midori sim é isso mesmo que  eu quero fazer, poderia dar uma olhada no meu codigo??

Link para o comentário
Compartilhar em outros sites

@catherineprokhorov Para facilitar use o operador modulo, aí o índice do seu vetor vai ficar assim:

 

(contador + (tamanho - deslocamento)) % tamanho.

 

A variável contador é o incremento do seu loop; tamanho é o retorno de strlen e deslocamento o valor numérico como o 4 do seu exemplo.

 

Então p.ex se for apenas para mostrar o resultado na tela poderia ser assim,

#include <stdio.h>
#include <string.h>

int main(){
    char frase[] = "ola tudo bem?";
    int D = 2;
    int T = strlen(frase);
    
    for(int i = 0; frase[i] != 0; i += 1){
        printf("%c", frase[(i + (T - D)) % T]);
    }
    return 0;
}

 

 

 

Link para o comentário
Compartilhar em outros sites

@catherineprokhorov Não é possível  você fazer um shift right (rolar a direita) em vetores, você teria que implementar isso.

#include <stdio.h>

#define T_STR 256

enum direcao
{
    ESQUERDA,
    DIREITA
};

void
rolaString(char *str, enum direcao direcao, unsigned short quantidade);

int main(void)
{
    char str[256] = "Imposto e roubo!";

    rolaString(str, DIREITA, 7);

    printf("\n%s", str);
    getchar();
    return(0);
}

void
rolaString(char *str, enum direcao direcao, unsigned short quantidade)
{
    char tmp[T_STR];
    unsigned short tamanho_str, cont, aux;

    for (tamanho_str = 0; str[tamanho_str]; tamanho_str++);

    switch (direcao) {
        case ESQUERDA:
            break;
        case DIREITA:
            if (quantidade < tamanho_str) {
                /* Copia a primeira parte */
                for (cont = tamanho_str-quantidade, aux = 0; str[cont]; cont++, aux++) {
                    tmp[aux] = str[cont];
                }

                /* Copia a segunda parte */
                for (cont = 0; cont < tamanho_str-quantidade; cont++, aux++) {
                    tmp[aux] = str[cont];
                }

                tmp[tamanho_str] = '\0';
                for (cont = 0; tmp[cont]; cont++) {
                    str[cont] = tmp[cont];
                }
            }
            break;
    }
}

 

Eu fiz esse exemplo de como seria para a rolar a direita.

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

@catherineprokhorov As variáveis que iniciei é só passar como argumento para scanf,

 

#include <stdio.h>
#include <string.h>

int main(){
    char frase[100];
    int D;
    int T;
    
    printf("Frase: ");
    scanf("%[^\n]s", frase);
    printf("Deslocamento: ");
    scanf(" %d%*c", &D);
    T = strlen(frase);
    
    for(int i = 0; frase[i] != 0; i += 1){
        printf("%c", frase[(i + (T - D)) % T]);
    }
    return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!