错误太多,改了第一个,你先试用——
把int str1[80],str2[80];改成char str1[80],str2[80];。
把while(str1[i]=getchar())!='\0')改成while((str1[i]=getchar())!='\n')。
把str[i]="\0";改成str1[i]='\0';。
把for(i=0;str1[i];i++);改成for(i=0;str1[i];i++)。
把str2[k]='0';改成str2[k]='\0';。
把n=n*16+str2[i]-0;改成n=n*16+str2[i]-'0';。
把n=n*16+10+str1[i]-'a';改成n=n*16+10+str2[i]-'a';。
把puts(str2[i]);改成puts(str2);。
写得也略复杂了些,提供一个较简单的供参考——
#include "stdio.h"
int main(int argv,char *argc[]){
int i,k,n=0;
char str[80];
printf("Input a string:");
scanf("%80s",str);
for(k=i=0;str[i];i++)
if(str[i]>='0' && str[i]<='9' || str[i]>='a' && str[i]<='f' || str[i]>='A' && str[i]<='F')
str[k++]=str[i];
str[k]='\0';
for(i=0;str[i]!='\0';i++)
n=n*16+str[i]-(str[i]>'F' ? 87 : str[i]>='A' ? 55 : 48);
printf("New string:");
puts(str);
printf("Hex=%d\n",n);
return 0;
}