Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你们能在c语言中把int变量转换成字符串吗?_C_Arrays_String_Variables - Fatal编程技术网

你们能在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)以去掉该数字,然后得到下一个数字,以此类推。