你们能在c语言中把int变量转换成字符串吗?
可以从变量中输入整数吗,例如:你们能在c语言中把int变量转换成字符串吗?,c,arrays,string,variables,C,Arrays,String,Variables,可以从变量中输入整数吗,例如: int i=17; char array[]= i; 现在我想要 array[3]= {1,7,\0} 我知道它不是这样工作的,但是如果没有一些我不想使用的特殊功能,我不知道怎么做。谢谢你的帮助 这就是我想到的: char array[]; int counter = 172; //the number i want to put into string int i= 0; int p=0; float c = counter;
int i=17;
char array[]= i;
现在我想要
array[3]= {1,7,\0}
我知道它不是这样工作的,但是如果没有一些我不想使用的特殊功能,我不知道怎么做。谢谢你的帮助
这就是我想到的:
char array[];
int counter = 172; //the number i want to put into string
int i= 0;
int p=0;
float c = counter;
int k=0, g=0, h=0;
while(counter !=0){
counter = counter /10;
c= c/10;
p++;
}
while(p !=0){
c=c*10;
k=c;
h= k-g;
g=k*10;
array[i] = h;
i++;
p--;
}
array[i]= '\0';
使用sprintf(缓冲区,“%d”,i)代码>
确保缓冲区的长度足以包含任何可能的数字字符串和终止的\0
字节
sprintf
接受printf
所做的一切,但将其输出发送到字符串缓冲区而不是STDOUT。如果您确实不想使用sprintf,那么下面是一个示例代码片段
#define BASE 10
#define MAXLEN 10
int val = 153;
char valstr[MAXLEN];
//Reverse the int
int valcpy = val;
int valrev = 0;
while(valcpy) {
valrev *= BASE;
valrev += valcpy % BASE;
valcpy /= BASE;
}
//Convert to string
int i = 0;
while(valrev) {
valstr[i] = valrev % BASE + '0';
valrev /= BASE;
i++;
}
valstr[i] = '\0';
printf("%d = %s", val, valstr); //prints 153 = 153
是否可以不使用sprintf和log之类的函数?是的,您可以使用我在回答中建议的函数。不使用log10,您可以编写一个循环,将数字除以10,并计算循环运行的次数,直到数字变为0。但是,如何将所有已计算的数字隔离到一个字符数组中的索引中?我不应该使用任何库函数是我的问题。我想到了一个解决方案。你认为这是正确的吗?使用浮点数既过分,又容易出错。无论出于何种原因,您希望避免使用的那些“特殊函数”都会使用简单的%10来获取整数的位数。给定一个整数x,x%10是其最右边的数字。然后将其除以10(x/=10)以去掉该数字,然后得到下一个数字,以此类推。