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

lennin.caro's Avatar, Join Date: Jun 2009
Newbie Member
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 shabbir; 29Jun2009 at 21:00.. Reason: Code blocks
SaswatPadhi's Avatar, Join Date: May 2009
~ Б0ЯИ Τ0 С0δЭ ~
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 ??