C - Use a Pointer array in parameter function (strange result)

Discussion in 'C' started by lennin.caro, Jun 29, 2009.

  1. lennin.caro

    lennin.caro New Member

    Joined:
    Jun 29, 2009
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    hi a have this code

    Code:
    ///////////////////
    #include <stdio.h>
    FILE * open_file(char *file);
    int read_file(FILE *p_File,char *parameter[]);
    int close_file(FILE *p_File);
    int main (){
        FILE *p_file;
        int ret;
        int i=0;
        char *p_array[100];
        p_file=open_file("/tmp/prb.txt");
        ret=read_file(p_file,p_array);
        for(i;i<=1;i++){
            printf ("value in main : %s \n", *(p_array+i));
        }
        close_file(p_file);
        return 0;
    }
    //read a file and fill a array of pointer
    int read_file(FILE *p_File, char *p_Line[]){
        int i = 0;
        char p_use[100];
        if (p_File == NULL){
            return;
        }
        while(fgets(p_use,100,p_File)) {
            *(p_Line + i) = p_use;
            printf ("value in read_file : %s \n",*(p_Line + i));
            i++;
        }
        return 0;
    }
    //open a file
    FILE * open_file(char *p_Arch){
        FILE *p_File;
        p_File=fopen(p_Arch,"r");
        if (p_File == NULL)
        {
            fprintf(stderr, "%s \n", "Erro open file");
            return NULL;
        }
        return p_File;
    }
    //close a file
    int close_file(FILE *p_File){
        if (fclose (p_File) != 0)
        {
            fprintf(stderr, "%s \n", "Error close file");
            return 1;
        }
        return 0;
    }
    /////////////////////////////////
    
    the problem is this, if a run this code the result is

    value in read_file : host = 127.0.0.1
    value in read_file : port 5502
    value in read_file : user = usr
    value in read_file : pass = password
    value in read_file : aaaa
    value in read_file : bbb
    value in read_file : .
    value in read_file :
    value in read_file : ccccccc
    value in main : ccccccc
    value in main : ccccccc

    and the cuestion is this...

    For that when I execute it like appears here the result of "value in main" is the same for several time and not show me the result like "value in read_file"

    and when comment the line

    printf ("value in read_file : %s \n",*(p_Line + i));

    the result is

    value in main : ������h&��`��[H�� (��8[��
    value in main : ������h&��`��[H�� (��8[��

    pd: i new in C
     
    Last edited by a moderator: Jun 29, 2009
  2. SaswatPadhi

    SaswatPadhi ~ Б0ЯИ Τ0 С0δЭ ~

    Joined:
    May 5, 2009
    Messages:
    1,342
    Likes Received:
    55
    Trophy Points:
    0
    Occupation:
    STUDENT !
    Location:
    Orissa, INDIA
    Home Page:
    http://www.crackingforfun.blogspot.com
    Welcome to the forum lennin.caro :)

    I will definitely try to help you, but I cannot exactly understand what your question is.
    Can you be a bit more clear ??
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice