【问题标题】:Can you put int variable into string in c?你可以将int变量放入c中的字符串吗?
【发布时间】:2019-12-04 20:59:39
【问题描述】:

你能不能从一个变量中取一个整数,例如:

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';

【问题讨论】:

  • 使用浮点数既矫枉过正又容易出错。无论出于何种原因,您想要避免的那些“特殊函数”使用简单的 %10 获取整数的数字。给定一个整数 x,x%10 是它的最右边的数字。然后将其除以 10 (x /= 10) 以去除该数字,并得到下一个数字,等等。

标签: c arrays string variables


【解决方案1】:

使用sprintf(buffer, "%d", i);

确保buffer 足够长以包含任何可能的数字字符串和终止\0 字节。

sprintf 接受 printf 所做的一切,但将其输出发送到字符串缓冲区而不是 STDOUT。

【讨论】:

  • 是否可以不使用 sprintf 和 log 之类的功能?
  • 是的,您可以使用我在回答中建议的功能。除了使用 log10,您可以编写一个循环,将数字除以 10 并计算循环运行了多少次,直到数字变为 0
  • 但是如何将所有计数的数字隔离到 char 数组中自己的索引中?
  • 我不应该使用任何库函数是我的问题
  • 我想到了一个解决方案。你觉得对吗?
【解决方案2】:

如果你真的不想使用 sprintf,那么这里有一个示例代码 sn-p 供你使用。

    #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

【讨论】:

    猜你喜欢
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2013-07-19
    • 2019-08-14
    相关资源
    最近更新 更多