2016-05-30 45 views
-1

转换印刷数量用printf作为变量

int main() 
{ 
    int x=69057; 
    int y=23 
    printf("%d", x); 
    printf("%d", y); 
    return 0; 
} 

而且它打印6905723.我如何转换印刷数量为整数?我不能这样做

int z=6905723 

因为在原始程序中我不知道x和y有什么值。

+0

你试过吗?如果是这样的结果。如果没有 - 给它一个 –

+1

'char buffer [SUFFICIENT_SIZE]; sprintf(buffer,“%d%d”,x,y); int number = strtol(buffer,NULL,0);'? – EOF

+2

你为什么要将打印输出转换成任何东西?只需对数字进行简单的算术运算即可。 –

回答

0

你基本上想要在这里做的是乘以10的最小功率大于y,然后将y添加到它。

假设x和y是足够小,不会溢出long结果,你可以做这样的事情:

int x = 69057; 
int y = 23 
int temp = y; 
long result = x; 
while (temp > 0) { 
    result *= 10; 
    temp /= 10; 
} 
result += y; 

printf("%ld\n", result); 
0

这里是你如何能得到答案为int z。即使您以前不知道xy,它也能正常工作。你只需要确保答案实际上符合int

int main() 
{ 
    int x=69057; 
    int y=23 
    char buff[512]; 
    sprintf(buff, "%d%d", x, y); 
    int z = atoi(buff); /* Now z is equal to 6905723 */ 
    return 0; 
} 

你会遇到一个问题,如果y是负数,但它不是从你的问题清楚你想在这种情况下要发生什么。

+0

我是新来的。为什么我被低估?我只是想帮助。 – sunwo

+0

我不知道,但你应该真的考虑避免atoi赞成strtol,因为哟你可以检查它是否失败。 https://stackoverflow.com/questions/17710018/why-shouldnt-i-use-atoi不要忘记,这里应该使用long类型来计算结果。 – 2501

-1

您可以编写一个函数来为你做它:

#include <stdio.h> 

int my_function(int x, int y); 

int main() 
{ 
    int x = 69057; 
    int y = 23; 
    int z = my_function(x, y); 
    printf("%d\n", z); 
    return 0; 
} 

int my_function(int x, int y) 
{ 
    int tmp = y; 
    do { 
     x *= 10; 
    } while (tmp /= 10); 
    return x + y; 
} 
0

尝试。非常容易和简单

#include <stdio.h> 
#include <conio.h> 
#include <math.h> 
int main() 
{ 
    int x,y,z,a,b; 
    x=69057; 
    y=23; 
    printf("x=%d y=%d\n",x,y); 
    a = log10(y) + 1; 
    for (b=0;b<a;b++) 
    { 
     x*=10; 
    } 
    z=x+y; 
    printf("z=%d",z); 
    return 0; 
}