3
votes
char *searcharray = malloc(size);
for (i = 0; i < size; i++)
{
  fscanf(filePtr, "%c", searcharray[i]);
}

Here is my code. And Everytime i keep getting the warning message:

warning: format '%c' expects argument of type 'char *', but argument 3 has type 'int'

How is the variable searcharray being determined as an int?

1
You're dereferencing the character pointer. Try using pointer notation: (searcharray + i)ciphermagi
@abelebjt %c expects a char* in scanf, it " Matches a sequence of characters whose length is specified by the maximum field width (default 1); the next pointer must be a pointer to char, ..."Adrian Ratnapala

1 Answers

11
votes

What's happening:

  1. searcharray[i] has type char.
  2. In a varargs function, the char will be promoted to an int.

Your bug:

  1. fscanf expects the variables that it will place data into to be passed by pointer.
  2. So you should be doing:

    fscanf(filePtr, "%c", &searcharray[i]);