0

我不能使用 atoi,需要逐位执行。如何将其保存在 int 中。给定 char* temp 将其全部放在一个 int 中。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main () {

    char* temp = "798654564654564654";
    int i = 0;

    for (i = 0; i < strlen(temp); i++) {

        printf("%d", temp[i] - 48);

    }

    printf("\n");

}
4

2 回答 2

2

像这样:

int i = 0, j = 0;
while (temp[j])
    i = i*10 + temp[j++] - '0';

不过考虑到你的数量很大,所以换成i类型long long int比较合适。

于 2012-10-21T03:59:45.763 回答
1
#include<string.h>

int main() {    
   char* s = "798654564654564654";
   unsigned long long num = 0;    
   int i = 0, j = strlen(s);      
   for(i=0; i< j && s[i]>='0' && s[i]<='9'; i++)     
       num = num * 10 + s[i] - '0';    
   printf("%lld",num);    
   return 0;    
}

它应该工作,这是一个演示


编辑:这是一个优化的溶胶:

unsigned long long latoi(char * s) {
   unsigned long long num = 0;
   while(*s>='0' && *s<='9') num = num * 10 + *(s++) - '0';
   return num;
}

演示

于 2012-10-21T04:10:45.320 回答