我不了解在这种情况下如何正确使用printf

时间:2019-02-25 21:16:45

标签: c

这是当前班级作业的代码,这个问题要求我们提示用户输入一个数字,以找到最低的正因数。

我不断收到错误消息: 警告:格式不是字符串文字,并且没有格式参数[-Wformat-security]

使用此代码时

#include <stdio.h>

int main(void)
{
    int divisor;
    int dividend;

    divisor=2;

    printf("Enter a number to divide: ");
    scanf("%d", &dividend);

    while(divisor!=0)
    {
        divisor++;
    }

    printf("%s","The lowest positive divisor is: ",dividend);
}

我认为我需要在某个地方使用%s,但是我对c ++还是陌生的,不太了解应该进行哪些格式更改

3 个答案:

答案 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

希望它可以帮助您阐明如何使用