🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #9004

Re: Problemas al compilar un programa con gcc

#9004
From: dbpp
Date: Wed, 11 Sep 2002 07:12
116 lines
4796 bytes
No es un problema del gcc, es un problema del programa, la funci�n calcular_letra devuelve un char en vez de
un puntero a char (char *)  que es lo que espera strcmp. Por cierto es mejor usar strncmp, por temas de
desbordamiento del b�fer y dem�s.

La funci�n calcular_letra quedar�a como algo as�:
char * calcular_letra( long dni)
{
    char nif[] = {"TRWAGMYFPDXBNJZSQVHLCKET"};
/* Tambi�n se podr�a sustituir las comillas simples por comillas dobles :
    char nif[] = {"T","R","W","A","G","M","Y","F",.....}; y ahora tenemos cadenas, en vez de caracteres. */
        long int paso1;
        paso1=(digitos_dni/23)*23;
        return &nif[digitos_dni-paso1];
/* En el segundo supuesto el return ser�a como lo ten�as :
    return nif[digitos_dni-paso1]; */
}

Un saludo.

DBpp: Una librer�a en C++ para acceso a Base de datos: http://usuarios.lycos.es/dbpp

"

quantium wrote:

> Buenas.
> Tengo un problema a la hora de compilar un programa, el mensaje es el
> siguiente:
> programa.c:50: warning: passing arg 2 of `strcmp' makes pointer from
> integer without a cast.
>
> Seguidamente os pongo el codigo del programa:
> La linea 50 esta debajo del comentario: /* ****** LA LINEA DE ABAJO ES
> LA 50 ******* */
>
> #include <stdio.h>
> #include <stdlib.h> /* exit() */
> #include <string.h> /* strcmp() */
> #include <ctype.h> /* toupper() */
>
> void mensaje_error(void);
> char calcular_letra(long int digitos_dni);
>
> int main(int argc,char *argv[])
> {
> long int digitos_dni;
>
> /* comprobamos si existen errores el los argumentos */
> if(argc>4 || ((strcmp(argv[1],"-a")!=0) && (strcmp(argv[1],"-b")!=0)) ){
>         mensaje_error();
> }
>
> /* pasamos el argv[2] a float*/
> digitos_dni=atof(argv[2]);
>
> /* ******************** OPCION -A ******************** */
> if(strcmp(argv[1],"-a")==0){
>
> /* comprobamos si el dni es valido */
> if(digitos_dni>99999999 || digitos_dni<00000000){
> puts("\n\nError. Debes de introducir un dni entre 00000000 y 99999999");
>         mensaje_error();
> }
>
> printf("\n\nLos digitos del dni son: %ld",digitos_dni);
> printf("\nLetra correspondiente es: %c",calcular_letra(digitos_dni));
>         puts(INFORMACION);
> }
>
> /* *******************  OPCION -B ******************** */
> else if(strcmp(argv[1],"-b")==0){
>
> /* comprobamos si el dni es valido */
> if(digitos_dni>99999999 || digitos_dni<00000000){
> puts("\n\nError. Debes de introducir un dni entre 00000000 y 99999999");
>         mensaje_error();
> }
>
> /* comprobamos si hay los argumentos suficientes */
> else if(argc<4){
> puts("\n\nERROR. Debes de insertar correctamente los argumentos");
> mensaje_error();
> }
>
> printf("\nLetra correspondiente es: %c",calcular_letra(digitos_dni));
>
> /* ****** LA LINEA DE ABAJO ES LA 50 ******* */
> if(strcmp(argv[3],calcular_letra(digitos_dni))==0){
> printf("El dni es correcto");
> }
>
> }
> return 0;
> }
>
> void mensaje_error(void)
> {
>         puts("\n---------------------------------------------------");
>         puts("|                    OPCIONES                     |");
>         puts("---------------------------------------------------");
>         puts("|                                                 |");
>         puts("| a)- Insetar DNI para saber la letra del dni.    |");
>         puts("| b)- Verificar si un DNI es verdadero.           |");
>         puts("---------------------------------------------------\n");
>         exit(1);
> }
>
> char calcular_letra(long int digitos_dni)
> {
>
> char
> nif[]={'T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E','T'};
>         long int paso1;
>         paso1=(digitos_dni/23)*23;
>         return nif[digitos_dni-paso1];
> }
Technical Details
Message-ID: <3D7EECE9.774AAA19@lycos.es>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeed.gamma.ru!Gamma.RU!isdnet!news.rediris.es!News.cica.es!""!not-for-mail
References: <3D7E2E32.6080209@lycos.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,204458febf913b0e
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-09-11 01:01:08 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeed.gamma.ru!Gamma.RU!isdnet!news.rediris.es!News.cica.es!""!not-for-mail
From: dbpp <dbpp@lycos.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Problemas al compilar un programa con gcc
Date: Wed, 11 Sep 2002 09:12:41 +0200
Organization: C.I.C.A.
Lines: 117
Message-ID: <3D7EECE9.774AAA19@lycos.es>
References: <3D7E2E32.6080209@lycos.es>
NNTP-Posting-Host: saepc13.uca.es
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: mercurio.cica.es 1031728282 1247 150.214.82.79 (11 Sep 2002 07:11:22 GMT)
X-Complaints-To: news@cica.es
NNTP-Posting-Date: 11 Sep 2002 07:11:22 GMT
X-Mailer: Mozilla 4.76 [en] (WinNT; U)
X-Accept-Language: es,fr