I am working on a little hobby project, it reads user input and then stores it in a pointer to char array. The problem is that the output is not correct. So i dont know if it is the output, or the storing that is wrong. I am used to using C++, but always used vector <string> in c++ to create my list. Here is my code:

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

#define MAX_BUFFER_SIZE 512

int main(int argc, char *argv[])
    char input[MAX_BUFFER_SIZE];
    char *commands[20];
    char *token;
    int counter;
    bool _continue = true;

        counter = 0;
        // Read user input.
        fgets(input, MAX_BUFFER_SIZE, stdin);

        // Split string.
        token = strtok(input, " ");
        while(token != NULL)
            token = strtok(NULL, " ");
            if(counter > 20)
                printf("\n<x>To many commands.\n");
                commands[counter] = token;

        for(int i = 0; i < counter; i++)
            printf("%s\n", commands[i]);

    return 0;

It gives this output when I enter h h:



I know that the (null) is a trailing character that i can just remove, but where is my second h?

Recommended Answers

All 2 Replies

move line 27 down to line 38 because you are throwing out the first token in the string.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.