首页 > 其他 > 详细

字符串相关操作————笔试内容之字符串操作

时间:2014-09-25 21:27:49      阅读:215      评论:0      收藏:0      [点我收藏+]

字符串操作第一个问题~~~~~~字符串与整数之间的转换


字符串与整数之间的转换需要考虑的一些问题:

1、空字符串""和只有一个正好或者负号的情况应该都考虑到。如“ + ”后面没有东西

2、同时正整数的最大值是 0X7FFF FFFF,最小的负整数是0x8000 0000,因此需要分为两种情况来分别判断整数是否发生上溢和下溢。


下面是个关于字符串转换成整数的操作代码:

#include<stdio.h>
#include<stdlib.h>

enum Status {kValid=0,kInvalid};
int g_nStatus = kValid;//利用全局变量来记录反馈回来的整数是否有效

long long StrToIntCore(const char* digit, int minus){
	long long num =0;
	while(*digit != '\0'){//如果没有读到末尾则继续循环
		if(*digit >='0' && *digit <='9'){
			int flag = minus ? -1 : 1;
			num = num * 10 + flag*(*digit - '0');//对于多位的字符串的操作如“123”这种字符串如何换成整数的操作

			if((!minus && num > 0x7FFFFFFF) ||
				(minus && num <(signed int ) 0x80000000)){
					num = 0;
					break;//如果移除则退出循环
			}
			digit++;
		}else{
			num =0;//如果不是数字则反馈回来的数字为0
			break;//退出while循环
		}
	}
	if(*digit == '\0'){
		g_nStatus = kValid;
	}
	return num;
}
int StrToInt(const char *str){
	g_nStatus = kInvalid;
	int minus=0;
	long long num = 0;
	if(str != NULL && *str !='\0'){
		if(*str =='+'){
			str ++;
		}else if(*str=='-'){//如果是符号
			str ++;
			minus = 1;
		}
		//对于+ - 符号后面为空的时候也进行的处理
		if(*str !='\0'){
			num = StrToIntCore(str,minus);
		}
	}
	return (int)num;
}



int main(){
	char * p;
	p ="123567";
	int m = StrToInt(p);
	printf("%d",m);
	system("pause");
	return 0;

}


字符串相关操作————笔试内容之字符串操作

原文:http://blog.csdn.net/zs2538596/article/details/39557925

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!