如何从单独的int值制作字符串

时间:2019-06-01 18:05:37

标签: c

我正在尝试使用3个元素组成一个字符串,其格式为“ 0/5”。

int start = 0; int finish = 5;

我尝试这样做:

    char string[20];

    string[0] = (char) start;
    string[1] = '/';
    string[2] = (char) finish;

    string[strlen(string)] = '\0';

但是当我打印时,我什么也没得到。

    char buffer[10];
    char aux[5] = {'/', '\0'}; 
    char aux2[5];
    sprintf(buffer, "%d", start);
    strcat(buffer, aux);
    sprintf(aux2, "%d", finish);
    strcat(buffer, aux2);

这是有效的,但是效率很低。

4 个答案:

答案 0 :(得分:3)

使用char打印printf时,将使用ASCII值。在这种情况下,您可以使用

string[0] = (char) (start + '0');
string[1] = '/';
string[2] = (char) (finish + '0');

或者您可以使用string[0] = (char) start + 48;。 ASCII值“ 0”为48。

或者将startfinish初始化为char start = '0'char finish = '5'

此外,请确保startfinish09之间。其他值,将给您带来意想不到的结果。

此外,最后一行应为string[3] = '\0'strlen的工作方式是迭代直到遇到\0,因此在这种情况下毫无用处。

Demo

答案 1 :(得分:0)

如果您的整数长于1位数字,那么也许您应该考虑使用类似sprintf()

char string[20];
int start = 13;
int finish = 21;

sprintf(string, "%d/%d", start, finish);

它的工作原理与printf()类似,但是它不会打印到控制台,而是打印到您提供给它的字符串。

答案 2 :(得分:0)

char *tosomething(char *buff, int start, int end)
{
    sprintf(buff, "%d/%d", start, end);
    return buff;
}

答案 3 :(得分:0)

只需用单个sprintf()替换最后四行,就可以提高发布代码的效率。

    char buffer[10];
    char aux[5] = {'/', '\0'}; 
    char aux2[5] = {'\0'};
    sprintf(buffer, "%d%s%d%s", start, aux, end, aux2);