Having trouble passing an array of pointer to a function

This is a discussion on Having trouble passing an array of pointer to a function within the C Programming forums, part of the General Programming Boards category; Code: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_CMD_LINE 500 void tokenize(char *cmd_ln, char *fun_tknzd[], int *argument_cnt); int main(void) { ...

  1. #1
    Registered User
    Join Date
    Feb 2013
    Posts
    17

    Having trouble passing an array of pointer to a function

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_CMD_LINE 500
    
    
    void tokenize(char *cmd_ln, char *fun_tknzd[], int *argument_cnt);
    
    int  main(void)
    {
    
            
             char cmd_ln[MAX_CMD_LINE], *str_tknzd[MAX_CMD_LINE];
             int argument_cnt = 0;
          
             //I think my problem is here
             tokenize(cmd_ln, &str_tknzd[MAX_CMD_LINE], &argument_cnt);
    
              /* I am getting a null here i am not sure why, but i think it has something to do with how I am passing the array to the function. It does however print fine inside of the function */
              printf("Out of function %s\n", str_tknzd[0]);
    
              return 0;
    }
    
    
    void tokenize(char *cmd_ln, char *fun_tknzd[], int *argument_cnt)
    {
        int i = 0;
    
    
        fun_tknzd[0] = strtok (cmd_ln," ");
    
        //Just testing to see if the strtok is working correctly
        printf("Test: %s\n", fun_tknzd[0]);
        argument_cnt++;
        printf("Argument count: %d\n", *argument_cnt);
    
    
        while (fun_tknzd[i] != NULL){
    
            /*Just testing to see if the strtok is working correctly and I enter the loop*/
            printf("Entered Loop: %d\n", i);
            printf("Got %s\n", fun_tknzd[i]);
            i++;
    
    
            fun_tknzd[i] = strtok (NULL, " ");
            argument_cnt++;
        }
    I am trying to pass the value of fun_tknzd to str_tknzd

    Thanks in advance for the help
    Last edited by DeeMan; 09-07-2013 at 05:13 PM.

  2. #2
    Ultraviolence Connoisseur
    Join Date
    Mar 2004
    Posts
    472
    All you need to do is pass the name 'str_tknzd'. Why are you trying to pass the address? str_tknzd is already defined as an array of pointers to char.

  3. #3
    Registered User
    Join Date
    Feb 2013
    Posts
    17
    Thank you that was awesome how fast you saw that. I hope you have a great day!!!

  4. #4
    CSharpener vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,457
    Quote Originally Posted by nonpuz View Post
    All you need to do is pass the name 'str_tknzd'. Why are you trying to pass the address? str_tknzd is already defined as an array of pointers to char.
    well you can pass address, but address of the first element &str_tknzd[0] which is what the str_tknzd is converted to anyway after it is passed to the function

    using &str_tknzd[MAX_CMD_LINE] you get address of the element next to the last in the array - so it is actually out of bounds access to the allocated memory.
    The first 90% of a project takes 90% of the time,
    the last 10% takes the other 90% of the time.

  5. #5
    Registered User
    Join Date
    Feb 2013
    Posts
    17
    Thank you for your help

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Passing two dimensional array to function using pointer
    By Burns111 in forum C Programming
    Replies: 3
    Last Post: 11-27-2012, 09:55 AM
  2. Passing a pointer to two-dimension array in a function
    By E_I_S in forum C++ Programming
    Replies: 11
    Last Post: 06-19-2008, 09:57 AM
  3. Trouble passing char/pointer array
    By -Prime- in forum C++ Programming
    Replies: 2
    Last Post: 10-05-2007, 03:38 AM
  4. Replies: 4
    Last Post: 06-15-2005, 08:30 PM
  5. Passing pointer to array to a function
    By Tojam in forum C Programming
    Replies: 1
    Last Post: 10-09-2002, 09:24 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21