将整数值存储在C中的字符数组中

这是一个非常微不足道的问题,但我不知道为什么我没有得到正确的输出。 这是我想要做的:

char sendBuffer[1000]; int count=0: while(count<10) { sendBuffer[0]=count; sendBuffer[1]='a'; sendBuffer[2]='b'; sendBuffer[3]='c'; sendBuffer[4]='\0'; printf(%s,sendBuffer); count=count+1; } 

在输出中,除第一个索引外,所有缓冲区都正确打印。 我希望在缓冲区的开头打印1,2,3等等,但它不起作用。 请帮忙

您需要将该数字转换为字符。 一个便宜的方法是:

 sendBuffer[0] = '0' + count; 

无论如何要显示大于9的整数

如果您需要,您将需要转向更精细的方案。 例如,如果要将整数42转换为字符串“42”,您可以说:

 #define ENOUGH ((CHAR_BIT * sizeof(int) - 1) / 3 + 2) char str[ENOUGH]; snprint(str, sizeof str, "%d", 42); 

ENOUGH信用去了caf 。

printf(%s,sendBuffer); 应该是printf("%s",sendBuffer);

更改

 sendBuffer[0]=count; 

 sendBuffer[0]='0' + count; 

即将整数0 … 9转换为字符’0’…’9′

另外添加一个引用即printf("%s",sendBuffer);

引自问题:

在输出中,除第一个索引外,所有缓冲区都正确打印。我希望1,2,3等在缓冲区的开头打印,但它不起作用。 请帮忙

我认为她的问题是她没有获得第一行的任何输出。 这是因为在第一次迭代中,count为0,即sendBuffer [0]为0,即’\ 0’字符。 因此字符串被视为空。

您正在尝试打印与十进制值0-9对应的ascii字符,这些字符是不可打印的字符。 如果需要打印十进制0-9,则将count初始化为48,即’0’的ascii十进制代码,并将while块中的条件更改为<58; 57是'9'的ascii deciaml代码。 见下文:

 char sendBuffer[1000]; int count=48: while(count<58) { sendBuffer[0]=count; sendBuffer[1]='a'; sendBuffer[2]='b'; sendBuffer[3]='c'; sendBuffer[4]='\0'; printf(%s,sendBuffer); count=count+1; } 

要将整数值转换为char表示,请添加字符“0”的值:

 sendBuffer[0]=count + '0'; 

请注意,字符为'0' ,而不是数字0.这是因为ascii值的工作原理。 文字值为0的char是\0 ,空终止符。 数字’0’的字面值为48,’1’49等等。

这适用于数字0-9。 显然,你不能在一个char中放置一个大于该数字的char表示。

 char sendBuffer[1000]; // take fixed stuff outside the loop sendBuffer[1]='a'; sendBuffer[2]='b'; sendBuffer[3]='c'; sendBuffer[4]='\0'; // it's best not to rely on order of ASCII values for(char* numbers="0123456789"; *numbers!=0; numbers++){// use for loop for numbers sendBuffer[0] = *numbers; printf("%s",sendBuffer); }