7-8 字串轉換成十進位制整數
阿新 • • 發佈:2019-01-03
//字串轉換成十進位制整數 #include<stdio.h> int main() { int i=0; char str[80]; printf("Enter a string:"); while((str[i]=getchar())!='#') i++; str[i]='\0'; i=0; char newstr[80]; int k=0,flag=0; if(str[i]=='-') { newstr[k++]=str[i++]; flag=1; //負數 } for( ;str[i]!='\0';i++) { if((str[i]>='0'&&str[i]<='9')||(str[i]>='A'&&str[i]<='F')||(str[i]>='a'&&str[i]<='f')) { newstr[k++]=str[i]; } } newstr[k]='\0'; printf("New string:"); for(i=0;newstr[i]!='\0';i++) putchar(newstr[i]); printf("\n"); long num=0; i=0; /* if(flag==0) { if(newstr[i]>='0'&&newstr[i]<='9') num=num*16+newstr[i]-'0'; else if(newstr[i]>='A'&&newstr[i]<='F') num=num*16+newstr[i]-'A'+10; else if(newstr[i]>='a'&&newstr[i]<='f') num=num*16+newstr[i]-'a'+10; i++; } */ if(flag) i++; for( ;newstr[i]!='\0';i++) { if(newstr[i]>='0'&&newstr[i]<='9') num=num*16+newstr[i]-'0'; else if(newstr[i]>='A'&&newstr[i]<='F') num=num*16+newstr[i]-'A'+10; else if(newstr[i]>='a'&&newstr[i]<='f') num=num*16+newstr[i]-'a'+10; } if(flag) num=-num; printf("Number=%ld\n",num); return 0; }