Eu acredito que nós cordas utilizados na vida, hoje eu quero falar um pouco pontos de conhecimento para explicar:
- constantes de strings e arrays de caracteres
- constantes string: char * arr, foi responsável por quatro bytes, não pode fazer alterações para somente leitura. Após a pluralidade de constantes string inicializados com o mesmo valor, eles apontam para o mesmo espaço de memória, ele vai ser igual.
- Disposição de caracteres: char arr [], com alguns bytes atribuídos vários bytes, '\ 0' um byte, pode ser alterado, se uma pluralidade de matriz de caracteres é inicializado para o mesmo valor, o sistema irá ser atribuído a cada espaço, por isso não vai apontar para o mesmo espaço de memória. espaços de solução alternativos
2. Substitua o espaço de cadeia
- Descrição do problema: Faça uma função implementada, cada um dos cadeia de substituição é "20%", por exemplo, digite "estamos felizes", a saída "nós% 20are% 20happy".
- Análise de Problemas: Do ponto de vista formal, o assunto é tratado após uma série de perguntas será mais longo, o início Eu gostaria de vir espaço de volta, o número atrás do primeiro movimento, mas de modo muito complexo, e um desperdício de espaço esta é uma substituição do antigo pensamento para trás, faria alguns elementos são movidos por duas vezes. Então nós colocamos um outro pensamento, é para substituir os dados de antes, então depois de todos os números só irá mover uma vez, vamos dar um olhar específico em um mapa
# include <stdio.h>
# include <string.h>
void replace(char *a,int len)
{
int p=0;
int q=0;
int count=0;
for(int i=0;a[i]!='\0';i++)
{
if(a[i]==' ')
{
count++;
}
p++;
}
q=p+2*count;
while(p!=q)
{
if(a[p]==' ')
{
p--;
a[q--]='0';
a[q--]='2';
a[q--]='%';
}
else
{
a[q]=a[p];
p--;
q--;
}
}
}
void show(char *a,int len)
{
for(int i=0;a[i]!='\0';i++)
{
printf("%c ",a[i]);
}
}
int main()
{
char a[100]="we are happy.";
show(a,100);
printf("\n");
replace(a,100);
show(a,100);
}
O resultado:
Vamos lá! ! !