Originariamente inviato da rikka84
Ora mi da un errore di memoria!!! Ti posto tutto il prog...

#include <stdio.h>

int codice(u)
char*u;

{
register i,s=0;
int l,t;

l=strlen(u);
for (i=0;i<l;i++)
{
t=(u[l-i-1]-'0')*(1+((i+1)%2));
s+=t<10 ? t:t-9;
}
return 10-s%10;
}

int main (argc, argv)
int argc;
char*argv[];
{
while (-argc)
printf ("%d\n", codice(*(++argv)));
}
potrebbe essere che si incasina con le precedenze degli operatori..