1. 程式人生 > >7-8 字串轉換成十進位制整數

7-8 字串轉換成十進位制整數

//字串轉換成十進位制整數
#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;
}