我正在尝试使用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);
这是有效的,但是效率很低。
答案 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。
或者将start
和finish
初始化为char start = '0'
,char finish = '5'
等
此外,请确保start
和finish
在0
和9
之间。其他值,将给您带来意想不到的结果。
此外,最后一行应为string[3] = '\0'
。 strlen
的工作方式是迭代直到遇到\0
,因此在这种情况下毫无用处。
答案 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);