Search code examples
cc-strings

Printing an array of characters


I have an array of characters declared as:

char *array[size];

When I perform a

printf("%s", array);

it gives me some garbage characters, why it is so?

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

This url indicates printf takes in the format of: `int printf ( const char * format, ... );

#include <stdio.h>
#include <string.h>
#define size 20
#define buff 100
char line[buff];

int main ()
{
    char *array[100];
    char *sep = " \t\n";

    fgets(line, buff, stdin);

    int i;

    array[0] = strtok(line, sep);

    for (i = 1; i < size; i++) {
        array[i] = strtok(NULL, sep);

        if (array[i] == NULL)
            break;
    }

    return 0;
}

Solution

  • Your array is not initialized, and also you have an array of pointers, instead of an array of char's. It should be char* array = (char*)malloc(sizeof(char)*size);, if you want an array of char's. Now you have a pointer to the first element of the array.