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

gotak

Duvida declarar string

14 mensagens neste tópico

bem como tinha dito, tenho andado a fazer uns exercícios de C, mas as dúvidas são muitas mas já consegui fazer este bocado de código:

#include <stdio.h>

// 1ª Tarefa - 1
#define MAX 250
#define MAXTEXTO 200

// Protótipos das funções ------------------------------------------>

// <------------------------------------------ Protótipos das funções

//1ª Tarefa - 2
void main ()
{
//1ª Tarefa - 2
char texto [] ="The beginning of wisdom is to call things by their right names. (Chinese proverb)";

int restos [MAX] = { 0 , 0 , 1 , 2 , 0 , 4 , 5 , 2 , 7 , 0 , 8 , 10 , 3 , 12 , 10 , 10 , 12 , 16 , 3 , 10 , 19 , 8 , 20 ,
10 , 0 , 16 , 7 , 26 , 18 , 10 , 2 , 26 , 1 , 9 , 12 , 5 , 34 , 28 , 22 , 16 , 10 , 4 , 40 , 35 ,
30 , 25 , 20 , 15 , 10 , 5 , 0 , 46 , 42 , 38 , 34 , 30 , 26 , 22 , 18 , 14 , 10 , 6 , 2 , 61 , 58 ,
55 , 52 , 49 , 46 , 43 , 40 , 37 , 34 , 31 , 28 , 25 , 22 , 19 , 16 , 13 , 10 , 7 , 4 , 1 , 82 , 80 ,
78 , 76 , 74 , 72 , 70 , 68 , 66 , 64 , 62 , 60 , 58 , 56 , 54 , 52 , 50}
// 1ª Tarefa - 3
char texto_copia[MAXTEXTO];
}

Só que encalhei na seguinte pergunta:

Implemente uma função que copie a string texto para a string texto_copia.

A função deverá receber duas strings e copiar o conteúdo da primeira string para a segunda string

Se me pudessem ajudar agradecia !

(Enganei-me Ferreira, peço desculpa)  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens o strcpy:

Para copiares o conteudo do 'texto' para 'texto_copia' usas: strcpy(texto_copia, texto);

Nota: Tens de declarar: #include <string.h>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, mas não querendo ser chato, não haverá maneira possível de fazer isso, sem a biblioteca <string.h>, queria unicamente usar a biblioteca <stdio.h>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes definir a função strcpy manualmente (um ciclo em que copias caracteres até copiares um NUL).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sem utilizar a <string.h>  ?

declaro uma função e faço um sub-programa ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por exemplo:

#include <stdio.h>


int pesq_sequencial(const char str[], char c); // declarei esta funçao, e utilizo-a lá em baixo para o sub-programa

void main ()

{
printf("Palavra: odivelas\n\n");
char c;
int i=0;
char s[]="odivelas";


printf("Escolha um caracter: \n");
scanf("%c", &c);

printf("O caracter %c esta na posicao: %i da string: %s\n", c, pesq_sequencial(s, c), s);

}

int pesq_sequencial(const char str[], char c)// isto é o sub-programa
{
int i=0;

while (str[i]!=c)
{
	if(str[i]=='\0')
		return -1;

	i++;
}
return i;
}

Nao sei se estou certo, mas penso que sim    :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crias um ciclo que lê o array enquanto este for diferente de '/0':

#include <stdio.h>

#define MAX 250
#define MAXTEXTO 200

char *copiarStrings(char *destino, const char *origem)
{
   char *retorno = destino;

   for(; (*destino = *origem) != '\0'; ++destino, ++origem);

   return retorno;
}


void main ()
{
        
        char texto [] ="The beginning of wisdom is to call things by their right names. (Chinese proverb)";

        int restos [MAX] = { 0 , 0 , 1 , 2 , 0 , 4 , 5 , 2 , 7 , 0 , 8 , 10 , 3 , 12 , 10 , 10 , 12 , 16 , 3 , 10 , 19 , 8 , 20 ,
        10 , 0 , 16 , 7 , 26 , 18 , 10 , 2 , 26 , 1 , 9 , 12 , 5 , 34 , 28 , 22 , 16 , 10 , 4 , 40 , 35 ,
        30 , 25 , 20 , 15 , 10 , 5 , 0 , 46 , 42 , 38 , 34 , 30 , 26 , 22 , 18 , 14 , 10 , 6 , 2 , 61 , 58 ,
        55 , 52 , 49 , 46 , 43 , 40 , 37 , 34 , 31 , 28 , 25 , 22 , 19 , 16 , 13 , 10 , 7 , 4 , 1 , 82 , 80 ,
        78 , 76 , 74 , 72 , 70 , 68 , 66 , 64 , 62 , 60 , 58 , 56 , 54 , 52 , 50};
        
        char texto_copia[MAXTEXTO];

	copiarStrings(texto_copia, texto);

	printf("%s", texto_copia);

	getchar();

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

KiNg, não abuses tá bem?

E já agora, o teu código é um pouco mais ineficiente


char *strcopy(char *dest, const char *orig){

  int i=0;
  while(orig[i]!='\0'){
     dest[i]=orig[i];
     i++;
  }
  dest[i]='\0';
  return dest;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

edsousa, como disse nao posso utilizar, a biblioteca <string.h>

mas obrigado a todos, já avancei mais um bom bocado no programa  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

edsousa, como disse nao posso utilizar, a biblioteca <string.h>

mas obrigado a todos, já avancei mais um bom bocado no programa  ;)

E nem a minha função, nem a do edsousa utilizam a biblioteca string.h

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