I am trying to run a simple C program but I am getting this error:
warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[20]’
Running Mac OSX Mountain Lion, compiling in terminal using gcc 4.2.1
#include <stdio.h>
int main() {
char me[20];
printf("What is your name?");
scanf("%s", &me);
printf("Darn glad to meet you, %s!\n", me);
return (0);
}
Best Answer
should be
Explaination:
"%s"
means thatscanf
is expecting a pointer to the first element of a char array.me
is an object array and could evaluated as pointer. So that's why you can useme
directly without adding&
. Adding&
tome
will be evaluated to‘char (*)[20]’
and your scanf is waitingchar *
Code critic:
Using
"%s"
could cause a buffer overflow if the user input string with length > 20. So change it to"%19s"
: