这是当前班级作业的代码,这个问题要求我们提示用户输入一个数字,以找到最低的正因数。
我不断收到错误消息: 警告:格式不是字符串文字,并且没有格式参数[-Wformat-security]
使用此代码时
#include <stdio.h>
int main(void)
{
int divisor;
int dividend;
divisor=2;
printf("Enter a number to divide: ");
scanf("%d", ÷nd);
while(divisor!=0)
{
divisor++;
}
printf("%s","The lowest positive divisor is: ",dividend);
}
我认为我需要在某个地方使用%s,但是我对c ++还是陌生的,不太了解应该进行哪些格式更改
答案 0 :(得分:2)
printf("%s","The lowest positive divisor is: ",dividend);
您在字符串中仅指定了一个格式说明符,但是您将2个变量传递给printf
。您还应该指定dividend
说明符:
printf("%s %d","The lowest positive divisor is: ",dividend);
答案 1 :(得分:1)
将%s内联,如下所示:
printf("The lowest positive divisor is: %s", dividend);
但是在这种情况下,请使用%d,因为它是整数:
printf("The lowest positive divisor is: %d", dividend);
答案 2 :(得分:0)
printf()在双引号之间打印字符串,并且/或者可以等待转换说明符:
char *str = "print"
printf("Whatever you want to %s", str)
因此,您注意到%是分隔符,使printf知道是要打印的char还是要调用的参数(char *)。对于大多数类型,您有多个转换说明符,对于字符串而言,%s,对于整数,%i(或%d),对于浮点,%f,对于字符,%c ... 如果您想了解有关printf()的更多信息,请输入类型,精度,宽度,标志...您可以转到https://en.cppreference.com/w/c/io/fprintf
希望它可以帮助您阐明如何使用