Jump to content
gotak

Duvida declarar string

Recommended Posts

gotak

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)  :)

Share this post


Link to post
Share on other sites
KiNgPiTo

Tens o strcpy:

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

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

Share this post


Link to post
Share on other sites
gotak

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>

Share this post


Link to post
Share on other sites
gotak

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    🤔

Share this post


Link to post
Share on other sites
KiNgPiTo

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();

}

Share this post


Link to post
Share on other sites
edsousa

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


Tharis Fan ClubMay Tharis bless you

Share this post


Link to post
Share on other sites
gotak

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

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

Share this post


Link to post
Share on other sites
KiNgPiTo

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.