C程序在函数中获得无效转换

时间:2014-07-31 21:31:03

标签: c function arguments

我在本文后面评论的错误很少,我没有得到编译器试图说的内容,最后一个函数是在做列表我希望不是问题,问题是我想问用户对于2个字符之后,它发送给一个函数,如果字符串相同,将比较字符串作为密码和登录,程序继续。

\\初始化int consultar(char,char)的参数1 \\

\\从char *'到`char'\\

的转换无效
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void introducir_datos (struct agenda cliente[30]);
void mostrar_datos(struct agenda cliente[30]);
char consultar(char login,char password);


struct agenda{
    char nombre[10];
    char apellido[10];
    int  edad;
    char direccion[20];
    int  codigo_postal;
};


int main(void)
{
    struct agenda cliente[30];  
    int menu;
    char con[3],login[8], password[8];
    puts("\n=== Hola bienvenido a nuestra agenda en C ===\n");

    puts("Login:");
    gets(login);
    puts("Password:");
    gets(password);
    **consultar(login, password);**
    while ( menu != 3){
        puts("\nQue quieres hacer?\n");
        puts("[1]Insertar datos\n[2]Mostrar datos\n[3]Salir del programa\n");
        scanf("%d", &menu);
        switch(menu){
            case 1:         
                introducir_datos(cliente);
                break;

            case 2:         
                mostrar_datos(cliente);
                break;

            default:
                system("cls");
                puts("~~~ Opcion incorrecta ~~~");

       }
    }
}

void introducir_datos (struct agenda cliente[30]){

    int x = 0;

    puts("\n=== Bienvenido a la introduccion de datos ===\n");
    fflush(stdin);
    system("pause");
    system("cls");
    puts("\nDime el nombre:\n");
    fflush(stdin);
    gets(cliente[x].nombre);
    puts("\nDime el apellido:\n");
    fflush(stdin);
    gets(cliente[x].apellido);
    puts("\nDime la edad:\n");
    fflush(stdin);
    scanf("%d",&cliente[x].edad);
    puts("\nDime la direccion:\n");
    fflush(stdin);
    gets(cliente[x].direccion);
    puts("\nDime el codigo postal:\n");
    fflush(stdin);
    scanf("%d",&cliente[x].codigo_postal);
    x++;    
}  


void mostrar_datos(struct agenda cliente[30]){

    for(int i=0;i<20;i++){     
        int x = 0;

        printf("El nombre: %s \nEl apellido: %s\nEl edad: %d\nEl direccion: %s\nEl codigo postal: %d\n", cliente[x].nombre,cliente[x].apellido,cliente[x].edad,cliente[x].direccion,cliente[x].codigo_postal);


    }     
}

int consultar(char login, char password){
}

1 个答案:

答案 0 :(得分:3)

您需要更改consultar函数(定义和实现):

int consultar(char login, char password)

为:

int consultar(char *login, char *password)

如果您使用(char login, char password),则会查找单个字符。因为,通过使用consultar(login, password);调用它,您使用指向char数组的指针(简化的解释),您就会收到错误。

编辑正如用户&#34; Namfuak&#34;所指出,您应该决定该函数是返回char还是int ,并且定义和实现都是一致的。