分享

程序员面试攻略 5.6面试例题:整数/字符串之间的转换

 shaobin0604@163.com 2006-10-23

/************************************************************************
5.6面试例题:整数/字符串之间的转换
************************************************************************/
#include <stdio.h>
#include <stdlib.h>

#define MAX_DIGITS_INT 10

int strToInt(char str[]) {
 int neg = 0;
 int num = 0;
 int i = 0;
 if (str[0] == ‘-‘) {
  neg = 1;
  i++;
 }
 while (str[i] != ‘\0‘) {
  num *= 10;
  num += str[i] - ‘0‘;
  i++;
 }
 if (neg == 1) {
  num *= -1;
 }
 return num;
}

void intToStr(int num, char str[]) {
 int i = 0, j = 0, neg = 0;
 //buffer big enough for largest int, - sign and ‘\0‘
 char temp[MAX_DIGITS_INT + 2];
 
 if (num < 0) {
  neg = 1;
  num *= -1;
 }

 do {
  temp[i] = ‘0‘ + (num % 10);
  num /= 10;
  i++;
 } while(num != 0);

 if (neg == 1) {
  temp[i] = ‘-‘;
  i++;
 }

 i--;
 
 while (i >= 0) {
  str[j++] = temp[i--];
 }

 str[j] = ‘\0‘;
}

int main() {
 //printf("%d", strToInt("-0"));
 char str[MAX_DIGITS_INT];
 intToStr(-123, str);
 printf("%s", str);
 return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多