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 #
#####
# #
# #
# #
# #
#####
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.
The same warning will occur if you use
printf('someString: %s\n')
with single quotes as opposed to
printf("someString: %s\n")
Putting this here for reference, as it doesn't answer this specific question directly.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With