Ponteiro de cordas em c

Ponteiro de cordas em c
Uma string não passa de uma matriz de caracteres que contém todos os tipos de caracteres de valores de tipo de dados. Através da String, podemos acessar qualquer personagem com seu índice não. de uma maneira muito rápida. Hoje nosso tópico é que podemos acessar a string através de um ponteiro. É chamado de ponteiro de cordas. Vamos explicar como o ponteiro nos ajudará a acessar todo o índice de uma string.

Acessando a string através do ponteiro

Char Pointer:

  • String é armazenada em uma matriz de char.
  • Char s [10] = "Computador",
  • Char Pointer pode apontar para char bloco.
  • Char *p; p = & s [0], p+1 = 1001, representa o endereço do próximo bloco.

*(p+i) = s []

Explicação

No diagrama acima, suponhamos que desenhemos um ponteiro que seja um personagem no tipo e declare uma string cujo endereço base é 1001. Portanto, o endereço do próximo bloco é 1002. Porque cada valor de tipo de caractere contém 1 byte na memória, se o endereço base do 1st O bloco é 1001, então o endereço do próximo bloco deve ser 1002 e assim por diante. Agora, o ponteiro P mantém o endereço do 1st Bloco significa o endereço base dessa string específica. Isso significa que o valor de um ponteiro é 1001. Através deste endereço base, podemos acessar todos os elementos da string facilmente.

String constante

  • String literal = string constante // string
  • Printf ("computador"); [que escrevemos em ““ Isso é chamado de string constante ou literal ou string]
  • Char s [10] = "computador";
  • Printf (s); Somente Write S significa que representa o endereço do primeiro bloco da matriz s []. Isso significa aqui que passamos 1000 como um endereço do primeiro bloco de matrizes [].
  • Strlen (s); Passamos o endereço do primeiro bloco de matrizes [].
  • Strlen (& s [0]) = strlen (s) = strlen ("computador");

Exemplo 1

Neste exemplo, podemos ver através do ponteiro que podemos calcular o comprimento total da corda.

#incluir
comprimento int (char *p)

int conting = 0;
enquanto ( *p != '\ 0')

contagem ++;
p ++;

contagem de retorno;

int main ()

Char Str [100]; // declarando uma string.
int l;
printf ("\ n digite qualquer string:");
recebe (str);
l = comprimento (str); // comprimento da corda.
printf ("\ n o comprimento da string dada: %d \ n", l);
retornar 0;

Saída

Explicação

Aqui definimos nomes de funções comprimento (). Nesta função, usamos um pouco de loop, onde é dada uma condição de que o loop não será encerrado até o ponteiro *p pode acessar todos os elementos da string. Na função Main (), declaramos uma string chamada str [] para pegar uma string do usuário. Agora passamos pela sequência dentro do parêntese da função de comprimento () para calcular o comprimento da string.

Exemplo 2

Aqui veremos através do ponteiro, podemos reverter uma string.

#incluir
vazio reverso (char [], int, int);
int main ()

Char Str [100], Temp; // declarando uma string.
int i, j, len;
printf ("\ n por favor digite qualquer string:");
recebe (str);
len = strlen (str);
reverso (str, 0, len - 1); // revertendo a string.
printf ("\ n string após reversão = %s \ n", str);
retornar 0;

Void reverso (char str [], int i, int len)

char temp;
temp = str [i];
Str [i] = str [len - i];
Str [len - i] = temp;
if (i == len/2)

retornar ;

reverso (str, i + 1, len);

Saída

Explicação

Aqui dentro da função principal (), declaramos uma string chamada str [] e pegamos uma string do usuário com a ajuda da função gets (), exceto que definimos uma função denominada reverter () Para reverter a string através de um ponteiro que pode acessar os valores de str [].

Exemplo 3

Aqui veremos através do ponteiro, podemos copiar uma string.

#incluir
/ * Prototipo de função */
cópia vazia (char S2 [30], char S1 [30]);
/* Função principal */
int main ()

Char S1 [30], S2 [30];
int i;
printf ("Enter String: \ n");
recebe (S1);
cópia (S2, S1);
printf ("string copiada é: %s \ n", s2);
retornar 0;

/* Definição da função*/
Cópia Void (CHAR S2 [30], CHAR S1 [30])

int i;
para (i = 0; s1 [i] != '\ 0'; i ++)

s2 [i] = s1 [i];

s2 [i] = '\ 0';

Saída

Explicação

Aqui dentro da função principal (), declaramos duas cordas denominadas s1 [] e s2 [] e pegamos uma string do usuário com a ajuda da função get () na string s1 []. Exceto que definimos uma função chamada cópia de () Para copiar a string de S1 [] para string s2 [] através de um ponteiro que pode acessar os valores da string s1 [].

Exemplo-4

Aqui veremos através do ponteiro que podemos comparar uma string a outra string.

#incluir
// função que compara a sequência de duas
Void Comparestrings (char* x, char* y)

Int flag = 0;
// itera um loop até o fim
// de ambas as cordas
enquanto (*x != '\ 0' || *y != '\ 0')
if ( *x == *y)
x ++;
y ++;

// Se dois caracteres não são os mesmos
// Imprima a diferença e saída
caso contrário, se (( *x == '\ 0' && *y != '\ 0')
|| (*x != '\ 0' && *y == '\ 0')
|| *x != *y)
sinalizador = 1;
printf ("Strings desiguais \ n");
quebrar ;


// Se duas cordas são exatamente mesmas
if (sinalizador == 0)
printf ("Strings iguais \ n");


// Código do driver
int main ()

// dado strings s1 e s2
char s1 [20] = "python";
char s2 [20] = "dsa";
// Chamada de função
Comparestrings (S1, S2);
retornar 0;

Saída

Explicação

Aqui dentro da função principal () declaramos duas cordas denominadas S1 [] e S2 []. Em S1 [], atribuímos um valor chamado “Pitão" e em S2 [] nomeado “DSA. ““ Exceto que definimos uma função chamada comparar () Para comparar a sequência de S1 [] e String de S2 [] através do ponteiro, que pode acessar os valores de String S1 [] e String S2 [] para comparar as duas seqüências entre si. Como duas cordas são diferentes aqui, a saída da string é um string desigual.

Conclusão

Neste tópico, abordamos todos os aspectos do ponteiro de cordas muito seriamente para entender o conceito de ponteiro de cordas. É muito compreensível que, através de um ponteiro, possamos acessar facilmente todo o índice da string muito rápido e fácil de tornar o código robusto.