'System.NullReferenceException' in C

0

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; }
    
asked by anonymous 28.07.2016 / 16:18

1 answer

1
#include    <stdio.h>
#include    <stdlib.h>
#include    <string.h>

void SubString (char *ls_retorno,  char *as_origem,  int an_inicio, int an_quantidade  )  {
    int ln = 0, ln_cotador = 0;

    if (an_inicio < 0)
        an_inicio = 0;

    for (ln = an_inicio; ln < an_quantidade + an_inicio; ln++)
        ls_retorno[ln_cotador++] = as_origem[ln];

    ls_retorno[ln_cotador] = '
#include    <stdio.h>
#include    <stdlib.h>
#include    <string.h>

void SubString (char *ls_retorno,  char *as_origem,  int an_inicio, int an_quantidade  )  {
    int ln = 0, ln_cotador = 0;

    if (an_inicio < 0)
        an_inicio = 0;

    for (ln = an_inicio; ln < an_quantidade + an_inicio; ln++)
        ls_retorno[ln_cotador++] = as_origem[ln];

    ls_retorno[ln_cotador] = '%pre%';

    printf("Resultado Funcao: >%s<", ls_retorno);
}


int main() {
    char *ls_palavrad;
    char *ls_valord;

    ls_palavrad = (char*) malloc(30 * sizeof(char));
    ls_valord = (char*) malloc(200 * sizeof(char));

    printf(">Chamada<");

    SubString(ls_palavrad, "mensagem=Sequencial invalido", 1, 5);

    printf("Retorno: >%s<", ls_palavrad);

    free(ls_palavrad);
    free(ls_valord);

    ls_palavrad = NULL;
    ls_valord = NULL;

return 0;

}
'; printf("Resultado Funcao: >%s<", ls_retorno); } int main() { char *ls_palavrad; char *ls_valord; ls_palavrad = (char*) malloc(30 * sizeof(char)); ls_valord = (char*) malloc(200 * sizeof(char)); printf(">Chamada<"); SubString(ls_palavrad, "mensagem=Sequencial invalido", 1, 5); printf("Retorno: >%s<", ls_palavrad); free(ls_palavrad); free(ls_valord); ls_palavrad = NULL; ls_valord = NULL; return 0; }
    
28.07.2016 / 18:32