scanf无法识别格式%zu

问题描述 投票:0回答:1

我有以下代码:

#include <stdio.h>
#include <stdlib.h>

int compare(const void* a, const void* b)
{
    const int* x = a, *y = b;
    if (*x < *y)
        return -1;
    else if (*x == *y)
        return 0;
    else
        return 1;
}

int main()
{
    size_t n;
    printf("Enter number of numbers: ");
    scanf("%zu", &n); //<-- warnings here
    int numbers[n];
    for (size_t i = 0; i < n; i++)
    {
        printf("Enter number #%zu: ", i + 1); //NO warning here, printf works as expected
        scanf("%d", &numbers[i]);
    }
    qsort(numbers, n, sizeof *numbers, compare);
    for (size_t i = 0; i < n; i++)
        printf("%d ", numbers[i]);
    printf("\n");
    system("pause"); //don't comment for this, I know it's bad
}

我从我的GCC编译器收到2条警告:

warning: unknown conversion type character 'z' in format [-Wformat=]
warning: too many arguments for format [-Wformat-extra-args]

我已将GCC设置为C11。谁能帮助我了解我为什么得到这个?

编辑:我忘了提到我的代码,即使有那些警告,仍然可以正常工作,但是对我来说,这很奇怪,似乎变量n不能从scanf获取其值

c scanf
1个回答
0
投票

但是我不知道如何检查我的编译器版本

© www.soinside.com 2019 - 2024. All rights reserved.