C语言-实现过滤字符串中的字符并拷贝至新的字符串

#include<stdio.h>
#include<string.h>

int hex_to_oct(char str[]){

}

int main(){
	printf("请输入十六进制字符串:");
	char x[80]={0}; 
	char s[80]={0};
	scanf("%s",x);
	char *sour=x;
	char *dest=s;
	while(*sour)
	{
		if((*sour >= '0' && *sour <= '9') || (*sour >= 'A' && *sour <= 'F') || (*sour >= 'a' && *sour <= 'f')){
			*dest=*sour;
			dest++;
			
		}
		sour++;

		

	}
	*(dest+1)='\0';
	int a;
	sscanf(s,"%x",&a);
	printf("十六进制串%s的值=十进制%d",s,a);
	
}

1.需要用到的变量及函数

sscanf(char *dest char* format,....)

https://www.cnblogs.com/lewischen/articles/14526477.html中已经提到

这里的套路是可以将16进制转换为10进制,十,十六,八均可互转

char *c="AC45";

int a;

int p=&a;

sscanf(c,"%x",p);

此时a中所存的值即是c的10进制表达

 

2.重要思路

这里用两个指针分别指向原字符串和目标字符串

原字符串指针在每次循环中指针首地址都增加1

而目标字符串指针只在符合条件的情况下做出操作后再将首地址加1

 

posted @ 2021-04-11 20:11  C-Equity  阅读(425)  评论(0)    收藏  举报