c++ - 如何解决这两个错误? ‘strlwr’- 'but argument 2 has type ‘int’'

标签 c++ c compiler-errors

我是该 Realm 的初学者,我对自己的代码有疑问。显示以下两个错误:

  • main.cpp:在函数“int main(int,char **)”中:
    main.cpp:118:39:警告:格式'%d'期望类型为'int *'的参数,但是参数2的类型为'int'[-Wformat =]
  • main.cpp:161:56:错误:未在此范围内声明“strlwr”

  • 我无法解决,有人可以帮助我吗?
    我的代码:
    #include <iostream>
    
    #include <string.h>
    
    #include <conio.h>
    
    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <locale.h>
    
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    typedef struct carro
    
    {
    
        int cod;
    
        char marca[20];
    
        char modelo[20];
    
        int ano;
    
        char placa[10];
    
    } carro;
    
    carro car[10];
    
    void menu();
    
    void inicializar();
    
    void imprimir();
    
    void cadastrar();
    
    int main(int argc, char **argv)
    {
    
        setlocale(LC_ALL, "portuguese");
    
        int i;
    
        int op;
    
        int ano;
    
        int z;
    
        char modelo[20];
    
        z = 0;
    
        ano = 0;
    
        i = 0;
    
        car[i].cod = 0;
    
        strcpy(car[i].marca, "NULL");
    
        strcpy(car[i].modelo, "NULL");
    
        strcpy(car[i].placa, "NULL");
    
        car[i].ano = 0;
    
        do
    
        {
    
            printf("\n Opções:");
    
            printf("\n 1. CADASTRAR VEÍCULO");
    
            printf("\n 2. LISTAR VEÍCULOS");
    
            printf("\n 3. PESQUISAR UM MODELO");
    
            printf("\n 4. MOSTRAR VEÍCULOS A PARTIR DE UM ANO");
    
            printf("\n 5. SAIR");
    
            printf("\n \n DIGITE A OPÇÃO: ");
    
            scanf("%d", &op);
    
            switch (op)
    
            {
    
            case 1:
    
                if (car[i].cod <= 9)
    
                {
    
                    car[i].cod = i;
    
                    printf("\n Digite a marca do veículo:");
    
                    scanf("%s", car[i].marca);
    
                    printf("\n Digite o modelo do veículo:");
    
                    scanf("%s", car[i].modelo);
    
                    printf("\n Digite a placa do veículo:");
    
                    scanf("%s", car[i].placa);
    
                    printf("\n Digite o ano do veículo:");
    
                    scanf("%d", car[i].ano);
    
                    i = i + 1;
                }
    
                else
    
                {
    
                    printf("\n Limite de cadastro é 10!");
                }
    
                break;
    
            case 2:
    
                for (int x = 0; x < i; x++)
    
                {
    
                    printf("\n A marca do veículo é: %s", car[x].marca);
    
                    printf("\n O modelo do veículo é: %s", car[x].modelo);
    
                    printf("\n O ano do veículo é: %d", car[x].ano);
    
                    printf("\n A placa do veículo é: %s", car[x].placa);
    
                    printf("\n\n =================================== \n \n");
                }
    
                break;
    
            case 3:
    
                printf("\n   INSIRA O MODELO A SER PESQUISADO:");
    
                scanf("%s", modelo);
    
                for (int x = 0; x < i; x++)
    
                {
    
                    if (strcmp(car[x].modelo, strlwr(modelo)) == 0)
    
                    {
    
                        printf("\n A marca do veículo é: %s", car[x].marca);
    
                        printf("\n O modelo do veículo é: %s", car[x].modelo);
    
                        printf("\n O ano do veículo é: %d", car[x].ano);
    
                        printf("\n A placa do veículo é: %s", car[x].placa);
    
                        printf("\n\n =================================== \n \n");
    
                        z++;
                    }
                }
    
                if (z == 0)
    
                {
    
                    printf("\n NÃO FOI ENCONTRADO O MODELO %s \n\n", modelo);
                }
    
                else
    
                {
    
                    z = 0;
                }
    
                break;
    
            case 4:
    
                printf("\n     INSIRA O ANO A SER PESQUISADO:");
    
                scanf("%d", &ano);
    
                for (int x = 0; x < i; x++)
    
                {
    
                    if (car[x].ano >= ano)
    
                    {
    
                        printf("\n A marca do veículo é: %s", car[x].marca);
    
                        printf("\n O modelo do veículo é: %s", car[x].modelo);
    
                        printf("\n O ano do veículo é: %d", car[x].ano);
    
                        printf("\n A placa do veículo é: %s", car[x].placa);
    
                        printf("\n\n =================================== \n \n");
    
                        z++;
                    }
                }
    
                if (z == 0)
    
                {
    
                    printf("\n NÃO FOI ENCONTRADO VEÍCULOS ACIMA DE %d \n\n", ano);
                }
    
                else
    
                {
    
                    z = 0;
                }
    
                break;
    
            default:
    
                printf("\n Opção não existe");
    
                break;
            }
    
        }
    
        while (op != 5 && i <= 9);
    
        if (i == 9)
    
        {
    
            printf("\n \n LIMITE DE VEÍCULOS ALCANÇADO! \n \n \n");
        }
    
        for (int y = 0; y < i; y++)
    
        {
    
            printf("\n A marca do veículo é: %s", car[y].marca);
    
            printf("\n O modelo do veículo é: %s", car[y].modelo);
    
            printf("\n O ano do veículo é: %d", car[y].ano);
    
            printf("\n A placa do veículo é: %s", car[y].placa);
    
            printf("\n\n =================================== \n \n");
        }
    
        return 0;
    }
    

    最佳答案

    如错误消息所示,您需要为scanf传递一个指针:scanf("%d", car[i].ano); => scanf("%d", &car[i].ano); And the anser to your strlwr issue

    关于c++ - 如何解决这两个错误? ‘strlwr’- 'but argument 2 has type ‘int’',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65066691/

    相关文章:

    c - unsigned short int 的格式说明符是什么?

    c - 代码:: block 的多重定义和首次定义问题

    c - 从C中的数字字符串中查找数字组合的总和

    android - 错误react-native运行Android应用程序:instalDebug

    linux - 64位Ubuntu12.04下编译LinSched 3.3时math.h引用失败

    c++ - wininet.dll 中看似随机崩溃的原因?

    c++ - c++ unix 多线程套接字阻塞和非阻塞。什么是阻塞?

    c++ - |9|错误 : invalid use of non-static data member 'Matrix::row' |9|error: array bound is not an integer constant before ']' token|

    c++ - 显式调用析构函数

    c++ - CentOS 6.5 秒杀