Running the following code it displays the error System.NullReferenceException
in the call of the function SubString
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//
// Implementado o metodo Substring para retornar um nova area de memoria
// com os dados formatados conforme possição informada.
//
void SubString
(
char *ls_retorno,
char *as_origem,
int an_inicio,
int an_quantidade
)
{
//
// Variaveis de controle.
//
int
ln = 0,
ln_cotador = 0;
//
// Se posição inicial menor que 0 ou
// Se posição inicial muito exagerada...
//
if (an_inicio < 0)
{
an_inicio = 0;
}
//
// Obtem os caracteres desejados
//
for (
ln = an_inicio;
ln < an_quantidade + an_inicio;
ln++
)
{
ls_retorno[ln_cotador++] = as_origem[ln];
}
//
// Elimina todos os espacos nao ocupados.
//
ls_retorno[ln_cotador] = '#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//
// Implementado o metodo Substring para retornar um nova area de memoria
// com os dados formatados conforme possição informada.
//
void SubString
(
char *ls_retorno,
char *as_origem,
int an_inicio,
int an_quantidade
)
{
//
// Variaveis de controle.
//
int
ln = 0,
ln_cotador = 0;
//
// Se posição inicial menor que 0 ou
// Se posição inicial muito exagerada...
//
if (an_inicio < 0)
{
an_inicio = 0;
}
//
// Obtem os caracteres desejados
//
for (
ln = an_inicio;
ln < an_quantidade + an_inicio;
ln++
)
{
ls_retorno[ln_cotador++] = as_origem[ln];
}
//
// Elimina todos os espacos nao ocupados.
//
ls_retorno[ln_cotador] = '%pre%';
printf("Resultado Funcao: >%s<", ls_retorno);
//
// Retorna a informacao tratada.
//
// return (ls_retorno);
}
int main()
{
//
// Cria a palavra chave e o valor.
//
char
*ls_palavrad;
char
*ls_valord;
//
// Aloca a espaco em memoria
//
ls_palavrad = (char*)malloc(30*sizeof(char));
ls_valord = (char*)malloc(200*sizeof(char));
//
// Limpa o buffer
//
ls_palavrad = (char*) NULL;
ls_valord = (char*) NULL;
printf(">Chamada<");
SubString(ls_palavrad, "mensagem=Sequencial invalido", 1, 5);
printf("Retorno: >%s<", ls_palavrad);
return 0;
}
';
printf("Resultado Funcao: >%s<", ls_retorno);
//
// Retorna a informacao tratada.
//
// return (ls_retorno);
}
int main()
{
//
// Cria a palavra chave e o valor.
//
char
*ls_palavrad;
char
*ls_valord;
//
// Aloca a espaco em memoria
//
ls_palavrad = (char*)malloc(30*sizeof(char));
ls_valord = (char*)malloc(200*sizeof(char));
//
// Limpa o buffer
//
ls_palavrad = (char*) NULL;
ls_valord = (char*) NULL;
printf(">Chamada<");
SubString(ls_palavrad, "mensagem=Sequencial invalido", 1, 5);
printf("Retorno: >%s<", ls_palavrad);
return 0;
}