passing argument 1 of 'printf 'makes pointer from integer
45,762
Solution 1
Here
printf(c);
you pass the character instead of a format string as the first argument to printf()
. It should be
printf("%c", c);
or alternatively
putchar(c);
Solution 2
I know it's a year later, but keep in mind that # may be used as inline comment by your shell.
So "./box2 5 #" would have argc as 1 and argv as a string array containg only one position: "5".
Anything after # would be discarded before the shell called your program.
Author by
user3015970
Updated on January 18, 2020Comments
-
user3015970 over 4 years
I keep getting this error
box2.c: In function 'printchars': box2.c:26:4: warning: passing argument 1 of 'printf' makes pointer from integer without a cast [enabled by default] /usr/include/stdio.h:363:12: note: expected 'const char * __restrict__' but argument is of type 'char' box2.c:26:4: warning: format not a string literal and no format arguments [-Wformat-security] box2.c:39:8: warning: passing argument 1 of 'printf' makes pointer from integer without a cast [enabled by default] /usr/include/stdio.h:363:12: note: expected 'const char * __restrict__' but argument is of type 'char' box2.c:39:8: warning: format not a string literal and no format arguments [-Wformat- security]
When I try to compile this program with gcc
#include <stdio.h> void printchars(char c, int n); int main( int argc, char*argv){ int n = argv[1]; char c = argv[2]; int nn = atoi(n); printchars(c, nn); return 0; } void printchars(char c, int n){ int x; for (x = n + 2 ; x > 0; x--){ if (x != 1 && x != n){ printf(c); int count = n; while (count - 2 != 0){ printf(" "); count--; } } else{ int num = n; while (num != 0){ printf(c); num--; } } printf("\n"); } }
I have been trying to figure it out, but keep getting the same error. Any help would be greatly appreciated. The program is meant to print out a box like this given how many and the character that makes it.
./box2 5 # ##### # # # # # # # # #####
-
user3015970 over 10 yearsThat worked but now after I compile it and try to run it I get Segmentation Fault (core dumped)
-
Martin R over 10 years@user3015970: That's because there are some more errors in your code: The declaration of
main()
is wrong, and bothint n = argv[1];
andchar c = argv[2];
should give compiler warnings or errors. - Perhaps you should try to fix all warnings first. If you need more help, update the question.