Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56471
  • 博文数量: 29
  • 博客积分: 667
  • 博客等级: 上士
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-11 15:55
文章分类
文章存档

2012年(2)

2011年(27)

我的朋友
最近访客

分类: C/C++

2011-10-05 15:20:36

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. int myatoi(const char *s) {//字符串转换成整数
  5.     int i, sign, num;
  6.     for(i = 0; isspace(s[i]); i++);//跳过字符串前面的空格
  7.     
  8.     if (s[i] == '-')
  9.         sign = -1;
  10.     else
  11.         sign = 1;

  12.     if(s[i] == '-' || s[i] == '+') i++;//符号位

  13.     for(num = 0; isdigit(s[i]); i++) {//遇到非数字字符就结束循环
  14.         num = 10 * num + s[i] - '0';
  15.     }
  16.     return sign * num;
  17. }

  18. void reverse(char *s) {
  19.     char *p = s;
  20.     int len = 0;
  21.     while(*p++ != '\0') len++;
  22.     for(int i = 0, j = len-1; i <=j; i++, j--) {
  23.         s[i] = s[i] ^ s[j];
  24.         s[j] = s[i] ^ s[j];
  25.         s[i] = s[i] ^ s[j];
  26.     }
  27. }

  28. void myitoa(int num, char *s) {//整数置换成字符串
  29.     int sign = 1;
  30.     if(num < 0) {
  31.         num = -num;
  32.         sign = -1;
  33.     }

  34.     int i = 0;
  35.     do{
  36.         s[i++] = num % 10 + '0';
  37.         num /= 10;
  38.     }while(num > 0);

  39.     if(sign == -1)
  40.         s[i++] = '-';
  41.     s[i] = '\0';

  42.     reverse(s);

  43. }

  44. int main() {
  45.     char str[] = " -1234567a8";
  46.     int num = -1234567;

  47.     cout << myatoi(str) << endl;
  48.     myitoa(num, str);
  49.     cout << str << endl;

  50.     return 0;
  51. }
阅读(274) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~