非常感谢现在程序运行正常。 我仍然想了解一些事情,我得到2个警告:
| 36 |警告:内置函数'strcspn'的不兼容隐式声明[默认启用] |
| 55 |警告:内置函数'strcpy'的不兼容隐式声明[默认启用] |
typedef struct a nodo;
struct a
{
int cant;
char cad[30];
nodo * sig;
};
void insertar (nodo**,nodo *);
void mostrarlista (nodo *);
void borrarlista(nodo**);
nodo * nuevonodo(void);
int main (void)
{
nodo *pi=NULL,*q,datos;
q=NULL;
char cad[30];
int cod,N=4,digito,j;
printf("Ingrese Codigo Postal, 0 para finalizar:");
gets(cad);
fflush(stdin);
while ((cad!=NULL))
{
cad[strcspn(cad,"\n")] = '\0';
if (strcmp(cad, "0") == 0)
{
break;
}
digito=1;
j=0;
for (j = 0; j<N; j++)
{
if (!isdigit((unsigned char) cad[j]))
{
digito = 0;
break;
}
}
if (digito && cad[N] == '\0')
{
//cod=atoi(cad);//Esto me come los 0?
q=nuevonodo();
strcpy(q->cad, cad);
q->cant=1;
insertar(&pi,q);
printf("Ingrese Siguiente Codigo Postal, 0 para finalizar:");
gets(cad);
fflush(stdin);
}
else
{
printf("Codigo Postal Incorrecto\n");
printf("Ingrese Codigo Postal, 0 para finalizar:");
gets(cad);
fflush(stdin);
}
}
system("cls");
mostrarlista(pi);
borrarlista(&pi);
getch();
return 0;
}
答案 0 :(得分:0)
应用评论后,清理代码,删除重复的代码,这就是结果。
它干净利落地编译,但尚未经过测试。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define N (4)
typedef struct a nodo;
struct a
{
int cant;
char cad[30];
nodo * sig;
};
void insertar (nodo**,nodo *);
void mostrarlista (nodo *);
void borrarlista(nodo**);
nodo * nuevonodo(void);
int main (void)
{
nodo *pi = NULL;
nodo *q = NULL;
//nodo datos;
char cad[30];
//int cod;
int digito;
int j;
printf("Ingrese Codigo Postal, 0 para finalizar:");
while ( fgets(cad, sizeof(cad), stdin) )
{
// eliminate trailing newline
cad[strcspn(cad,"\n")] = '\0';
// if '0' is first digit entered, exit while loop
if ( '0' == cad[0] )
{ // then user wants to quit entering data
break;
}
// verify contents of cad[] as 4 digits
digito=1;
for (j = 0; j<N; j++)
{
if (!isdigit((unsigned char) cad[j]))
{
digito = 0;
//break; a user input error is not a reason to quit program
}
}
if (digito && (cad[N] == '\0') )
{ // then valid 4 digit input
//cod=atoi(cad);//Esto me come los 0?
// allocate struct
q=nuevonodo();
// fill in fields in struct
strcpy(q->cad, cad);
q->cant=1;
// insert struct into linked list
insertar(&pi,q);
printf("Ingrese Siguiente Codigo Postal, 0 para finalizar:");
}
else
{ // else invalid input, report problem to user
printf("Codigo Postal Incorrecto\n");
printf("Ingrese Codigo Postal, 0 para finalizar:");
} // end if
} // end while
system("cls");
mostrarlista(pi);
borrarlista(&pi);
// wait for user to enter any char before exiting program
while( EOF != getchar());
getchar();
return 0;
} // end function: main